似乎作為一個軟件開發(fā)者,就注定要背著沉重的行囊,穿行在茂密的熱帶叢林里,酷熱,沒有風(fēng),只有腐爛的植被、濃濃的瘴氣、不時從肩膀上爬過的毒蜘蛛和從腳背上“嗖”地竄過的毒蛇。汗流浹背,疲憊不堪,卻不能休息片刻——因為這是一個軟件開發(fā)的混亂的時代!
充分的前期需求分析?嚴(yán)格的開發(fā)流程控制?嚴(yán)密的后期測試?這些都做到了啊,可是為什么軟件還是有bug?特別是用戶頻繁地提出新的要求,軟件要不斷地修改,每一次修改都膽戰(zhàn)心驚幾近崩潰,這到底是為什么?神啊,到底要怎么做才能獲得好的軟件設(shè)計???
人們一直都沒有停止思考如何能夠獲得好的軟件設(shè)計。軟件工程風(fēng)行了幾十年,“沒有銀彈”的咒語還沒有解除。人們不禁要拋棄所有的“軟件工程”帶來的規(guī)制,回到軟件開發(fā)的源頭尋找答案。如下就是筆者看到的火燒云的形狀,像貓像虎任憑端詳。
1、要有技藝高超的開發(fā)者
軟件是人的思維活動的產(chǎn)物,軟件開發(fā)首先需要的是人的創(chuàng)造性。就如同其他一切人類創(chuàng)作一樣,人是占據(jù)核心地位的。恐怕再過一百年,也沒有哪個自動化的工序可以代替金庸先生的妙筆寫出《笑傲江湖》這樣經(jīng)典的小說。所以,當(dāng)前軟件工程企圖用其眼花繚亂的流程控制來達(dá)到“軟件工廠”的目的,是方向性的錯誤。人,只有人,技藝高超的開發(fā)者,才是產(chǎn)生好的軟件設(shè)計的核心因素。
技藝高超的開發(fā)者,應(yīng)當(dāng)有豐富的軟件開發(fā)經(jīng)驗。有了豐富的軟件開發(fā)經(jīng)驗,才會培養(yǎng)出對軟件設(shè)計中的各種“壞味道”的敏銳的嗅覺,才能熟練地繞過軟,技藝高超的開發(fā)者,應(yīng)當(dāng)有專業(yè)的領(lǐng)域知識。軟件總是服務(wù)于某一領(lǐng)域的應(yīng)用,各個領(lǐng)域的專業(yè)特性不同,使得軟件開發(fā)也產(chǎn)生了許多分支。從事某一專業(yè)領(lǐng)域的軟件開發(fā),必然要對該領(lǐng)域的專業(yè)知識有深入的了解,才能在軟件設(shè)計中正確地把握對概念的抽象。隨著軟件的復(fù)雜性的轉(zhuǎn)移,領(lǐng)域建模越來越受到重視。在此強烈推薦《領(lǐng)域驅(qū)動設(shè)計——軟件核心復(fù)雜性應(yīng)對之道》(Eric Evans著,陳大峰等譯,清華大學(xué)出版社出版)一書。
技藝高超的開發(fā)者,應(yīng)當(dāng)有求真務(wù)實的技術(shù)作風(fēng)。在這個浮躁、虛華、官僚化的社會里,“求真務(wù)實”顯得太可貴!這也是對開發(fā)者提出的很高的要求。求真務(wù)實的技術(shù)作風(fēng),就要求開發(fā)者不要盲從技術(shù)風(fēng)潮,軟件開發(fā)的技術(shù)發(fā)展飛快,也產(chǎn)生了不同技術(shù)流派,各個流派都想擴大自己的影響,這時候就需要開發(fā)者自己去識破各種幌子,吸收真正對軟件開發(fā)有所助益的好方法;求真務(wù)實的技術(shù)作風(fēng),還要求開發(fā)者實事求是地看待各種非技術(shù)機制對軟件開發(fā)的影響,看看這些機制是否對軟件設(shè)計質(zhì)量的提高有幫助,有則批判地采納,無則無情地拋棄,不要抱有“這個流程是某某認(rèn)證所必須的,且其他很多公司都這樣做了,所以它一定有它的道理”的想法,這些目前看不到好處的東西,不要指望將來給你帶來什么好處;求真務(wù)實的技術(shù)作風(fēng),更要求開發(fā)者拋棄官僚主義作風(fēng)和自大的姿態(tài),在技術(shù)面前人人平等,以開闊的胸襟對待不同技術(shù)觀點和反對者,友好地同其他人合作,以把軟件設(shè)計做好為要旨。
技藝高超的開發(fā)者的成長需要長期的磨練,代價很大。且人的因素確實是一個很不確定(流動性很大)的因素,軟件工程減少不確定因素的初衷是好的,但是人的地位畢竟不可替代。“軟件藍(lán)領(lǐng)”是又一個軟件工程產(chǎn)生的畸形兒,軟件工程宣稱,只要幾個月的短期訓(xùn)練,就可以勝任軟件開發(fā)的工作。真是可悲!
充分的前期需求分析?嚴(yán)格的開發(fā)流程控制?嚴(yán)密的后期測試?這些都做到了啊,可是為什么軟件還是有bug?特別是用戶頻繁地提出新的要求,軟件要不斷地修改,每一次修改都膽戰(zhàn)心驚幾近崩潰,這到底是為什么?神啊,到底要怎么做才能獲得好的軟件設(shè)計???
人們一直都沒有停止思考如何能夠獲得好的軟件設(shè)計。軟件工程風(fēng)行了幾十年,“沒有銀彈”的咒語還沒有解除。人們不禁要拋棄所有的“軟件工程”帶來的規(guī)制,回到軟件開發(fā)的源頭尋找答案。如下就是筆者看到的火燒云的形狀,像貓像虎任憑端詳。
1、要有技藝高超的開發(fā)者
軟件是人的思維活動的產(chǎn)物,軟件開發(fā)首先需要的是人的創(chuàng)造性。就如同其他一切人類創(chuàng)作一樣,人是占據(jù)核心地位的。恐怕再過一百年,也沒有哪個自動化的工序可以代替金庸先生的妙筆寫出《笑傲江湖》這樣經(jīng)典的小說。所以,當(dāng)前軟件工程企圖用其眼花繚亂的流程控制來達(dá)到“軟件工廠”的目的,是方向性的錯誤。人,只有人,技藝高超的開發(fā)者,才是產(chǎn)生好的軟件設(shè)計的核心因素。
技藝高超的開發(fā)者,應(yīng)當(dāng)有豐富的軟件開發(fā)經(jīng)驗。有了豐富的軟件開發(fā)經(jīng)驗,才會培養(yǎng)出對軟件設(shè)計中的各種“壞味道”的敏銳的嗅覺,才能熟練地繞過軟,技藝高超的開發(fā)者,應(yīng)當(dāng)有專業(yè)的領(lǐng)域知識。軟件總是服務(wù)于某一領(lǐng)域的應(yīng)用,各個領(lǐng)域的專業(yè)特性不同,使得軟件開發(fā)也產(chǎn)生了許多分支。從事某一專業(yè)領(lǐng)域的軟件開發(fā),必然要對該領(lǐng)域的專業(yè)知識有深入的了解,才能在軟件設(shè)計中正確地把握對概念的抽象。隨著軟件的復(fù)雜性的轉(zhuǎn)移,領(lǐng)域建模越來越受到重視。在此強烈推薦《領(lǐng)域驅(qū)動設(shè)計——軟件核心復(fù)雜性應(yīng)對之道》(Eric Evans著,陳大峰等譯,清華大學(xué)出版社出版)一書。
技藝高超的開發(fā)者,應(yīng)當(dāng)有求真務(wù)實的技術(shù)作風(fēng)。在這個浮躁、虛華、官僚化的社會里,“求真務(wù)實”顯得太可貴!這也是對開發(fā)者提出的很高的要求。求真務(wù)實的技術(shù)作風(fēng),就要求開發(fā)者不要盲從技術(shù)風(fēng)潮,軟件開發(fā)的技術(shù)發(fā)展飛快,也產(chǎn)生了不同技術(shù)流派,各個流派都想擴大自己的影響,這時候就需要開發(fā)者自己去識破各種幌子,吸收真正對軟件開發(fā)有所助益的好方法;求真務(wù)實的技術(shù)作風(fēng),還要求開發(fā)者實事求是地看待各種非技術(shù)機制對軟件開發(fā)的影響,看看這些機制是否對軟件設(shè)計質(zhì)量的提高有幫助,有則批判地采納,無則無情地拋棄,不要抱有“這個流程是某某認(rèn)證所必須的,且其他很多公司都這樣做了,所以它一定有它的道理”的想法,這些目前看不到好處的東西,不要指望將來給你帶來什么好處;求真務(wù)實的技術(shù)作風(fēng),更要求開發(fā)者拋棄官僚主義作風(fēng)和自大的姿態(tài),在技術(shù)面前人人平等,以開闊的胸襟對待不同技術(shù)觀點和反對者,友好地同其他人合作,以把軟件設(shè)計做好為要旨。
技藝高超的開發(fā)者的成長需要長期的磨練,代價很大。且人的因素確實是一個很不確定(流動性很大)的因素,軟件工程減少不確定因素的初衷是好的,但是人的地位畢竟不可替代。“軟件藍(lán)領(lǐng)”是又一個軟件工程產(chǎn)生的畸形兒,軟件工程宣稱,只要幾個月的短期訓(xùn)練,就可以勝任軟件開發(fā)的工作。真是可悲!