人月神話(一):我們都在焦油坑裡掙扎嗎?

前言
最近翻 linkedin 剛好看到有人推薦這本書:《人月神話》(The Mythical Man-Month)。
問一問才發現原來這本書是號稱軟體工程界的聖經,所以想了想還是要撥點時間看吧?也許能給現在的自己有些什麼啟發。
那就開啟了不知道會不會寫完的這本書的讀書心得吧…
第一章的標題:焦油坑(The Tar Pit)。
作者 Fred Brooks 引用了史前巨獸在焦油坑掙扎的場景:恐龍、猛獁象、劍齒虎,這些強大的生物在焦油中掙扎,越是猛烈,纏得越緊。最後,沒有誰能逃脫。
但我們是人,我們可能會享受這個掙扎的過程。因為快樂總是伴隨著苦痛,而煩惱即是菩提。我們總在焦油坑裡掙扎,但偶爾,我們也能爬上岸,享受一下陽光。
而這,就是開發的日常。
什麼是「程式系統產品」?
這一章提到了一個很有趣的概念,也是我很喜歡的一張圖(Figure 1.1),解釋了為什麼我們寫一個能跑的「程式」(Program),跟做出一個能賣的「程式系統產品」(Programming Systems Product),所需的成本會有 9 倍 的差距。
- Program:你自己寫爽的,能在你的機器上跑,能在你的腦袋裡運作。成本:1x。
- Programming Product(程式產品):要通用化、要測試、要有文件。成本:3x。
- Programming System(程式系統):要跟別的元件介接、要遵守介面規範、要整合測試。成本:3x。
- Programming Systems Product(程式系統產品):也就是我們每天在做的事。既要通用化又要系統化。3x * 3x = 9x。
很多時候老闆(或是我們自己)都會誤判,以為把一個 Prototype 變成產品很快。別傻了,那個 9 倍的坑就在那裡等著你。
為什麼我們還在這裡?
既然是焦油坑,那為什麼我們這群工程師還前仆後繼地跳進去?Brooks 列出了這個職業的 樂趣(Joys) 與 苦惱(Woes)。
職業的樂趣
- 純粹的創造:就像上帝創造世界一樣,我們創造事物。
- 對他人有用:做出來的東西是真的有人在用的。
- 魔術般的魅力:看著一行行程式碼變成會動的畫面,那種成就感無可比擬。
- 持續學習:這個領域永遠不會重複,永遠有新東西。(雖然有時候這也是一種這折磨…)
- 易於駕馭的介質:我們的畫布是記憶體,我們的畫筆是鍵盤,我們可以憑空蓋出城堡,不需要磚瓦。
職業的苦惱
- 追求完美:電腦是無情的,少一個分號就是跑不動。我們必須強迫自己追求完美。
- 依賴他人:你的程式跑不對,可能是 OS 的鍋,可能是 Library 的雷,甚至可能是同事的 API 文件沒寫好(或是根本沒寫)。
- 枯燥的除錯:設計是有趣的,但抓 Bug 是線性的、甚至是指數級的痛苦。
- 產品過時:當你終於把產品做出來,它可能已經過時了。
結語
雖然我們常抱怨 Requirements 一直改、在那邊解幾百年前的 Legacy Code、或是為了別人的 Bug 加班到半夜。但說實話,當我們看著系統成功上線,解決了用戶的問題,那種「我在焦油坑裡存活下來了」的快感,或許就是讓我們離不開這個行業的原因吧。
我們都是在焦油坑裡掙扎的巨獸,但偶爾,我們也能爬上岸,享受一下陽光。
這是我讀完第一章的小小心得,如果你也在焦油坑裡,別忘了,你並不孤單。
- 標題: 人月神話(一):我們都在焦油坑裡掙扎嗎?
- 作者: Larry Lai
- 撰寫於 : 2026-01-23 02:05:00
- 更新於 : 2026-01-23 10:39:04
- 連結: https://larrylai1993.github.io/2026/01/23/mythical-man-month-ch1/
- 版權宣告: 本作品採用 CC BY-NC-SA 4.0 進行許可。