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