多少年來,人們普遍有一種看法,認(rèn)為軟件工程應(yīng)該和其它種類的工程一樣:仔細(xì)的設(shè)計,精確的規(guī)劃,然后進(jìn)行開發(fā) —— 嚴(yán)格按照設(shè)計說明書。就像修建一座橋梁,不是嗎?這種開發(fā)方式的問題在于:軟件,它是“軟”的。它可以無限的延展。任何需要的時候你都可以大幅度的修改你的軟件,人們也都是這么干的。
還有,因為軟件可以被拿來對任何事物進(jìn)行模型造型,你能要求軟件開發(fā)人員去實現(xiàn)的可能的東西幾乎是無窮無盡。想要在軟件里模擬集成電路嗎?干吧。想管理銀行?沒問題。讓五億人和他們的朋友保持聯(lián)系?為什么不呢?小菜一碟。不僅如此,在開發(fā)的中途我們還能要求程序員去做各種修改,這種事情經(jīng)常的以一種不可預(yù)期的形式出現(xiàn)。
這可不是像修橋那樣。
由于漠視這種需求不斷變化的現(xiàn)實,多年來,無數(shù)的項目要么慘遭失敗,要么巨額超出預(yù)算。所以,在各種證據(jù)面前,整個行業(yè)為什么還要堅守這種錯誤的認(rèn)識?很難說為什么。不過,最終,行業(yè)里開始出現(xiàn)一種新的認(rèn)識:軟件開發(fā)工作應(yīng)該更好的響應(yīng)需求的變化。事實上,為了適應(yīng)這種需求上的變化,我們應(yīng)該改進(jìn)軟件開發(fā)過程。沒有比如今的web創(chuàng)業(yè)開發(fā)社區(qū)更歡迎這種趨勢的了。所謂的敏捷開發(fā)方法已經(jīng)開始流行,“l(fā)ean start-up”運動號召對運行中的系統(tǒng)進(jìn)行自動的或依據(jù)經(jīng)驗的超常快速變更響應(yīng)。
所以,我們都是好樣的,不是嗎?雖然行動的不是那么快。盡管有越來越多的敏捷開發(fā)方法被人們接受,仍然有大量的傳統(tǒng)錯誤認(rèn)識游蕩在我們周圍…這些認(rèn)識大部分都該丟到腦后。
1. 誤解:你應(yīng)該招聘一些“日本忍者”式的程序員。
對編程超人的迷信是硅谷創(chuàng)業(yè)公司中最普遍的一種病癥:一個孤僻的程序員,以匹薩和咖啡因為能量,頭戴耳麥,通宵不倦的開發(fā)一個復(fù)雜的系統(tǒng),所有的東西都自己一個人來干。時過境遷了。軟件開發(fā)已經(jīng)發(fā)展成一種團(tuán)體運動。所有的創(chuàng)業(yè)公司只要獲得了任何有意義的成功,都會成長起來。一個編程獨俠客能夠勝任的情況放到一個10人的公司里后就不可行了。而且,更糟糕的是,鼓勵逞英雄的行為會在開發(fā)團(tuán)隊里產(chǎn)生腐蝕性的機能障礙。始終如一的朝九晚五、日復(fù)一日編寫出公司賴以生存的穩(wěn)固功能代碼的程序員,輸給了能以通宵加班(通常只是一晚)來期望獲得慷慨的褒獎的精明極端利己主義者。與其獎勵這種英雄,不如培養(yǎng)出真正具有團(tuán)隊精神的員工。
2. 誤解: 程序員需要安靜的工作,避免打攪。
讓人們獨自的干活,這個聽起來很有道理。每一次的打擾都是切實的中斷你的思緒,而且你需要花很久才能重新找回那種“狀態(tài)”。有些著名的軟件公司甚至堅持要為每個程序員安排獨立的辦公室。他們這樣就不會被打攪了,是嗎?除非現(xiàn)代新形式的干擾并不會像一個真人拍你的肩頭時引起你的分心,比如即時聊天工具,移動手機,F(xiàn)acebook,Twitter,電子郵件,以及從程序員頭上戴的耳麥里傳出的用于幫助集中精神的音樂,F(xiàn)實情況是,大多數(shù)的獨自工作的程序員每天只花一小段時間用于真正的編程:各種形式的干擾事情層出不窮,整天他們都在進(jìn)入狀態(tài)和失去狀態(tài)的循環(huán)中來來回回。然而,有個辦法能解決這個問題:結(jié)對編程。兩個程序員,一臺電腦。沒有Email,沒有Twitter,沒有手機電話(至少沒有無計劃的電話;你可以在有規(guī)律的間隔休息時間里處理這些事情)。如果按照這樣做,你會收獲一個完全編程的一天。而且,和他人一起工作,“進(jìn)入狀態(tài)”的過程幾乎完全不費時間。這是一種完全不同的工作方式,我深信這種方式的效率遠(yuǎn)高于獨自工作的形式。事實上,針對當(dāng)前的辦公室里的這些“電子設(shè)備引起的注意力分散”情況,我認(rèn)為這是能讓軟件開發(fā)團(tuán)隊獲得最高效率的唯一辦法。
3. 誤解: 創(chuàng)業(yè)公司競爭激烈,所以每個人都該干到精疲力竭為止。
沒白沒夜的加班加點并不能讓你做的更多,做的更快。事實上,這會讓你適得其反。不錯,你覺得一周就能完成。但大部分的創(chuàng)業(yè)公司的開發(fā)計劃都會比這個長,程序員通常需要持續(xù)幾個月的進(jìn)行開發(fā)(如果不是幾年的話)來成功的完成一個產(chǎn)品。很多創(chuàng)業(yè)公司的行為表現(xiàn)就好象是這罐金子就放在那個墻角,只要能再努力一點就能拿到它。很快,開發(fā)人員的精力就被榨干了,如僵尸一般只是做出在加班的樣子,沒有任何的工作效率。高強度的工作,只是從短期來看會獲得更多的工作效率。著名的開發(fā)公司Pivotal幫助過成百上千的創(chuàng)業(yè)公司開發(fā)過系統(tǒng),從來都是嚴(yán)格按照40小時工作日來完成任務(wù)的。
想認(rèn)識全國各地的創(chuàng)業(yè)者、創(chuàng)業(yè)專家,快來加入“中國創(chuàng)業(yè)圈”
|