趣文:用雞講解技術債務的形成過程

Michael.X發表於2012-03-12

技術債務,是指在面對需求時,由於倉促實現某些功能特性而對程式碼庫產生了破壞(在此過程中同時破壞了程式碼庫的架構設計)。對於一些經理或客戶來說,技術債務彷彿是一個陌生的概念。也許他們知道,只是他們不太想聽,我不確定。不管怎樣,我想到了一個小故事,在下次提出某些新特性需求時,我會用這個故事告訴他們實現這些特性的代價有多大。

 

用雞講解技術債務的形成過程

(伯樂線上配圖)

 

有一個農民,他有三隻雞,每隻雞每天生一個蛋。農民與當地的一個雜貨店有生意來往。雜貨商每天從農民那裡買兩個雞蛋,這樣他可以在他的店裡出售。一切都有條不紊地進行著,直到有一天雜貨商出現在農民的家門口。

 

雜貨商:嘿,今天我想要一些雞肉。

農民:肉嗎?這可不在我們約定的協議範圍之內。

雜貨商:我知道,但我真的需要肉。這是為我計劃的一個企業家禽服務平臺做準備的。

農民:什麼?

雜貨商:一些重要人物。你能給我一些嗎?

農民:嗯…這不那麼容易,我必須孵化雞蛋然後等待雛雞長大。我認為這需要一個月左右的時間。

雜貨商:一個月?時間太長了…我更喜歡現在就拿到。

農民:大自然有其自身的規律,你必須等待一段時間。

雜貨商:嗯…為什麼你不殺一隻雞呢?這樣一來,我將得到我想要的肉,你仍然可以每天生產兩個雞蛋。事實上你每天也不需要更多的雞蛋,不是嗎?

農民:嗯…我不認為這是一個好主意。當其它的雞發生一些意外的狀況時,這會讓我陷入困境,可能無法提供兩個雞蛋。

雜貨商:來吧,不會有什麼事情發生的…況且,我真的,真的需要肉!你能給我嗎?

農民:好吧,我想我可以…

 

說完,農民拿起屠刀將其中的一隻雞送到了造物主那。雜貨商拿著他的肉回到了他的店裡。

 

雜貨商:嘿!

農民:嘿,怎麼啦?

雜貨商:聽著,上次的肉很好。事實上,它真的很美味,而且賣得非常好。所以現在,也就是明天之前,我至少要拿到一隻雞。

農民:這是不可能的。如果我給你另一隻雞,我就無法按照合約裡面的條款每天供應兩個雞蛋了。

雜貨商:哎呀,快點啦。客戶想要肉,而且我已經答應了明天一定會提供肉的…

農民:不,我不能這樣做。如果我這樣做,我就不能履行合同,你明白嗎?如果我這樣做了,雞蛋就不能保證。

雜貨商:但是我真的,真的,真的需要肉!就在明天!否則客戶會生氣,地球會毀滅,整個世界正如我們所知道的那樣會結束!給我一隻雞,現在!

農民:嗯…如果你真的很想要,那你拿走吧!但是我要再次提醒你,從現在開始,我無法保證每天有足夠的雞蛋。明白嗎?

雜貨商:當然了,這我知道的。但是你是一個聰明的傢伙,我想無論如何你會想出辦法解決這個問題的。拜拜!

 

雜貨商走了,再次回到了他的店鋪。

一天後:

 

雜貨商:你好!雞蛋出什麼問題了?

農民:你是指什麼?

雜貨商:雞蛋,就是指雞蛋,怎麼只有一個雞蛋?出什麼問題了?

農民:出什麼問題了?我有三隻雞,你拿走了兩隻,現在,這裡只有一隻雞。一隻雞下一個雞蛋,我想這是很清楚的事情。

雜貨商:但是合約中沒有這些!合同規定的條款就擺在這裡。你每天欠我兩個雞蛋!現在你要我怎麼向我的客戶解釋?

農民:嗯,對此我是非常清楚的,而且我也無能為力。

雜貨商:好吧,好吧,天哪,算了吧,說點別的吧…如果能再拿一些肉走那還不錯,我能拿走一些嗎?

 

所以,不要當一個農民。當需求來時,拒絕可能對你的程式碼庫造成無法挽回的破壞的需求,一旦你被強迫去做這樣的事情,絕對不要對已被破壞的殘骸負責。同樣,不要當一個雜貨商,不要要求一些不可能完成的任務,同時為自己的決定承擔責任。

PS:在寫這篇博文時,沒有任何的雞受到傷害 ^o^

 

相關文章