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