一般來說,我們認知「軟體開發」是屬於專業知識型工作,但我認為「紀律」在專業知識工作中更為重要。紀律的英文是 discpline,但 discpline 同時也是專業的意思,也就是說,專業的工作者必定有紀律1。
這裡所說的紀律並不是指像軍隊裡面規定要六點起床,或是工廠裡面必須規範一堆標準作業程序(SOP)之類的事情,而是「在團隊價值觀中,為了達成目標而團隊必須遵守的工作規定或方法」。舉例來說,為了達成目標,團隊必須有固定的時間來討論,這時遵守時間加入討論,就是團隊紀律的展現。
常見的軟體開發團隊紀律:
團隊重疊的工作時間:如同前文所述,團隊需要固定討論的時間,因此即使是跨時區的團隊,常常也會規劃一個時間一起開會。例如一個在台灣和美西時間的團隊,很可能會約美西的早上七點(台灣的晚上八點)來開會。雖然這個時間對雙方來說都會稍微超出正常的工作時間帶,不過團隊需要遵守這個規定,因此可能會在需要開會的當天作工作時間的調整。
一致並可留存紀錄的溝通平台:例如專案管理用的看板、Issue Tracking System、程式碼版本控制系統以及文件管理系統等。一個軟體開發任務被定義為完成,一定是這個任務預期提供的價值有被滿足、測試完成且所需文件完備,才能定義為完成。
預期管理:任何與工作有關的事情提前告知,讓團隊可預期,不讓團隊驚嚇。
統一的程式碼風格與開發流程:例如 K&R Style、分支需要經過 Code Review 後才能合併回主幹、需要經過回歸測試、壓力測試後才能合併等。
Agree/Disagree and commit:在做出決定前(例如優先順序、技術選型、實作路徑等),團隊會充分討論,鼓勵提出各種意見,即使針鋒相對也沒問題。然而,一旦做出決定,每個人都必須承諾要執行這個決定,且不可以事後諸葛或是翻舊帳。
有紀律才有執行力,即使我們普遍認為軟體開發是一個需要創造力和創新能力的工作,但如果只有創造力而沒有執行力,所有的想法都只是空中樓閣,無法落地產生效益。因此團隊紀律會是一個有執行力的團隊所重視的最重要的事情。
#技術管理閒聊 系列不定期出刊,如果您覺得有幫助,歡迎分享出去讓更多人看到。
如果你除了本系列文章,還想收到定期出刊的 #技術管理觀點 系列,歡迎輸入 Email 訂閱電子報。
另一個例子:棒球的選球能力是專業打擊者必備的能力,而選球能力的英文是 plate discipline,直譯的話就是「本壘版紀律」。
Share this post