※ 引述《purin88 (原來我是憤怒的鄉民)》之銘言:
: 唉,但工時估太短,就造成我不停的加班追進度,沒有六日、沒有晚上
: 請問我該怎麼辦?
: 還有更好的solution嗎?
提供我自己的一點觀感,
其實估工時都是屁,工時基本上不可能估的準。
國外有流行一套不估工時的作法,你可以去google "no estimates agile"
如果你工時估的準,表示你做過類似的功能。
如果這個功能有些地方是有不確定性,一定是估不準的。
因為你無法得知這些不確定性的地方需要花多少時間,
有些時候一些乍看之下很簡單的問題,真正下去看才發現裡面其實大有文章。
比方說,我要你解一個老鼠走迷宮的問題,
附加條件是老鼠要走過特定的check point,並且要走最短路境。
先看到這邊,如果你從沒解過老鼠走迷宮的問題,你覺得要花多久時間?
假設你沒解過,但是你應該有聽過,或是以前上課有看過類似的問題。
其實最基本的老鼠走迷宮就是很暴力的遞迴下去,答案就出來了。
只要你聽過老鼠走迷宮,也許你會覺得這個問題只不過是老鼠走迷宮的變形,
上網查個資料就知道答案了。
所以你可能會估2-3個小時就可以完成,
不過就是上網查個資料加上自己local測試一下的時間。
但是你實際下去實作就會發現,它不是一個簡單的遞迴問題,
如果要走最短路徑,那就是shortest path的問題,
如果是走最短路徑再加上走過所有check point,那就是travelling salesman的問題,
整個演算法都和當初預想的不一樣了,
而你當初卻沒有估到這一塊。
就是因為軟體開發時,對於"技術的掌握"以及"客戶需求的掌握"有不確定性。
所以總是讓你估的工時像屁一樣。
而且你的工時又是主管估的,估工時的人和實作的人不是同一個人,
那估出來的時間更是不準。
(反過來說,如果客戶要的功能很簡單,需求很明確,而且你又做過類似的功能,
那就你的工時就會估得很準。)
那你該怎麼辦呢?
不知道你們有沒有跑scrum,
基本上工時不應該是由來主管估,也不應該是由你自己一個人來估,
應該是開個會,整個team一起來估。(當然你也會去估其他team members的工時)
這樣估出來的時間會相對比較準一些。(但還是有可能會不準)
然後應該把大的task breakdown,才知道那些地方是可掌握,那些地方不能掌握。
估出來會更準一些。
重要的是大家心裡應該要有共識,有不確定性存在的話,工時一定估不準的。
其實估工時的目的不外乎就是
1. 想要知道有沒有risk,會不會做不完,甚至做不出來
2. 有跟客戶壓deadline
3. 方便主管分配resources
如果有risk,一定要趁早說出來,尋求team member的幫助。
就算被罵也要說出來。然後看是要加人力,還是project要postpone。
risk其實是越早發現越好,而不是到deadline最後幾天才發現作不到。
所以主管如果有sense的話,應該要去鼓勵那些提出問題,主動尋求協助的人。
然後要去懲罰那些隱瞞問題的人。
而不是用言語去酸去罵那些提出問題的人,責怪他們能力不足,這樣只會造成反效果。
因為這樣會造成team member發現問題不敢講,
然後自己加班埋頭苦幹,最後自己做不出來,deadline前幾天爆發,
大家開始互批、互相推卸責任。
以上是我自己的一些看法,當然在某些senarios之下可能是不適用的。
有問題也可以來信討論。