June 4 11:10~22:26
在《鬆弛讓你更敏捷(1)》Teddy談到從鬆弛(slack)的角度來看「ScrumMaster是否可同時擔任開發人員」的問題,今天來談一下每日工時應該以幾小時計算的問題。
鄉民甲:這個問題有什麼好談的,一天工時不都是用8小時計算嗎?
鄉民乙:哪有,那要看你待在什麼公司。我們公司一天工時是以14小時計算,而且我們都是責任制下的員工,所以沒有加班費可領。
***
早些年(10幾年前)Teddy在估算開發人員每日工時的時候,也是用「法定每日上班時間8小時」來估算。後來接觸到Scrum,學習到一個稱為「focus factor」的觀念(請參考《如何估算 story point?》、《Scrum 是什麼(12):不要再用focus factor與unplanned items了》、《Scrum 是什麼(13):為什麼不建議使用focus factor?》),雖然後來已不再使用focus factor來估算工時,但是focus factor的用法可以提醒團隊「自己可以多專注於每日工作」。
focus factor的值介於0~1之間,0表示開發人員沒有任何時間可以拿來做事,可能被抓去開會或是執行一些與這個sprint無關的工作。1表示開發人員完全沒有受到任何干擾,所有的上班時間都投注於這個sprint所規劃的工作。很顯然0或1都是不太可能出現的數值,Teddy以前的情況focus factor大概落在0.6x~0.7x之間。
後來Teddy讀到一份資料,裡面提到開發人員一天能有5個小時可以專心於開發工作之上就很了不起了,因此後來Teddy在估算「實際工時」的時候,都是用5小時來估算。有些團隊覺得自己受干擾的程度更低,也有人用6小時來估算。5或6小時都OK,只要團隊取得共識即可。
***
鄉民甲:可是一天上班時間明明至少要有8小時啊,如果用5小時來計算,那剩下來的3小時跑去那裡了?
剩下的3小時跑去那裡?跑去了很多地方…
- 上廁所、泡茶、泡咖啡、吃下午茶、聊天等等。
- 打電話、回覆e-mail或使用通訊軟體。
- 與主管或其他部門的人溝通。
- 恍神、發呆、放空、休息。
- 等待…等待開機、等待別人有空、等待建構完成等等。
- task switch與被工作被中斷後重拾記憶的時間。
- 走動與找人的時間。
- 應付其他突發狀況。
所以實際上,每個員工每天真正可以投入開發的工時是不可能滿8小時的。就算公司或團隊可以縮減上述時間佔每天工時的比例,將每日工時以5或6小時計算,還有兩個原因:
- 人類在估算的時候都有過度樂觀的傾向:根據心理學家研究,人類在估算時間的時候會有過度樂觀的傾向,因此,就算是在Scrum框架中工時是由整個開發團隊所估算,最後估算出來的時間經常還是過於樂觀。因此,在每日實際工時上保持一點鬆弛,有助於團隊應付開發風險與處理預料之外的突發事件,並可維持開發的品質。
- 每日專注5小時工作之後產能與品質可能會降低:這是Teddy自己的經驗,沒什麼科學根據。無論是coding也好,寫作也罷,每日專注工作5小時之後,身體和心靈都已經被榨的差不多快乾掉了。之後如果還要繼續硬撐,很有可能產出品質較差的東西,或是不小心製造出更多的bug。
***
如果把重點放在「高品質的產出」上面,也許每日工時的長短相對而言就不是那麼重要了。
***
友藏內心獨白:還好有slack,讓Teddy寫到一半可以去欣賞冰雹。
沒有留言:
張貼留言