[天天一個知識點] 16-軟件工程-什麼叫完成

90-90法則是貝爾實驗室的Tom Cargill所提出的,內容是:開發軟件時前90%的代碼要花費90%的開發時間,剩餘的10%的代碼要再花費90%的開發時間。這卻是應了中國一句古話,西漢的劉向說的,行百里者半於九十。看起來軟件開發並不是是異於其它領域的特殊行業,只是它的從業者們經常作出一些更使人驚訝的事情來。這每每會致使「最終交付時間」遠遠大於預計時間的180%,可是說完成了卻僅花了很短的時間。這裏面比較經典的應該是早些年IBM顧問說華爲的一句話:有時間改bug沒時間把代碼寫好。程序員

我見過不少關於「完成」的場景,好比說:xx已經完成了,只是還不能用,又好比:程序員說xx如今已經能夠對接了,其實代碼連完整的集成測試都尚未作過,上面這些例子在我身邊都是反反覆覆出現過的,可是又迫不得已,甚至說深受其害。遙想第一次被坑,好像是花了2天嘔心瀝血寫了600行代碼處理一個很是複雜的分頁處理,有相似於標題若是在最後一行則跟正文一塊兒移動到下一頁、分欄以後左右要對齊之類的各類規則,再加上調試一共花了有一週時間才「完成」,這引發了部門經理的不滿,由於另一個程序員在另外一個產品裏的相似功能只用了一天就「完成」了。固然,不出意外的是個人代碼再日後幾乎沒有修改,另外一個產品的這個功能不斷出現問題每一個版本都要有人跟那段代碼鬥爭。學習

*** 很顯然,在個人定義裏,「完成」的概念是能夠交付,而不是能夠開始調試。 ***測試

若是你們認爲,最終我用事實證實了本身,那麼我只能說,童話散場了,你們能夠醒來回家了。毫無懸念地部門經理認爲我處理的需求「簡單」,因此才bug少,另一個產品中的需求複雜,因此纔會致使bug多。是的,我見過的大部分管理者都是這樣的,救火永遠比防火重要,到目前爲止我負責的每個高質量的系統都被認爲是「簡單的」。甚至在不少公司都有種說法教導碼農要在寫代碼的時候本身埋雷進去,而後等出事以後本身再解決掉,這才容易升職加薪,我不知道有多少人真的這麼作,或者僅僅是拿來調侃,可是這足以說明寫代碼的尷尬境地。調試

不論是程序員仍是管理者都應該從新考慮一下「完成」的定義,一個恰到好處的「完成」是一個利益最大化的結果,它會讓你的組織從這個需求得到理想的結果,更低的成本或者是更高的售價。如何達到一個恰到好處的「完成」是個頗有挑戰的事情,挑戰在於:1、因爲沒有接受過良好的訓練或者由於以往工做壓力致使的低質量的完成,是幾乎不可逆的損害,大部分人在進入職場以後幾年內就失去了學習能力,三歲看老,工做三年也差很少決定了整個職業生涯,因此大部分碼農已經失去了用更長時間寫出更高質量的代碼的能力。2、管理者基於本能的管理對組織風格的影響更加深遠,而改變管理者的理念是比改變新人更困難的事情。開發

這並非說這個問題無解了,我以爲這反而是更好的機會,給那些更有勇氣的人準備的。你懂的~產品

相關文章
相關標籤/搜索