週三下午兩點,阿偉的手機震了一下。
小王傳來訊息:「阿偉,昨天那個客戶的訂單資料怪怪的,能幫我查一下嗎?有點急。」
阿偉看了一眼,回覆:「小王不好意思,現在剛好是我寫code的時間。你可以先找業務部的系統管理員處理,如果真的解決不了,下午五點後我們再討論。」
他放下手機,有點得意。自從學會保護小隊的專注時間後,他已經成功擋掉好幾次小王的「假緊急」了。
很好。接下來三個小時沒有會議,他終於可以好好寫點code了。
他戴上耳機,打開IDE,深吸一口氣。
二十分鐘後,Slack跳出訊息。
小姜:「阿偉學長,這個第三方API的timeout設定我不確定要設多少,你覺得呢?」
阿偉的手指停在鍵盤上。
他看著那個訊息,腦中閃過剛才拒絕小王的畫面。
可是...小姜是我們小隊的欸。而且這種設定如果搞錯了,可能會影響系統穩定性。我身為小隊長,應該要幫他把關吧?
「等我一下。」他回覆。
然後花了十五分鐘跟小姜討論。其實小姜自己已經查過文件了,也有初步想法,只是想確認一下。阿偉給了建議,順便幫他調整了一些參數。
好,繼續寫。
又過了半小時,小林走到他旁邊。
「學長,這個新功能的資料結構設計,我想了兩個方案,你可以幫我看一下哪個比較好嗎?」
阿偉嘆了口氣。他剛才明明跟小林說了,這是專注時段。但小林拿著兩個方案的草圖...看起來確實有認真思考過。
「好啦,我看看。」
他走到小林的位子,發現兩個方案各有優劣。他花了二十分鐘分析,最後幫小林選了一個,還順便改善了一些細節。
回到座位,已經快五點了。
阿偉盯著螢幕上那個寫到一半的function,突然覺得很荒謬。
他剛才成功擋住了小王,卻擋不住小林和小姜。
這三個小時到底幹了什麼?
晚上,咖啡廳。
阿偉一坐下來就開始抱怨。
「我不是說好要保護大家的專注時間嗎?結果現在被消耗最慘的人是我自己。」他的聲音裡帶著一種無奈,「我感覺自己不是在當什麼小隊長,比較像是在當他們的保姆耶。」
「保姆?」我挑眉。
「對啊,」阿偉有點無奈,「而且你知道嗎?我發現其實小姜和小林,他們都有能力自己做決定啊。小姜明明已經查過文件了,也有初步想法,但還是要來問我『你覺得呢』。小林也是,他都已經想出兩個方案了,卻還要我幫他選。」
「那你有拒絕他們嗎?」
阿偉沉默了一下,「沒有。因為...我怕他們做錯決定啊。timeout設太短影響用戶體驗,設太長又可能拖垮系統。資料結構設計如果選錯方案,以後要重構就麻煩了。」
他喝了口咖啡,「而且我現在身為小隊長,如果我沒有把關,到時候出問題可是我要扛耶。」
我看著阿偉,「所以你現在的邏輯,是覺得自己做比較快,所以就自己做囉?」
「對啊,這不是很合理嗎?」阿偉理所當然地說,「我十分鐘就能搞定的事情,如果要教他們可能要花半小時。」
「那如果下週他們又遇到同樣的問題呢?」
阿偉愣了一下。
「還是你再花十分鐘?」我繼續問,「下下週呢?下個月呢?」
「唉...」阿偉抓了抓頭髮,「你是說我這樣做,其實是在養成他們的依賴囉?」
「可不只是依賴而已,」我說,「你還在剝奪他們成長的機會。」
阿偉皺眉:「怎麼說?」
「你想想看,小姜的timeout設定問題,如果他自己權衡過效能和用戶體驗的取捨,下次遇到類似問題是不是就有判斷能力了?小林的資料結構設計,如果他自己分析過兩個方案的優劣,他的架構思維是不是就會進步?」
「可是...」阿偉有點掙扎,「萬一他們判斷錯誤呢?timeout設太長系統會被拖垮,資料結構選錯以後要重構超麻煩的耶。」
「對,」我點點頭,「但這就是成長的過程啊。你還記得你以前還是菜鳥的時候嗎?」
阿偉想了想,苦笑:「記得啊。我那時候為了解決一個segfault,整整debug了兩天。」
「那你覺得,這兩天算是浪費嗎?」
「也不算是…」阿偉搖頭,「因為那次之後,我對記憶體管理的理解,一下子就清楚很多了。」
「你看,」我說,「如果當時有個學長,每次都從天而降直接幫你把code改好好,你現在還會有這個能力嗎?」
阿偉沉默了。
「阿偉,現在的問題不是你會不會帶人,」我說,「而是你把『帶人』理解成『代勞』了。」
咖啡廳裡的音樂換成了輕柔的鋼琴曲,阿偉心不在焉地攪著咖啡。
「可是我就是會擔心啊,」他終於開口,「如果我放手讓他們自己做,萬一他們做出來的東西品質很差怎麼辦?到時候出問題,老楊還是會來找我負責啊。」
「所以你擔心的,是『品質』囉?」
「對,」阿偉很坦白,「我不想變成那種為了趕進度,就推出一堆技術債的爛主管。我還記得以前,我最討厭的就是那種只會妥協的主管。」
我點點頭,「我懂你的擔心。但我問你,你確定這樣做,真的能『保證品質』嗎?」
「至少我自己寫的code,我有信心啊。」阿偉拍著胸脯。
「那小林和小姜的呢?」我問,「你都把時間拿去下指導棋了,搞得連自己開發的時間都沒有,那你哪來的時間看他們的code?」
阿偉愣住了。
「你想啊,」我說,「你花三小時處理他們的瑣碎問題。於此同時,什麼都沒學到的小林和小姜又各自下去寫新功能,但因為你什麼都不放心、什麼都要沾一點,結果重要的部分你也沒時間看了,自己的核心功能又寫不完,最後反而埋下更大的技術債。」
「天哪...」阿偉的臉色變了,「我以為我在控制品質,其實反而是在放任風險孳生嗎?」
「對。這就是微觀管理的陷阱,」我說,「如果把時間都花在小事上,反而就沒有心力關注真正重要的事情了。」
阿偉低著頭,說不出話來。
「往好處想,至少我們在很早期就發現問題啦。」我安慰著阿偉。
「那…我現在該怎麼做呢?」
「我記得之前你有跟老楊講好,要保留讓你專心寫code的時間,對吧?」
「對。那時候我跟他約定,希望每週能留至少三天的時間給我。」
我拿出筆記本遞給阿偉,「好,那你把這禮拜你每個工作所用的時間,列給我看看。」
阿偉遲疑了一下,開始寫著…
管理時間
- 跨部門窗口、對外溝通:0.5天
- 帶 junior、糾正他們的做法、處理與解答junior的瑣碎問題:3.5天
技術時間
- 設計與修改架構:0.5天
- 撰寫核心功能、debug:0.5天
- code review:… 0天
「靠…我還沒寫到code review這一條,一個禮拜5天就全用完了…」
「怎麼樣,你看出問題了嗎?」
「嗯。我幾乎把全部的時間,都灌在小林跟小姜身上了。」
「那你還記得,花在他們身上的3.5天,哪些是屬於可以讓他們成長的『指導』、哪些是把他們的事情搶來做的『代勞』嗎?」
阿偉搖搖頭,「沒有辦法…當時我沒想這麼多,所以都混在一起了。」
我接過阿偉手中的本子:
修改前 (全部混在一起)
- 帶 junior、糾正他們的做法、處理與解答junior的瑣碎問題:3.5天
修改後 (拆分指導與代勞,差別在是否能使junior得到成長)
- 目標總花費時間:1天
- 指導:???天
- 代勞:???天
「你看,」我說,「像這樣分成『指導』與『代勞』兩種,我們之後可以盡量只把時間花在指導上,而代勞要盡力避免。這樣長久下來,小林跟小姜的能力才能得到提升,你要花在他們身上管理的時間,就可以有效降下來了。」
阿偉盯著那張圖,「可是...我還是會擔心他們做不好啊。」
「嗯…這裡面的關鍵不是『不管他們』,」我說,「而是建立一個機制,讓你可以在『適度放手』的同時,還能『控制風險』。」
「你還記得學過的以前小陳的求助吧?。」我問。
「記得啊,」阿偉點頭,「就是要先問清楚狀況,再決定怎麼幫忙嘛。」
「對。但現在我們可以把這個邏輯升級,用在培養Junior上。」我說,「還有,我們可以利用之前在知識分享學到的概念,讓小林和小姜把學到的記錄下來,並納入Definition of Done。」
我把筆記本翻到下一頁,開始寫:
授權的三個關鍵:
1. 向人求助前的義務 (當Junior來求助時,要求他們先回答):
- 你具體遇到什麼問題?
- 你試過哪三種解決方法了?
- 你覺得為什麼這些方法沒用?
2. 設定品質護欄:
- 建立共同的基本品質規範
- 遇到新問題?解決後要更新FAQ
- 這樣下次其他人遇到同樣問題,就有參考資料了
「咦,你前面不是寫『三個關鍵』嗎?怎麼只有兩個?」
「最後一個」我說,「是要建立一個『當責』(accountability) 的機制。」
「當責?」阿偉疑惑地問。
「簡單來說,當責就是對自己的決定和行動負責,」我解釋道,「不是把自己的問題丟給別人,也不是被動地等別人告訴自己該怎麼做,而是主動思考、嘗試解決方案,並對自己做事的結果承擔責任。」
我拿起筆,又補上了第3點:
3. 建立當責原則
- 明確告訴你的小隊:「當我授權你們做某些決定時,我代表我們小隊負起完全的責任。」
- 但也加上但書:「相對地,得到我的授權後,你也需要為自己工作的成果負起責任。」
「像這樣,對於整個小隊最後的成敗,是由阿偉你負責的。對吧?」
阿偉點點頭。
「那麼,對小林跟小姜來說,他們也需要對自己個人的工作成果,負起相應的責任。」
「所以」阿偉若有所思,「我們的目標是讓小林和小姜學會當責,而不是什麼事都依賴我囉?」
「沒錯,」我點點頭,「這個機制能讓他們培養自主解決問題的能力,同時你還保留了最終把關的角色。」」
阿偉看著那三點,眼睛慢慢亮起來,「所以...這其實不是在強迫我自己,去接受小林和小姜青澀的工作品質,而是去建立一個流程,讓他們能在我設定的護欄內,將自己逐步成長到80分、90分囉?」
「沒錯!」我說,「而且你有發現嗎?這個機制其實也在保護你的時間。」
「怎麼說?」
「當Junior知道來找你之前,他必須先試過三種方法,」我解釋,「他們就會開始學會自己思考、自己找資料。那些其實他能自己排除的小障礙,就會在這個階段被過濾掉。」
「而來找你的問題,」我繼續說,「就會是那些真正需要你經驗和判斷的問題。這時候你的指導才有價值,而不是在浪費時間解釋timeout怎麼設了。」
阿偉若有所思地點頭。
「而且你想想看,」我說,「當他們開始更新FAQ、記錄解決方案時,整個小隊的知識庫就慢慢建立起來了。這不就是你之前在做的事情嗎?現在我們只是把這個習慣,進一步擴散到你們小隊而已。」
「對欸,」阿偉說,「這樣的話,我就不是在犧牲品質,而是在提升整個小隊的能力了。」
「沒錯。而且最重要的是,」我看著他,「你必須承諾,授權後的錯誤由你承擔。」
阿偉愣了一下,「這...責任很重吧?」
「當然重,」我說,「但這就是領導者的職責啊。你還記得那時候,你怎麼說服老楊讓你重構系統的嗎?你跟他說,如果重構出問題責任你扛,對吧?」
「對。我那時候確實是這樣說的。」
「那你想過,老楊是拿什麼來答應你的呢?」
阿偉停了一下,「喔~ 我懂了!老楊授權我可以做重構的同時,他也在為他授權給我的這件事負起責任,對吧?」
「沒錯!」我說,「現在也一樣。當你願意為當小林和小姜的後盾、給予他們信心時,他們才會真正信任你給的授權,才敢放手去嘗試喔。」
咖啡廳裡的人潮散去了不少,阿偉拿著手機繼續做筆記。
他停頓了一下,「你知道嗎,我突然意識到一件事。」
「什麼?」
「以前我總是希望自己的code可以達到100分的完美,」阿偉慢慢地說,「但現在我的職責已經不一樣了。我要追求的應該是在『風險可控』的範圍內,讓我們小隊的產出最大化。」
「你覺得,這代表什麼呢?」
「這代表,」他深吸一口氣,「我必須接受他們會犯錯。但只要這些錯誤是在我設定的安全護欄內、是可以從中學習的,那就是必要的成本。」
他看著我,眼神裡有種釋然。
「看來你終於理解了。」我笑了。
「而且,我也想通了一件事。」阿偉嘆了口氣,「如果我一直當小林和小姜的保姆,就真的會沒時間碰code,這樣很快我就會生疏了。到時候即使我想回去寫code,也回不去啦。」
他苦笑,「所以適度放手,其實也算是在保護我自己的未來吧。」