顯示具有 檢查清單 標籤的文章。 顯示所有文章
顯示具有 檢查清單 標籤的文章。 顯示所有文章

9/08/2019

如何指派工作 (軟體主管的31堂課)


作為團隊領導者,自然會遇到任務分配,指派工作任務的情況。軟體開發團隊也不例外,雖然敏捷式開發方式中的Scrum方法論,是希望在每個Sprint中採取「自己認領」工作,但其實極少有團隊可以完全做到這點。

指派工作任務最完美狀況是:團隊成員對主管有100%的信任,同時對組織中短期目標也有深切體會;並且都有完整的技術能力可以達成任務;而且所有人對於專案與時間管理都有經驗;而更重要的是,每個人都士氣高昂,迫不及待地完成任務。很遺憾的是,這種情況幾乎不會存在,好的軟體主管必然認知到的是,自己的任務必然是在於讓團隊成長前進,往好的地方邁進,而非期待自己「已經處於」一個完美的團隊。

如果你是個軟體團隊的主管,常常在夜深人靜時自己抱怨自己的環境與團隊,並且自認為委屈,那麼你就是屬於「期待自己已經處於完美團隊的主管」,這通常不會是讓事情變好的心態。

指派工作的方式看似很多,但重點只有幾個:

(一) 指定清楚的目標


指定清楚目標表面上很簡單,但主管自己其實需要考慮是這件事的真正目標,和指定任務的項目。

舉例來說,如果軟體主管指定任務目標為:「A工程師,請把某個AWS的一組VM,從micro升級到xlarge。」這看似清楚目標,但升級機器,必然不是目標,升級機器要達到的結果才有可能是目標,更有可能的是結果後的結果才是目標。

例如,稍微清楚描述目標:「A工程師,我剛收到通知明天由於行銷活動,我們網站流量應該會暴增,為了讓我們能處理高流量,請把某個AWS的一組VM,從micro升級到xlarge。」

但是,更好的方式其實是,清楚目標先指定,然後再討論出來。例如:「A工程師,我剛收到通知明天由於行銷活動,我們網站流量應該會暴增,為了讓我們能處理高流量,我們在AWS上的各種VM和使用的服務,有需要做哪些改變呢?」

當然,目標本身一定要涵蓋作法/行動。沒有具體行動的目標也沒有意義。

(二) 時間視為最重要衡量方式


時間是衡量所有事情的最重要的方式,在清楚指定或者討論目標作法之後,所有的行動必須以時間為衡量方式。而時間除了長度,還有實際完成時間。

例如:「A工程師,根據我們剛才討論結果,我們需要升級所有120個VM,這需要2小時,並且是在後天早上10:30am之前完成」

(三) 寫下來!


指派工作的另一個重點在於,所有任務指派一定要文字化或者圖形化,即便是很簡單的瑣碎小任務,也應該用一張紙寫下來。現在專案管理工具其實很多,例如JIRA。當然也可以用它來指定所有任務。


9/01/2019

極端簡單解決問題的技術:check-list (軟體主管的31堂課)



軟體研發主管應該要能順手使用許多解決事情的技術,例如甘特圖,流程圖,心智圖,時間序列圖等等。然而有時候,簡單的check-list 檢核清單能夠快速統一想法,解決問題,特別是在情況複雜紊亂,但又需要統一某種結果的時候。


案例:S公司擁有橫跨數個國家的雲端營運團隊(devops),但就如同許多創新公司一樣,營運團隊一開始並沒有統一的流程,許多devops會自行發布想發布的服務,造成其他人的困擾。更有甚者,在預期有大流量的時候,常常忽略許多小細節沒有處理,然而又常常有很多人在做同一件事情。


檢核清單check-list的概念很簡單,跟SOP有點類似,就是列出一串要有的事情,當有的時候就打勾。最簡單常見的例子就是旅行攜帶物品清單,如下:

[ ] 護照
[ ] 美金
[ ] 變壓器
[ ] 盥洗用具
[ ] 雨傘

你大概會覺得簡單到不行的東西有什麼好說得?在快速成長的團隊中,有許多工程師都想要以「自動化」的CICD以及系統監控來解決問題,這當然是合情合理,但是在完成之前呢?很多事情是需要「時間」來完成,在能夠自動化之前,人工仍然避免不了。更有甚者,許多事情可以自動化,但是決定的方式卻無法自動化。

以該案例的情況來說,預期有大流量的活動時,可以在前幾蔫由主管決定一個清單,例如googlesheet 或其他文件知會所有相關人,例如:

[  ] 在N月O日P時,所有人停止部署服務 
[  ] 在N月O日Q時,A負責檢查可承受的流量
[  ] 在N月O日R時,A與B討論並決定要額外擴增多少服務
[  ] 在大流量活動日的 D時起到E時止, C負責監控系統流量,
[  ] 在大流量活動日的 D時起到E時止, A/B/K 各負責某某系統的服務正常性檢查
....

這個清單可以很長,但是清楚揭示所有人在大流量時應要負責的工作,送出之後即便有問題,也可以就事實來討論。以軟體團隊而言,check-list必然包含三件事情 (1) 直接負責人,通常只能是一個人名 (2) 時間:預計完成時間 (3)產生的結果:衡量這件事情如何被完成。