軟件“夠用”就行了嗎?

字號(hào):

很多程序員接觸Java基本是從Jsp開(kāi)始,象使用PHP那樣使用Jsp,覺(jué)得這樣夠用就可以了,真的這樣做就可以了?
    一些有編程經(jīng)驗(yàn)的老程序員一直在懷疑:軟件到底是否可以重用?他們認(rèn)為實(shí)現(xiàn)重用會(huì)將軟件搞的復(fù)雜,走向另外一個(gè)極端,反而過(guò)猶不及,所以認(rèn)為軟件“夠用”就可以,這種原始樸素思想曾經(jīng)在CSDN程序員網(wǎng)站大行其道。
    我覺(jué)得這種“夠用”的思想“誤導(dǎo)”了大批初學(xué)者,導(dǎo)致整個(gè)軟件系統(tǒng)的質(zhì)量下降,這是對(duì)自己要求的降低換來(lái)了項(xiàng)目的快速進(jìn)度,目前中國(guó)軟件業(yè)在風(fēng)雨中飄搖與這種思想不無(wú)關(guān)系。
    正因?yàn)橛辛恕皦蛴谩钡乃枷?,他們質(zhì)疑Java的復(fù)雜性,質(zhì)疑多層結(jié)構(gòu),質(zhì)疑框架,質(zhì)疑面向接口的編程方式,質(zhì)疑AOP等新的技術(shù)思想,他們認(rèn)為這些是“自找麻煩”。
    很多人認(rèn)為,為了追求靈活性,將簡(jiǎn)單系統(tǒng)搞得復(fù)雜化是沒(méi)有必要的,他們認(rèn)為靈活性和簡(jiǎn)單性是矛盾的,其實(shí)他們只看到了問(wèn)題的一個(gè)方面。
    正好相反,靈活性和簡(jiǎn)單性是不矛盾的,認(rèn)為矛盾的人是因?yàn)樗麄冞€沒(méi)有抓住問(wèn)題的本質(zhì),問(wèn)題本質(zhì)抓住,就非常簡(jiǎn)單,也就具備相當(dāng)?shù)撵`活性,正所謂大道至簡(jiǎn)。
    做軟件我覺(jué)得千萬(wàn)不能有“夠用”的思想,而是要有“變化”的思想,經(jīng)常問(wèn)自己,我這樣做的前提限制條件是什么,如果需求變化了,正好擊中我這樣做的前提限制條件怎么辦。
    程序員一定要有“計(jì)劃沒(méi)有變化快”的思想,樹(shù)立需求第一,沒(méi)有不變的需求的思想,我認(rèn)為這是作為一個(gè)程序員的基本素質(zhì),如果我招聘程序員,我不會(huì)出試卷考他有多少技能,這些以后都可以學(xué)會(huì),我會(huì)考他的做程序的思想,這真是世界觀的問(wèn)題,世界觀錯(cuò)誤,基本方向就不對(duì),再高技能也是空的。
    所以,從這個(gè)角度來(lái)看,現(xiàn)在軟件技術(shù)為什么強(qiáng)調(diào)復(fù)用,為什么要有框架?為什么要面向接口?這些好像是“自找麻煩”?
    這些“自找麻煩”概念的推出正是幫助程序員應(yīng)付不斷變化的需求。
    因?yàn)樾枨笞兓?,程序員不可能來(lái)一個(gè)需求就重新建一個(gè)系統(tǒng)或程序,如果我們?cè)噲D在這些程序找出不變的東西,固化抽象成框架之類東西,那么需求變化時(shí),我們只要在這個(gè)框架下根據(jù)具體變化的新需求開(kāi)發(fā)少量的新的程序就可以了。這不是減輕程序員工作量?
    換言之,這些看似復(fù)雜的概念能幫助程序員更快跟隨需求變化,這才是軟件程序員的本分啊。
    上述道理我已經(jīng)說(shuō)了很多,也有人反駁過(guò),不過(guò)我現(xiàn)在的實(shí)踐確實(shí)是這么做的,如我的JdonSD框架已經(jīng)在OA、電子商務(wù)等系統(tǒng)不斷反復(fù)重用,提高了開(kāi)發(fā)效率,同時(shí)也提高了系統(tǒng)質(zhì)量,這才是真正地快速地提高了項(xiàng)目的進(jìn)度。
    建議初學(xué)者多多學(xué)習(xí)有關(guān)可復(fù)用軟件技術(shù)以及重整Refactoring、模式和框架等理論,將自己武裝得更加強(qiáng)大,提高自己的專業(yè)素質(zhì),使自己更加專業(yè)化。
    讓那些對(duì)軟件復(fù)用的的懷疑者、“夠用”的實(shí)用主義者隨著大江東流去吧!