為何程序員完成最後 20% 的工作需要的時間跟之前的 80% 一樣多?
聽過行百里者半九十吧。這句話在程序員的工作中同樣適用,到底是為何呢? Matija用一個精巧的比喻揭示了個中道理。
其實這就好比在高峰期從郊外開車回市中心。前80%的路程很順,高速嘛,可能兩小時就走完了,但是到了城裡,就走不動了,紅綠燈,人行道,各種環線和菜鳥司機,可能兩個小時還不夠用的。
編程也是如此。最開始你要設計框架,給整個項目打基礎,然後開始開發,幾週或者幾月之後,你完成了整個項目80%的工作,各種關鍵模塊開始起作用了。
但是好戲才剛剛開始,當你準備好好打磨這款產品時,就會發現許多奇怪的bug冒出來了。比如:“餵,你知道這個程序在讀取文件時拔掉USB線會崩潰麼?”,“看起來是程序不想下載文件名里有感嘆號的文件...”
這個時候,如果管理層下令要盡快搞定這剩下的20%的話,開發團隊就得棄掉汽車,徒步越過最後幾個障礙,只求按期到達地點,把車丟那不管了。也許能夠按期完工,但是這種辦法並不明智。
這篇文章被貼到HN上之後,引發了眾網友的熱烈討論,大家紛紛表示感同身受。有一位朋友貼出了Quora上一個很精彩的問答:“為何軟件開發的實際週期總是比預期的要長兩三倍?”排位第一的回答真心機智幽默。
簡單的說是這樣的,軟件開發同徒步旅遊一樣,可能你最初是計劃在10天內走完500公里,但真走起來,你會發現路上碰到的問題層出不窮,每天走的里程數都在遞減,團隊士氣也不太穩定,延期很多時候都是無可避免的。
其實何止是軟件開發,做任何一款產品的歷程大都如此。硬件項目也是做出原型簡單,真正量產時會碰到各種問題,需要你耐下性子一個個解決,有時還得不斷返工。魔鬼在細節中潛藏,要想達到盡善盡美,就得花額外的精力去雕琢那最後10%的部分。
資料來源:36Kr