入行也幾年了,回首這幾年的經歷。發現沒有一個項目能夠讓人滿意,不是Bug滿天飛就是延期。到底為什么呢?客戶太刁蠻?管理問題?技術問題?還是? 拋開其他因素,聊聊我們開發人員的問題。
先從目前的項目談起,現在我在項目是在以往代碼上開發新的應用,好多代碼是01年左右寫的,日后不斷的添加新功能,目前源代碼有200M左右。看看代碼,上千行的方法不計其數,也佩服印度阿三把代碼寫成這樣還能保證業務正確,尤其還是銀行相關的。雖然方法很長,不過Log 確實很詳細,基本可以通過Log 定位那里有問題。而對于目前開發,難道還有繼續寫成千上萬行的方法嗎?
目前JEEWeb應用,不論是規范的EJB+JSF 還是開源的Hiberante Spring struts,都是分層的架構,應該從架構上沒有問題,看了看公司另外項目的代碼,雖然已經上09年了,也應用了JSF Spring hiberante 等很完善架構,為什么還是不能讓客戶,發人員滿意呢?追根究底,軟件其實就是一行一行代碼實現的,所以本質還是代碼出問題了!!
現在有前人總結的設計模式,OO設計思想,以及優秀的UML工具,很好的領悟這些東西,應該可以保證我們的設計沒有問題,而Spring Hiberante 等優秀的工具,在軟件架構上也應該沒有問題。所以問題還是我們的Code。打開我們的Code,誰能拍著胸口說我們的代碼沒有任何沒有拷貝張貼?誰能保證說我們的代碼具有很好的可維護性呢?往往會有很多理由,比如工期太緊,沒時間重構或者都是遺留代碼沒有辦法重構。而最好的結局呢,代碼越來越難維護,Bug多的QA都失去了信心,而我們開發人員越來越沒有底氣了,項目也一度延期或被取消。
設計能力解決問題能力以及職業素養是我們開發人員的核心競爭力,而這些能力就是在不斷優化我們的領域模型,以及不斷編寫優秀的代碼中慢慢提高的,不是看幾本設計方面架構的方面的書就Ok的。正如Clear Code作者說比喻的,軟件開發人員就是匠人,你寫的每行代碼就是你的產出,你的作品。
其實我們大多數人其實都知道這些道理,但其實都習慣了,不想改進而已。這就是問題所在!! 沒辦法,那就從流程上控制,敏捷開發想從流程上來避免這些問題,首先測試優先,使我們不得不前期設計可以測試的領域模型,結對編程讓另外一個人檢查你的代碼,讓你不能隨意聊天看網頁,提高效率,培養職業修養。而實際應用呢,好多公司老板感覺兩個人用一個電腦不是效率很低, 一個人不是閑人嗎?所以結對被取消了,工期一緊,測試取消了。所謂敏捷開發基本是掛牛頭賣狗肉。
所以,還是從我們自身來解決問題,首先多看看前人的經驗總結,比如OO設計思想,在設計中,通過各種方式在設計上減低代碼耦合度。在編寫代碼上,遵循成熟的代碼規范以及不斷的重構代碼,減少代碼中臭味。
總之,既然從事了這個行業,就要熱愛這個行業,牢記在心的就是:我們的每一行代碼就是我們的產品!保證我們每一行代碼都是高質量的,優秀的!