Venkat Subramaniam — Broomfield, Colorado, USA

程式碼越多不等於越好#

軟體開發需要大量心力投入。但當有人自豪地說「我們的應用程式有超過三百萬行程式碼」時,值得反問:這些程式碼有多少是真正必要的?

多餘的程式碼往往源於過度追求可擴展性(Extensibility)——這個想法出發點是好的,但如果執行不當,反而會產生反效果,並拖延目前的專案。

注意: 若你習慣性地要求開發者長時間加班,請確認他們產出的是真正有用的成果,而非徒增程式碼複雜度。獎勵「多投入時間」而非「產出結果」,是導致程式碼臃腫的根源。

楓樹與過度澆水的教訓#

作者分享了一個親身經歷:科羅拉多的夏天,他的楓樹大量落葉。他以為是氣候乾燥導致,便加長澆水時間,卻毫無改善。專家告訴他:「問題就出在澆水太多!減少一半的頻率和時間,你就會看到改善。」

兩週後,楓樹恢復健康,枝葉茂盛。

開發者就像楓樹一樣:

  • 給予適量、充足的時間和明確的小型任務,他們會蓬勃發展
  • 給予龐大任務並要求長期加班,他們開始枯萎,並因為時間過剩而傾向過度撰寫和複雜化程式碼

兩種管理風格的對比#

作者比較了兩位不同管理者:

第一位管理者:專注於員工工作了多長時間。週六早上進辦公室、晚上留到很晚,比實際產出更重要。

第二位管理者:維持傳統的八小時工作制。偶爾加班是例外而非常態。員工知道自己不需要長時間工作,但必須按時完成承諾的交付物。

結果是:員工在第二個團隊中——即使個人能力相近——完成了更多工作。因為他們專注、少分心、優先排序清晰、時間運用有效

核心原則: 鼓勵開發者回報取得了什麼進展,而非工作了多長時間。讓他們知道你在乎的是結果,而非在電腦前坐了幾個小時。

管理轉型: 一旦你的團隊意識到你是「結果導向」而非「打卡導向」的管理者,他們的注意力就會從「待滿時數」轉向「達成目標」。這個改變,往往比任何技術改進都更能提升團隊產出。


詞彙說明

  • Extensibility(可擴展性):系統設計原則,在編寫當前功能時最大化未來增加功能的能力。