l

2015年8月12日 星期三

貨物崇拜

August 10 10:23~12:05

螢幕截圖 2015-08-10 12.00.55

 

上禮拜颱風夜無意中讀到一篇2000年IEEE Software的文章〈Cargo Cult Software Engineering〉(貨物崇拜軟體工程),作者是Steve McConnell,寫了幾本有名的書,包含《Code Complete》、《Software Project Survival Guide》與《Rapid Development》雖然這是15年前的舊文章,但讀完之後還是頗有感觸。

文章開頭引用美國知名物理學家Richard Feynman(費曼)的一段話,大意是說二戰期間南太平洋有些島民看到飛機載著許多好料的貨物降落,在戰後他們希望這種現象可以持續維持下去。為此他們做出外表像是跑道的東西,把火把放在「假跑道」兩旁,用木頭蓋起模擬塔台的小棚子,讓一個人坐進去,在頭上套著兩塊木片假裝是耳機,最後用竹條來製作天線。

該做的都做了,形式上看起來十分完美,就好像二戰時的機場一樣,但這種形式的機場是不會有飛機降落的。費曼把這種行為稱作「cargo cult science」(貨物崇拜科學)—所有科學要求的形式都有做到,但卻忘了最重要的一點,飛機已不會在此降落。

***

作者接著提到在組織中兩種常見的軟體開發模式:

  • Process-oriented development:藉由詳盡的計畫、明確定義的流程、良好的時程安排、軟體工程最佳實務作法的工具支援,來達到高效的軟體開發。 (顆P內心獨白:就是要訂定SOP啦。)
  • Commitment-oriented development:只要聘請 台清交成畢業生 最優秀的員工,然後要求他們承諾,即使拋家棄子也會全心投入專案。不用管他們工作的細節,讓他們自由發揮。不斷地激勵他們,讓他們每天工作到看到凌晨的星星才可以下班,直到專案完成為止。

作者認為只要運用得當,這兩種做法都可以快速且有效率地產生高品質的軟體。但同時也存在病態的相似性讓這兩者無法運作。難就難在,一般人經常無法區分真品和贗品之間的差別。

***

作者繼續討論誤用這種兩開發模式會變成什麼樣子,有興趣的鄉民請自行閱讀(不然本篇就快要變成翻譯文章了…Orz)。有一陣子有人在爭辯,這兩種開發方法,到底哪一種比較好。關於這一點Teddy非常有感觸,在不久之前,台灣政府還在推廣CMMI,也培養了一派process-oriented development的信徒,只要 有黨證 流程正確,找誰來開發軟體都可以。許多硬體廠與白手起家創業的老闆,則是commitment-oriented development的擁護者,堅信「只要小便還不夠黃,就是你不夠努力的證據」(迷之音:難道調薪之前還要先驗尿XD)。

作者認為重點根本不是process-oriented development或是commitment-oriented development,而是competence或是incompetence(有能或無能)的差別(迷之音:無關藍綠,只管執政能力)。軟體開發組織要想辦法提升開發人員以及軟體人員的水準,唯有如此才會提升成功的機會。

***

讀完文章之後覺得「貨物崇拜」現象在網路與資訊發達的現代,更是明顯。「只要聽了某某演講、參加這一場讀書會、報名國際認證課程、取得某張證照、假裝看了某本書、收集1000個流行名詞、拜了50位大神,我的專案就可以順利完成了。」這種「有神快拜」的心態,搞得工程師好累啊。

拜神不是不行,也不一定不對,但拜完之後還是要靠自己努力打拼。專案成敗主要取決於competence與incompetence的差別,而不是拜了多少神,信了什麼教。

***

友藏內心獨白:Doing agile也是一種貨物崇拜。

沒有留言:

張貼留言