David Anderson,支持Kanban(譯者注:貌似是某可視化項目管理系統(tǒng),)。他認(rèn)為我們應(yīng)該停止項目評估,它只會浪費時間。他在微軟推廣Kanban方法的案例研究中,改進(jìn)團(tuán)隊效率的第一步就是讓他們停止項目評估,把注意力集中在工作的優(yōu)先級并先進(jìn)行重要的工作。
項目預(yù)估一直就是軟件開發(fā)周期中最困難的階段。事實上它的難度相當(dāng)大,最近很多人都提議我不必去煩惱項目評估的事情。
Ron Jeffries說過:我認(rèn)為大部分的預(yù)估就是在浪費時間,預(yù)估本來應(yīng)該是用在發(fā)布計劃上估算有效需求的的,而現(xiàn)在則是以不合規(guī)范的方式折磨著程序員,它更像是在“決定是否做這個項目”,而不是在“根據(jù)開發(fā)人員是否有頭緒來估算這樣做所需要的時間”。還有項目預(yù)估絕對是在“浪費時間”。它不是軟件……如果你覺得評估對你有好處的話,那么你該反思它是不是垃圾,然后離它遠(yuǎn)點。
還有一些人在“如果你討厭項目評估的話,就沒有必要再為它投入精力了”的帖子中說到:把精力都用在證明評估報告是“正確無誤”的根本就是在浪費時間。把精力花在估算現(xiàn)實與想法差別的也是在浪費時間。把精力都放在怎樣訓(xùn)練員工去達(dá)到“正確無誤”的評估效果完全就是在浪費時間,并且還會影響團(tuán)隊的效率。
在“軟件評估被認(rèn)為是有害的?”這篇文章中,Peter Seibel談到某位朋友發(fā):現(xiàn)保持員工注意力和積極性在盡快發(fā)布軟件上尤為重要。他還說到如果目的僅僅是在單位時間內(nèi)開發(fā)盡量多的軟件,那么評估恐怕不是什么好主意。他在1985年關(guān)于人件的學(xué)習(xí)中發(fā)現(xiàn)了程序員基于自己預(yù)估的效率比其他人的都要高,但是壓根沒有評估的話,項目開發(fā)的效率是最高的。
Seibel承認(rèn)也許“項目評估對于協(xié)調(diào)人們的工作是有用的”——因此他把項目評估視作“交流的工具”。不過從這一點上來看,通過項目評估來傳遞信息根本是昂貴且無效的低質(zhì)量行為——因為所有的評估都包含了誤差和可變性。
這背后預(yù)示著什么?所有這些想法揭示了當(dāng)前開發(fā)的潮流風(fēng)向,把所有找到的潛在性垃圾都清除掉。它就像是:評估消耗時間并拖慢速度。你無法做出完全的評估,那為什么還要去試呢?這些言論和事例主要來自創(chuàng)業(yè)公司和其他小型團(tuán)隊環(huán)境,對于他們發(fā)布產(chǎn)品比做出可預(yù)測性更為重要。他們更在乎項目有沒有完成而不是何時完成或要多少成本。
你需要項目評估嗎?我認(rèn)為項目評估在創(chuàng)業(yè)公司(需要說服一些人贊助你的工作)里并不是非常重要的。如果你正焦頭爛額,或是處于某種緊急事件,就根本沒有時間讓你停下去評估了,成本什么的都無所謂,你唯一關(guān)心的就是盡快完成工作。
評估對于維護(hù)并不怎么重要——Kanban的很多維護(hù)團(tuán)隊的例子都是沒有評估的。這是因為維護(hù)本身做的更改很小——通常維護(hù)是為了解決bug并要在5天之內(nèi)完成的。如果想知道要花多少時間用來修改,你必須審閱一遍代碼才能知道哪里需要怎么改。這會占用整個修改過程的一半時間,而且假如你已經(jīng)修改了一些了,這時停下來評估剩余的任務(wù)還不如一鼓作氣改完算了。很多時候一個縮略圖或占位符的規(guī)則就是很好的評估了。
我在一個經(jīng)驗豐富的開發(fā)團(tuán)隊里工作,幾年時間都在負(fù)責(zé)某個系統(tǒng)。團(tuán)隊里幾乎所有的人都由內(nèi)而外地參與過原始設(shè)計和系統(tǒng)編程。開發(fā)的高管負(fù)責(zé)分配任務(wù)。他們對那些大得嚇人的系統(tǒng)有著很好的理解感,在我們要開始決定做什么的時候就能規(guī)劃出未來大致的概念了。很多時候程序員可以看出一段時間內(nèi)什么東西要做,什么不需要做。這是因為他們很熟悉這個系統(tǒng)和相關(guān)領(lǐng)域了,而且他們清楚現(xiàn)在需要做什么——即使現(xiàn)
在不清楚,很快也會清楚的。這點對于測試員同樣有效——大多數(shù)時候他們都知道測試修改時有哪些工作要做,和能不能做到。
有時人們會犯錯,導(dǎo)致無法按照想法完成工作,因此會拖慢進(jìn)度或要重頭開始。但是花一些時間用來分析和預(yù)估可能也不會有多大幫助。只有在完全陷入某個錯誤或認(rèn)識到問題比想象中嚴(yán)重的事后才有用。
我們并不需要項目評估。我們需要在沒有相關(guān)文件的時候盡量利用團(tuán)隊的經(jīng)驗和知識來做出快速有效的決定。因為員工不熟悉系統(tǒng)、平臺、領(lǐng)域或其他東西而無法快速下決定的團(tuán)隊,對于有些含有大量內(nèi)置模塊或界面的大型項目,很多人都不知道準(zhǔn)備做什么,或是有些東西要絕對服從截止時間等等這些情況下,你不得不花些時間來預(yù)估要做什么,隨著對問題的了解可能還要再做評估。你可以不預(yù)估就開始做,但并不推薦。