微軟的戰略迷失#
Joel 在本章對微軟推動 .NET 的決策提出了尖銳批評。他認為微軟似乎失去了長期以來賴以成功的戰略方向——向後相容性(backward compatibility)。微軟過去之所以能稱霸桌面軟體市場,正是因為它對開發者社群的極度重視,以及對既有程式碼相容性的堅守。
然而,.NET 的推出意味著微軟要求開發者放棄熟悉的 Win32 API 與 COM 架構,轉而學習一套全新的框架。這不是漸進式的演進,而是一次激進的斷裂。
強迫開發者拋棄既有知識與投資,去學習全新的框架,等於是在懲罰那些最忠實的支持者。開發者社群是微軟最寶貴的資產,而非可以隨意重置的棋子。
Longhorn 的野心與災難#
微軟的「Longhorn」計畫(後來成為 Windows Vista)是這種戰略失誤的具體展現。Longhorn 同時推出了三個龐大的新技術:
- WinFS:一個全新的檔案系統,試圖將關聯式資料庫的概念融入作業系統的檔案管理中
- Avalon(後來的 WPF):全新的圖形使用者介面框架,取代沿用多年的 GDI/GDI+ 與 Windows Forms
- Indigo(後來的 WCF):統一的通訊框架,整合 Web Services、DCOM、MSMQ 等各種分散的通訊技術
這三個專案中的任何一個,單獨來看都是極具野心的工程挑戰。微軟卻試圖同時推動三者,並將它們全部綁定在下一代作業系統上。
Longhorn 計畫的結局
最終,WinFS 被無限期擱置(事實上等同取消),Avalon 和 Indigo 的規模也被大幅縮減。Windows Vista 的發布比原定時程延遲了數年,上市後又因效能問題與相容性災難而飽受批評。
這個案例完美印證了 Joel 在其他章節反覆強調的觀點:不要試圖一次性重寫所有東西。漸進式改進幾乎總是比推倒重來更明智。
開發者社群的反彈#
微軟要求開發者學習全新框架的策略,對其最重要的資產——開發者生態系——造成了嚴重傷害。
- 學習成本暴增:開發者需要花費大量時間學習 C#、ASP.NET、WPF 等全新技術棧,而他們在 VB6、MFC、Win32 API 上累積的經驗變得價值銳減
- 投資付諸東流:企業已經在現有技術上投入了數年的開發成本,被告知這些技術即將過時
- 信任危機:開發者開始質疑,今天學的新技術是否明天又會被微軟拋棄
平台廠商與開發者之間存在一種隱性契約:「你投資學習我的平台,我保證你的投資不會白費。」微軟打破這個契約的代價,遠比他們預期的要大得多。
核心教訓#
Joel 透過這個案例想傳達的並非「.NET 是壞技術」,而是一個更根本的戰略觀點:
- 向後相容性是護城河:它讓開發者願意持續投資於你的平台,因為他們知道過去的努力不會被浪費
- 漸進式演進優於革命:即使舊架構有諸多問題,漸進地引入新功能通常比推倒重來更安全
- 開發者的時間是稀缺資源:每當你要求開發者學習新東西,你就在與所有其他平台競爭他們有限的注意力
回顧歷史,微軟後來在 Satya Nadella 時代重新找回了對開發者社群的重視,擁抱開源、推出 VS Code 與跨平台的 .NET Core,某種程度上修正了這個時期的戰略失誤。但 Joel 在當時就已經精準地指出了問題所在。