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