“對不起,項目要延遲一周”
“我們的項目延遲了,但是我找不到原因”
“我們已經完成了80%的東西,項目按計划進行,但是系統還不能跑起來”
你是不是遇到過這些情況呢?有時候我們的項目要延遲,有時候項目延遲了卻找不到原因,有時候項目按照計划進行但是客戶詢問進展的時候我們卻拿不出一個成型的東西。這裡所有的狀況的原因都可以歸結於---時間資源緊缺。
怎樣的有效利用時間?安排滿滿的計劃就算是有效利用嗎?這就是我們的本周話題:軟體開發中的時間管理。
我們來分析上面的問題:項目為什麼延遲?為什麼找不到延遲的原因?這說明項目執行計畫是沒有做到足夠細化的,這裡說的細化並不是一個極端,而是細化到這樣一個程度:通過它你可以有足夠的線索來對項目進度實行監控,對計劃做出即時調整。這就是我們說的第一點:軟體開發過程中最基礎的時間管理是安排一個協助你能掌控大局的任務時間表。
下一個問題,我們的項目沒有延遲,我們的客戶或者測試人員詢問的時候我們卻拿不出一個可以暫時能跑起來的系統。很無奈,我們說沒有延遲,好像只有我們自己相信自己。當然開發過程不能讓外界力量左右,但是,為什麼不能先出來一個可預覽的系統呢?這就是第二點:軟體開發中的時間管理很重要的一點是---開發工作單位的優先順序:優先順序處理的作用就是協助你用最小的投入獲得收益最大化。
怎樣安排任務的優先順序呢?我的文章總是要給出一個可執行檔方案,而不僅僅是提出問題,我的答案是:CEARVR
CEARVR是軍事打擊中總結出的原則,有的寫成:CARVER,我按照思考順序做了一個調整。CAERVR是經過血肉檢驗的實踐原則,在軟體開發過程中進行實踐,會感覺到這個原則的偉大。
C:Criticality重要性;一個郵件發送接收的dll會影響整個流程是不是能夠順利跑通,那麼它是具有重要性的。一個處理頁面中文繁簡體的dll相比之下可以延遲一下實現時間。
E:Effect 影響性;開發本身有deadline,前台和後台管理頁面的頁面美化工作都沒有做,但是後台管理頁面暫時有開發人員負責,是不是美化影響不是很大。前台頁面是系統的門面,其影響巨大,所以要優先。
A:Accessibilty 可進入性;任務可以直接著手解決, 還是有一些在做它之前必須完成的事?如果你要寫的Service需要十幾個dll的引用,而這些dll還沒有完成,那麼我們認為這個Service是沒有Accessbility的。
R:Return 回報;軍事上很注重一個軍事行動的回報,因為每一次軍事行動的代價都是很大的。沒有適當的回報,這次軍事行動就是失敗的。一句話將就是你花費多少成本說會多少回報?一味的提高單元測試覆蓋率,而影響了開發進度就是沒有回報的,或者回報率很低的;因為對於使用者你告訴他你的單元測試覆蓋率達到89%,他不感興趣,他要反問你:項目能不能按期交付?
V:Vulnerability易完成性; 你的目標容易實現嗎?這個任務需要多少人多長時間?
R:Recognizability 具體性;“星期一系統要完成80%”“星期二整個流程要跑通”這樣的計劃描述方式是沒有意義的,因為它缺少最基本的可操作性:一方面任務的內容是不具體的,另一方面可度量而無法度量。對於與你協作的同事更鬱悶:我具體要做點什麼呢?
總結:開發過程中進行時間管理,有一張時間表是十分重要的,而且它需要有一個你能夠接受的細化。時間表上安排任務是有優先順序的,如果需要一個安排優先順序的建議,我推薦:CEARVR;
時間管理的書有很多,軟體也有很多,找到適合自己的並在實踐中受益是最重要的!
v