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