軟件開發(fā)中沒有所謂正確的方法
驅(qū)動測試開發(fā)(TDD)是唯一能讓你寫出沒有bug的程序的方法。只有結(jié)對編程是可行的。我們之所以成功就是因?yàn)槲覀兪褂玫氖沁h(yuǎn)程開發(fā)人員。等等等等……
像這樣的話每天我都能看見。
像這樣的風(fēng)言風(fēng)語十分能蠱惑人心,它愚弄我們,讓我們認(rèn)為這就是我們不能遇到阿拉丁的那個茶壺里的精靈的唯一原因。最終,這些人所寫的會讓你也這么認(rèn)為。
如果你隨機(jī)找100個程序員,問他們“開始一個新項(xiàng)目前首先想到的技術(shù)方案上什么?”相信你會得到100種不同的回答。
那么,為什么有這么多的人看起來堅信自己的方法才是唯一可行的?
在我看來,這答案既十分的簡單,又十分的復(fù)雜。說簡單,是因?yàn)橛行┤司褪窍矚g說。說復(fù)雜,是因?yàn)檐浖I(yè)實(shí)際上是一系列亞文化的聚合,它們不斷相互對抗來保衛(wèi)自己的職業(yè)安全。我知道,這話有多重含義。
我之所以會談?wù)撨@些,全是因?yàn)樽蛲碜x到了Chris Sturgill的一篇文章,是關(guān)于測試以及它們?nèi)绾伪贿^度吹捧。文章提到的所有觀點(diǎn)都有理有據(jù),令人信服。
但這篇文章后面跟隨的評論描述的卻是一副完全不一樣的景象。如果你不看文章只讀評論,你會以為Chris腦子進(jìn)水了或出來什么其它事。他怎么敢質(zhì)疑TDD?他怎么膽敢質(zhì)疑測試驅(qū)動文化的有效性?
看了這些評論后,我感覺有一股力量在逼迫我去寫點(diǎn)什么。但我的這篇文章絕對不是來討論什么TDD的。我想討論的是如果成為一名優(yōu)秀的軟件開發(fā)人員。
讓我們進(jìn)入正題。
軟件開發(fā)中沒有所謂“正確”的方法。我重申:軟件開發(fā)中沒有所謂“正確”的方法。編程界里有些人喜歡搞圖騰崇拜,他們拒絕接受這樣的事實(shí)。他們執(zhí)著于幾小時前剛學(xué)到的一些誘人的新出現(xiàn)的熱門技術(shù),他們認(rèn)為這是能讓工作做好、能開發(fā)出可信賴的軟件的唯一辦法。
我很抱歉讓你們失望。這些新出現(xiàn)的熱門技術(shù)很可能并不新。很可能只是一些曾經(jīng)流行的技術(shù)的新的市場炒作。從另一方面講,你拋棄以前學(xué)到的所有東西,你改變以前的所有做法,你全面擁抱你學(xué)到的這個新的“唯一”的方法。事情不是這樣的。別這么做。
做一個優(yōu)秀的程序員就意味著你要學(xué)會妥協(xié)折中。這意味在A項(xiàng)目是你需要使用一種技術(shù)方案而在B項(xiàng)目上你需要使用另外一種。這意味這你需要在你的思路和老板/客戶的要求之間做平衡。很多時候事情并不能做到雙方達(dá)成統(tǒng)一,但這并不意味著你該懊惱、痛斥為什么不按你的思路去做。
真正重要的是,秉持自己的觀點(diǎn),但柔軟的應(yīng)用。
只有這樣,你才能走的更遠(yuǎn)。
英文原文:There is No Right Way to Develop Software
譯文連接:http://www.aqee.net/there-is-no-right-way-to-develop-software/