兩條路
新開發(fā)一個(gè)系統(tǒng),和維護(hù)一個(gè)比較大的老系統(tǒng),那個(gè)比較舒服?
不工作就拿錢是最舒服的,我不講這個(gè)不現(xiàn)實(shí)的;在一個(gè)老系統(tǒng)上做二次開發(fā),常常更痛苦,所以常見一些人推翻重來(lái)。
推翻重來(lái)的理由是,所花時(shí)間更少;但這些人從來(lái)都不考慮風(fēng)險(xiǎn),如果你理解錯(cuò)老的業(yè)務(wù)流程,帶來(lái)的可能是新的大問(wèn)題。
推翻重來(lái),體現(xiàn)出一個(gè)程序員的重構(gòu)水平,他沒(méi)法控制別人的代碼了,也可能體現(xiàn)這個(gè)人跟人交流問(wèn)題。
我常常反對(duì)推翻重來(lái),除非萬(wàn)不得已,因?yàn)榉彩露加欣狻?br /> 所以,當(dāng)往一個(gè)比較大的老系統(tǒng),添加一些新功能時(shí),出現(xiàn)兩條路,出現(xiàn)兩類程序員。
那么,如果堵住推翻重來(lái)這條路,逼迫我們面對(duì)老系統(tǒng),情況又怎么樣?
5年以上的系統(tǒng),多多少少總形成基本工具庫(kù)和業(yè)務(wù)工具庫(kù),如果公司不逼迫新來(lái)同事去學(xué)習(xí)去使用的話,又形成兩條路。
一類人是只管寫自己的新代碼,要一個(gè)工具類或函數(shù),書上或系統(tǒng)api(如c標(biāo)準(zhǔn)庫(kù)\stl\boost\ java jdk等等)不能滿足他的話,他就要重新造輪子了,他絕對(duì)不看已有代碼里是否已經(jīng)實(shí)現(xiàn)或類似實(shí)現(xiàn)。他對(duì)comm\util\commutil等等從名字都可以看出的目錄或包,視而不見。
另一類人,他們很勤奮,常常看看周圍是否有可利用的資源,能利用則利用,他們?nèi)プx周圍的代碼,了解已有業(yè)務(wù)流程,一年半載后,對(duì)系統(tǒng)越來(lái)越熟悉。
一年半載后,誰(shuí)速度快,誰(shuí)更輕松,誰(shuí)理解業(yè)務(wù)更深刻,誰(shuí)重構(gòu)更快更好?
結(jié)果不言自明。
有因必有果,有果必有因。