我呆了幾個公司,發現一個有趣的問題。當B程序員接手A程序員編寫的程序後,該程序在運行過程或測試過程當中出現問題或瑕疵,那麼B程序員第一想法不是去重構程序,而是推翻重來,特別是規模不太大的軟件或程序。A程序員是程序的初步開發者,任何一個程序的第一個開發者老是不容易的,特別是小程序,小程序每每須要程序員本身去作需求收集、設計編碼、測試驗證的所有工做。因此在前期開發完成後,總會遇到一些問題。軟件的成型並非一步到位的,須要一個反覆試錯,發現問題和解決問題的過程,測試團隊存在的意義就在於採用專業的手段幫助開發團隊發現錯誤。當B程序員接手後,在一個既有的產品上發現瑕疵是十分容易的。牛B如微軟開發的Office軟件,消費者也很容易挑出一些問題或新的需求來,何況,有些人在沒有深刻了解過Word的強大以前,每每會吐槽Word太複雜或執行效率低等等,其實我只須要一個Notepad而已!若是這我的恰好是程序員,他每每會本身動手,按照他的想法去打造他的Notepad。Office也在一年一年的更新(是在原有的基礎上更新,不是重來。)。
B程序員發現問題後,每每會埋怨他的前任寫的代碼不行,有推翻重來的衝動。能重用的代碼塊則重用之,能優化的代碼則優化一下。再把本身的想法加上去,再推出一個版本。而後牛B叉叉的對領導說,上個版本是垃圾,我把它從新開發了。等到下一個程序員C來接手該軟件時,又開始了重複上一過程……浪費的是公司的人力資源,獲得好處的是程序員B。後面接手的程序員B既能夠學習前人在該軟件開發中的一些技術技巧,又能吸收經驗教訓,把產品從新開發一遍,而後當成本身的功績。
這樣作無疑很傷A程序員的心,A程序員全力以赴的把軟件作到那一步可能也是不容易的,B程序員每每由於一些很小的問題,全盤否認A程序員的勞動成果。嚴重挫傷A程序員的積極性。
說到浪費公司的資源,在軟件公司,每每是資深程序員做爲團隊的Leader,若是A、B都是那個團隊的Leader,那麼該團隊一遍又一遍的在重複着作一些事情。
許多時候,B程序員開發的新版本還不如A程序員開發的版本,致使這樣的因素便可能是B沒搞懂會忽略原程序中的一些技術細節或業務細節。但由於B程序員的面子問題,會強推本身的版本,傷害的用戶的體驗和公司的品牌。程序員
程序員,真是個奇怪的動物!小程序