Jared Richardson — Morrisville, North Carolina, USA
媽媽說你很特別——但這是善意的謊言#
還記得媽媽說的話嗎?「你很特別!你與眾不同!」但事實是,幾乎每個媽媽都這樣說。
這個善意的謊言,在軟體開發世界裡卻會引發嚴重問題。
「我們很特別」症候群#
作者輔導過許多開發團隊。毫無例外,越是認為自己「很特別」的團隊,在專案指標上的表現越差。
這些團隊的共同傾向是:重新發明所有東西。
他們的邏輯:
- 沒有任何現有的建置系統(build system)能滿足我們「獨一無二」的需求,所以我們要自己寫一個
- 現有的物件資料庫映射工具(object-database mapping)不夠好,我們要自己做
- 網頁應用框架(web application framework)?我們自己來
- 持續整合(continuous integration)、測試框架(testing harnesses)?我們都自己寫
- 最狂妄的,甚至想自己發明程式語言
注意: 這些團隊的日常,就是在解決他們自己製造的問題——追蹤自製資料庫層(database layer)的神秘效能 bug、處理快取問題、應付各種邊緣案例(edge cases)。這些消耗掉的時間,遠超過他們學習或修改現有工具所需的時間。
為什麼不那麼「特別」的團隊反而更成功#
成功的團隊使用現有工具,原因很簡單:
**他們要解決的問題本身已經夠難了。**他們需要可靠的工具,讓注意力能集中在真正的商業問題上,而不是在已經滿溢的工具箱裡繼續裝東西。
重點: 「非我族類(Not Invented Here)」症候群讓無數優秀團隊脫軌。身為專案經理,你的職責是了解市場上有哪些可用的高品質開源或商業工具,並引導團隊善用它們。
給專案經理的建議#
當開發人員來告訴你他們的問題有多麼「獨一無二」時:
- 溫和地提醒他們,媽媽當初可能誇大了那個「你很特別」的評估
- 主動了解業界有哪些現成工具可以使用
- 引導團隊選擇成熟、可靠的工具,而不是自己重頭打造
技巧: 定期與開發人員討論他們計畫「自己建造」的東西。問一句「市場上有沒有現成工具可以解決這個問題?」,往往能節省數週甚至數個月的開發時間。
附註:工具(Tools) — 開發者用來建立、除錯、測試、分析、追蹤的輔助程式。
附註:邊緣案例(Edge Cases) — 只在極端條件下才出現的問題或情況,例如最快速度、最大資料量、最舊的瀏覽器等。