務實面對新技術浪潮#

在上一章猛烈批評微軟的 .NET 戰略之後,Joel 在本章轉向實務面:作為一家需要持續出貨的軟體公司,應該如何面對 .NET 這樣的技術浪潮?他的答案令人耳目一新——保持謹慎,不要衝動。

Joel 的公司(Fog Creek Software)並沒有因為微軟大力推廣 .NET 就急著把所有產品重寫。相反地,他們採取了一種「等待觀望」(wait and see)的策略。

這篇文章的核心訊息是:技術決策應該由客戶需求驅動,而不是由廠商的行銷活動驅動。僅僅因為微軟說 .NET 是未來,並不意味著你現在就必須全面轉向。

不要為了新技術而重寫#

Joel 強調了幾個關鍵的決策原則:

  • 持續交付可運作的產品:客戶在意的是軟體能不能解決他們的問題,而不是底層用了什麼技術。用 VB6 寫的程式如果穩定好用,就沒有理由為了追趕潮流而重寫成 C#
  • 觀察什麼技術真正站穩腳跟:新技術在初期都有大量的宣傳和炒作,但只有經過時間考驗的技術才值得投資。等到 .NET 真正成熟、生態系完善之後再跟進也不遲
  • 避免全面重寫的陷阱:這呼應了 Joel 在「絕對不要做的事」那一章的論點——從頭重寫軟體是軟體公司能犯的最嚴重錯誤之一
務實策略的具體做法

Fog Creek 的做法包括:

  • 新專案可以考慮使用 .NET,但舊產品不會為了遷移而遷移
  • 只在 .NET 確實提供明顯技術優勢的場景下才使用它
  • 持續關注 .NET 的發展,但不急於做出不可逆的承諾
  • 確保團隊成員了解新技術,但不把學習新技術當作最高優先事項

客戶需求優先於廠商推廣#

Joel 觀察到一個常見的陷阱:許多開發者和技術主管會把「使用最新技術」等同於「做了正確的技術決策」。但真正好的技術決策應該是:

  • 解決客戶的問題,而不是追逐技術潮流
  • 降低風險,而不是為了新技術引入不確定性
  • 保護既有投資,而不是為了新框架拋棄多年累積的程式碼和經驗

當一家廠商告訴你「必須立刻採用我們的新技術」時,記住:他們的商業利益和你的商業利益並不完全一致。他們需要推廣新平台,但你需要的是穩定地交付產品給客戶。

區分炒作與真實價值#

Joel 建議開發者建立一套過濾機制,來區分技術炒作與真正有價值的創新:

  • 這個新技術解決了什麼我現在確實面臨的問題? 如果答案是「沒有」,那就先不用急
  • 早期採用者的回饋如何? 等別人先踩過坑,從他們的經驗中學習
  • 遷移成本有多高? 如果需要重寫大量程式碼,就更應該謹慎評估
  • 不採用的風險有多大? 在大多數情況下,延遲採用新技術的風險遠小於倉促遷移的風險

作為技術領導者,你的責任是保護團隊免於被不必要的技術變革所分心。讓團隊專注在為客戶創造價值的工作上,而不是花時間追逐每一個新框架。

長期來看#

Joel 的觀點並非反對技術進步,而是主張理性地擁抱變化。好的技術最終會自然地被採用,因為它確實帶來了價值。而壞的技術,無論廠商如何推廣,最終都會被市場淘汰。

身為軟體開發者或技術決策者,你的工作不是成為每個新技術的早期採用者,而是在正確的時機做出正確的技術選擇,同時持續為客戶交付有價值的產品。