技術債務(母雞的遭遇)

Web開發者發表於2012-07-23

  技術債務是指匆忙的實現一個功能,卻對現有的程式庫造成了破壞(在實現的過程中汙染了程式碼庫的設計),這對於一些專案經理/客戶來說就像是天書奇談。也許他們是明白的,只是不願意承認罷了,我估計是這樣的。不管怎樣,我想起來一個小故事,當下次遇到這種情況,需要向他們解釋增加某些新功能的代價時,也可用講這個故事給他們聽。

  一個農夫有3只母雞。每隻母雞每天下一個蛋。農夫跟當地的一個食品店老闆做生意。食品店老闆每天從農夫那裡買2給雞蛋放在店裡出售。一切都很好,直到有一天,食品店老闆出現在農夫家裡:

食品店老闆: 哎呀,今天我需要一些雞肉。

農夫: 雞肉?你和我的生意裡可不包括這些。

食品店老闆: 我知道。但我真的需要一些雞肉。我計劃要做一個B2S(S是胃的縮寫)模式的PaaS(P是肉禽的縮寫)平臺。

農夫: 什麼?

食品店老闆: 非常重要的東西。你可以提供我一些雞肉嗎?

農夫: 這樣呀,事情不是那麼容易辦到 — 我要孵化雞蛋,等小雞長大了才能給你…少說也要一個月吧。

食品店老闆: 一個月?太久了…我以為你現在就能給我呢。

農夫: 時間有自己的腳步,你必須耐心一點等。

食品店老闆: 可是,為什麼你不能在現有的母雞中殺一個呢?這樣一來,我有了雞肉,你每天還能產兩個蛋。這就夠了,不是嗎?

農夫: 可是,我不覺得這是一個好主意。這會把我推向一個沒有迴旋餘地的境況,萬一剩下的雞中有一隻突然出了什麼意外怎麼辦。

食品店老闆: 放心啦,不會發生那樣的事的…我真的非常非常需要雞肉!殺一隻雞吧!

農夫: 那好吧,我想我可以…

  於是,農夫拿起一把刀,把他的一隻母雞送入了天堂。食品店老闆得到了他的雞肉,返回了食品店。

  一週後,食品店老闆又一次來到了農夫家裡:

食品店老闆: 你好,我來了!

農夫: 你好,有什麼事?

食品店老闆: 你聽我說 — 你的雞肉好極了。事實上,它是如此的鮮美,賣的如此的好,你必須要再給我一隻雞。最遲明天早上。

農夫: 這是不可能的事。如果我要再殺一隻雞給你,我就沒法每天提供你兩個雞蛋了。

食品店老闆: 哦,別那麼緊張!客戶需要雞肉,我已經答應客戶明天早上提供給他們了…

農夫: 不行,絕對不能這麼幹。如果我這麼做,我就履行不了我和你的協議了,你知道嗎?如果我這麼做,我就沒法提供你足夠的雞蛋了。

食品店老闆: 可是我真的真的需要雞肉!明天早上之前!否則客戶會發飆的,地球將會塌陷,世界末日將會到來!給我一隻雞吧,現在!

農夫: 那好吧,如果你非要這麼不顧後果的想要,那就拿去吧!但是,從現在開始,雞蛋我是沒法提供你了,明白?

食品店老闆: 當然,當然。但我相信是個很聰明的人,我猜你能找到方法解決這個問題。再見!

  食品店老闆離開回到了店裡。

  第二天:

食品店老闆: 嗨,雞蛋呢?

農夫: 你什麼意思?

食品店老闆: 雞蛋。你只給了我一個雞蛋。發生了什麼事?

農夫: 發生了什麼事?我有3只雞,你拿走了兩隻。現在就剩下一隻。一隻雞,一個雞蛋。我認為我解釋的已經很清楚了。

食品店老闆: 但是合同裡並沒有這些!合同裡說的很清楚 — 你每天提供我2給雞蛋!你現在讓我向客戶怎麼交代?

農夫: 哦,情況我很明白。我無能為力。

食品店老闆: 好吧,好吧,不談這事了。我們們聊點其它事情…要是能再能點雞肉就好了。你再給我一些吧?

  所以,千萬別學農夫 — 堅決拒絕為了當前利益而長久的破壞你的程式碼庫的無理要求,如果你被強迫這樣做,拒絕承擔這樣的任務 — 也不要做食品店老闆 — 不要做提出這樣不合理的要求,你要為自己的決定承擔後果。

英文連結:On technical debt (now with chickens!)

相關文章