為何工程師完成最後 20% 的工作時間跟之前的 80% 一樣多?

評論
評論

聽過「行百里、半九十」吧。這句話在程式設計師的工作中同樣適用,到底是為何呢?Matija 用一個精巧的比喻揭示了箇中道理。

其實這就好比在高峰期從郊外開車回市中心。前 80% 的路程很順,高速嘛,可能兩小時就走完了,但是到了市區,就走不動了,紅綠燈、人行道、各種環線和菜鳥司機,可能兩個小時都不夠用。

寫程式也是如此。最開始你要設計框架、為整個專案打基礎,然後開始開發,幾週或者幾月之後,你完成了整個專案 80% 的工作,各種關鍵模組開始起作用了。

但是好戲才剛剛開始,當你準備好好打造這款產品時,就會發現許多奇怪的 bug 冒出來了。比如:「欸,你知道這個程式在讀取文件時拔掉 USB 線會當機嗎?」,「看起來是程式不想下載檔案名稱裡有驚歎號的文件⋯⋯」。

這個時候,如果管理層下令要盡快搞定這剩下的 20% 的話,開發團隊就得棄掉汽車,徒步越過最後幾個障礙,只求按期到達地點,把車丟那不管了。也許能夠按期完工,但是這種辦法並不明智。

這篇文章被貼到 Hacker News 上之後,引發了眾網友的熱烈討論,大家紛紛表示感同身受。有一位朋友貼出了 Quora 上一個很精彩的

問答:「為何軟體開發的實際週期總是比預期的要長兩三倍?」排名第一的回答以徒步旅行中間遇到的困難與阻礙,很貼切的道出工程師心中的痛。

我們計劃從舊金山徒步旅行到洛杉磯,兩地距離大慨 400 英里,
1 小時走個 4 英里,每天走 10 個小時,大概 10 天就能抵達目的地。
我們開心的打電話告訴洛杉磯的朋友,十天後不見不散。

收拾行囊好興奮,不過,放大地圖來看,呃怎麼長得這麼不一樣,海岸線也太蜿蜒了吧!

照一天 40 英里的速度,大概過不了灣區一半,所以我們延長了兩天。不管,上路吧!

正式上路之後,天殺的看看這小徑,海水沙子階梯小溪,還有時不時衝上岸的兇猛大浪,結果我們一個小時能走 2 公里就老天保佑了。好吧那我們一天多花 2 個小時走路總能彌補一點。

只是,走到半途朋友長水泡,沒辦法再行走了,幫他處理好傷口我們其他人也筋疲力盡,明天再說吧。隔天振作精神,結果⋯⋯這是什麼鬼呀!地圖上沒說有這該死的峽谷啊!

好不容易我們走了五天,總該有些進展吧,攤開地圖一看,Holy Shit 我們甚至還沒離開舊金山灣區!這趟行程大概得 x6 了,六十天總到得了吧。

我們一夥人為了要不要打電話通知遠在洛杉磯的朋友,我們得再延長六十天爭執不下,畢竟這太丟臉了。隔天再度踏上征途,但是,一條湍急的巨河阻擋在眼前,我感到一陣胃痛如絞⋯⋯

簡單的說是這樣的,軟體開發同徒步旅遊一樣,可能你最初是計劃在 10 天內走完 500 公里,但真走起來,你會發現路上碰到的問題層出不窮,每天走的里程數都在遞減,團隊士氣也不太穩定,延期很多時候都是無可避免的。

其實何止是軟體開發,做任何一款產品的歷程大都如此。硬體專案也是做出原型簡單,真正量產時會碰到各種問題,

需要你耐下性子一個個解決,有時還得不斷反覆修正。魔鬼在細節中潛藏,要想達到盡善盡美,就得花額外的精力去雕琢那最後 10% 的部分。

SOURCE: matvoz.com


精選熱門好工作

Campaign Manager 活動企劃經理

樂購蝦皮股份有限公司
臺北市.台灣

獎勵 NT$20,000

Campaign Associate 線上活動策劃專員

樂購蝦皮股份有限公司
臺北市.台灣

獎勵 NT$20,000

遊戲美術 Game Artist

Orangenose Studio 易銘有限公司
臺北市.台灣

獎勵 NT$20,000

評論