David Wood — Fredericksburg, Virginia, USA

「聰明」程式碼的兩面性#

開發者常常被要求創造奇蹟——用巧妙的方式讓現有程式碼與老舊的 legacy 系統整合,通過技巧和創意寫出大量「聰明」的程式碼來完成任務。然而,越聰明的程式碼,往往意味著越長的程式碼行數與越高的複雜度,埋下未來維護的隱患。

注意: 程式碼太「聰明」,最終會難以維護。後來接手的開發者看不懂程式碼,就無從維護起,最終只能進行代價高昂的重寫。

允許探索新語言與工具#

如果你是剛進入軟體開發領域的專案經理,不要害怕讓開發者探索新的程式語言和開發工具。這是他們發現改善程式碼實踐與成果的途徑。他們可能設計出更快、程式碼更少的解決方案,對專案更有利。

現代的創新程式語言,往往能以少得多的程式碼行數完成相同功能:

  • 更簡單的程式碼結構,更易於測試
  • 可自我定義,更具可讀性
  • 儲存空間更小
  • 更易於長期維護

引入新語言前的評估清單#

在組織內部引入新語言或平台,需要謹慎考量:

  • 這個新程式碼能否真正解決當前軟體的問題?
  • 能否與現有 legacy 資料庫、使用者介面和第三方軟體長期相容?
  • 團隊或部門中是否有其他開發者能使用這個語言?
  • 語言作者是否提供充分的產品支援和及時更新?

評估捷徑: 如果新語言能追溯到 C 或 Java 等主流語言的脈絡,整合進現有實踐通常相對順暢。

文件是維護的生命線#

無論引入多新穎的做法,都必須在程式碼中記錄新的實踐。否則,程式碼庫與文件會逐漸背離,最後只能靠閱讀程式碼本身來理解系統——這稱為軟體元件與系統 metadata 之間的「耦合失效」(loss of coupling)。文件不足的系統,最終命運往往是被迫全面替換。

核心原則: 鼓勵開發者創新,但不要「聰明」到複雜過頭。任何開發者試圖用過度複雜的程式碼來鞏固自身職位,對專案經理而言百害而無一利。可讀性才是真正的技術資產。