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