不止一次我們的項目在靠開發人員硬扛著,bug來不及修改,文檔還在猛補,項目經理又在催著出版本,每修改一個bug都要在代碼的泥沼中摸爬滾打半天,卻又在制造著另外的bug,為了文檔而制造著根本沒有參考價值的文檔。每發布一個版本都要瞻前顧后并且總要無休止的加班,似乎開發人員永遠有干不完的活。
我們不禁問自己,為什么會有那么多失敗的軟件,軟件開發我們到底還需要什么?
工具?我們不乏偉大的工具,IDE我們有eclipse、intelliJ、VC++等等,建模我們有Rose、together、Visio等等,配置管理我們Subversion、CVS、ClearCase等等,bug管理我們有ClearQuest、bugzilla等等,文檔我們word、wps等,還有集成、測試甚至生成代碼等等我們都有偉大的工具,工具我們不缺。流程?瀑布模型、迭代模型、UP、XP我們不缺流程管理的理論。知識?軟件開發算是一項知識型的工作,我們的開發人員一般都是本科碩士畢業,況且搜索引擎如此發達的今天,知識根本不是問題,況且我們的軟件開發需要多么高深的知識嗎?
優秀的理論支持、有能力的人員、先進的工具,這些我們都具備,我們所缺的只是一種軟件開發的理念,缺少軟件開發的情商。我們一開始學習編程知識接觸到的就是C語言和數據結構,慢慢的一些結構化的思想就扎根于大腦,其實在商業軟件中數據結構、算法很少涉及,我們所需要的僅僅是一種設計、開發的理念。比如用面向對象本來是一種簡單的思想,目的是為了降低軟件的復雜性而出現的,可是讓熟悉了結構化編程的人去搞反而覺得很難。一些好的實踐經驗我們也經常提到,比如模塊化、松散耦合、面向接口編程、類應只關注本職工作等等開發設計理念以及規范命名、詳盡使用的注釋、清晰的結構等代碼規范以及每日構建、有效溝通、配置管理、bug管理等一些管理理念,這些做起來都非常容易,關鍵是懶惰是人的本性,不知不覺中我們就會犯著大家都在重復的錯誤。如果在項目開工之初就充分貫徹這些優秀的理念,在項目進行中無論時間多緊都持之以恒,并且項目進行中不斷的反思代碼中的壞味道,一經發現立即重構,相信我們的開發過程會進入一個良性的循環中去,我們的開發人員將會體會到什么是快樂開發。