這是一本教你如何成為軟體技術主管的書籍,從一開始告訴你身處非主管身份要如何被管理講起,再到小主管最後成為高階主管以及如何塑造公司文化。
其中某些部份在不同職級都會被一再強調,最重要的我想就是「一對一會談」。作者非常推崇主管要與成員一周一次會談,會談不應該是單純閒聊或是進度報告。作者認為主管應該要基本了解成員的生活狀況,至少他們在生活上碰到問題時要能發現,但不需要成為談心的朋友。作者提出了多種「風格」的一對一會談,但我覺得重點應該還是「團隊目標」與「成員職涯」。作者認為身處在非管理職時候就應該在會談時與主管直接溝通自己的升職規畫以及需要達成的目標。
到了中階主管時,作者因為是工程師背景故特別強調持續寫code的重要性。作者認為至少要能了解公司整個coding到commit的流程,不然很有可能無法提早發現許多重要的問題。如果沒辦法自己commit code至少要做code review或嘗試pair programming。另外他也建議在工作之外參與side project、寫blog或是參加技術類社群活動。
如同許多矽谷工程師愛強調「影響力」書中也不時提到,但這個詞對我來說還是難以理解。許多時候問題不只有一種解法,資源配置反而是最大的困難,但公司紅人總是能用「漂亮的話語與揣測上意」來引導計劃的走向,至少目前為止我還是很厭惡這種文化。作者也多次批評技術咖(alpha geek)以及「有能力的混蛋」(brilliant jerk),強調合作與團隊貢獻的重要。但我心中卻相當矛盾,在個人的經驗中,反而這些懂細部技術的人而很容易領導團隊計劃,但我一直看不懂其軟體架構以及UX的成份。這部份是我一直想精進但仍抓不到重點的地方。
隨著職級提升,主管可能無法了解其團隊所有用到的技術,作者又再次強調「保持好奇心」的重要。另外提出一些保持技術敏銳度的方式:
- 閱讀程式碼
- 請工程師向你解譯一個未知的領域
- 參加事後檢討會議
- 跟上軟體開發流程的業界趨勢
- 經營公司外部的技術人脈
- 學無止境:關說文章或部落格、聽演講。
到了高階主管的部份就真的是我超出我目前理解的部份。作者分析各種高階主管的職稱,發現不同公司的同樣頭銜可能工作內容差異反常大,所以他以職責分類成下面部份:
- 研發:可能同時負責擬定技術策略,也可能是純粹尋找新穎技術發想的純技術角色。
- 技術策略/願景規劃:策略規劃者通常不考慮研發潛力,憑藉商業與科技趨勢作為決策依據。
- 組織規劃:執嘗人事管理與組織結構。通常也兼任「執行」職責。
- 執行:協調跨層級或跨部門的合作。他負責權衝專案的優先級。
- 對外形象大使
- 基礎設施與技術營運經理:關注成本控制、資訊安全或是可拓展性。
- 商務執行:平衡技術組織的內部開發需求與業務成長需求,並負責在大方向上決定專案的優先級。
作者認為CTO並非技術職位,也不是技術職涯的頂點,也不見得是公司裡最頂尖的工程師。不同公司的CTO背景以及工作內容差異很大,有的CTO並沒有負責執行或組織規劃,因為沒有直接管理團隊的權力,有可能成為虛位的精神領導甚至架空為吉祥物。
到了高階主管因為手下眾多,這時要做一對一會談絕不可能。到了這個位階作者反而強調如何董事會報告以及擬定策略,他強調各高層要專注在真正的北方(True North),有些「壞事」在特定情況下並無傷大雅,並不是不可調的風險:
- 單點故障
- 已知Bug和問題
- 無法承載高流量
- 丟失資料
- 發布未充份測試的程式碼
- 效能緩慢
上面的問題真是驚人!但作者認為高階主管應該定義自己的「真正的北方」,他認為可能選項為生產準備、擴展性、系統設計、架構、測試和語言選擇等最基本的技術決策。但你並不一定要自己做所有決策,必要時可以授權並加以指導,重點是要能靠智慧與經驗依「直覺」做出快、狠、準的決策。
作者在每章都會提供一個check list,我覺得非常受用,故將每篇分別節錄:
在發展職業生涯時,你可以思考一下這些問題:
- 你遇過好主管嗎?這位經理做過哪些令你覺得難能可貴的事情?
- 你通常多久和主管一對一開會?你會主動提及話題嗎?如果你的一對一會議只是進度報告,你能利用其他方式向主管報告工作進度嗎。
- 當你的生活發生重大事件時,你敢告訴主管嗎?你覺得主管對你這個人的瞭解有多深?
- 你的主管是否給予回饋?好的回饋?壞的回饋?或者從來沒有呢?
- 你的主管有沒有幫你訂定今年的工作目標?
準備接受指導關係之前,有些問題值得考慮:
- 貴公司是否推行實習專案?如果有的話,你是否願意指導實習生?
- 貴公司對於入職活動的做法有哪些?你會指派導師給新人嗎?如果沒有,你能向主管提議導師計畫,並且自願指導某人嗎?
- 你有遇過優秀的導師嗎?那人做了什麼讓你感到印象深刻?導師如何幫助你學習—-他或她教會了你什麼?
- 你有過失敗的指導關係嗎?為什麼不如人意?你能做從汲取哪些教訓,避免再度發生類似的失敗?
指術負責人:
- 你的公司有Tech Lead嗎?這個職位是否有明文記載的工作描述?如有,Tech Lead 有什麼條件要求?如無,你會如何定義這個角色?Tech Lead會如何描述他或她的角色?
- 如果你考慮成為Tech Lead,你準備好提升自己了嗎?你是否願意多花時間在程式碼之外的事情上?你對程式庫的知識與理解足夠帶領其他人的工作嗎?
- 你有沒有和主管討論過對於Tech Lead的工作期許?
- 你有沒有和優秀Tech Lead共事的經驗?他或她做了些什麼出色事蹟?
- 你有遇過令人喪氣的Tech Lead嗎?他或她做了什麼讓你感到沮喪不已?
管理個別成員:
- 你有沒有定期和下屬開一對一會議?
- 上一次和下屬討論他們的職涯發展是什麼時候?如果是三個月以前的事了,下次一對一會議時要不要試著再次提起這個話題呢?
- 上週你有沒有給予下屬回饋?上一次在團隊面前進行表揚是什麼時候?
- 某人上一次出現需要糾正的行為是什麼時候?你用了多少時間才給出改善建議?你是私下建議還是公司糾正?
- 你有沒有經歷過像在浪費時間的績效評估會議,你認為加入哪些東西能讓這個過程更有價值?
- 你收到過最有助益的績效回饋是什麼?這則回饋是如何傳達給你的?
- 你知道貴公司的人員升遷流程如何運嗎?假如不清楚,能請你帶你瞭解一嗎?
管理個單團隊:
- 身為團隊經理,你的新職責是什麼?為了給這些新責任騰出時間,你停止繼續做哪些工作,或者將哪些任務轉交給別人?
- 你有團隊的日常工作的瞭解有多少,比如程式碼開發,部署和維護?
- 你團隊將工作標記為完成的頻率有多高?
- 你上一次開發功能是什麼時候?最後一除debug是什麼時候?一上次和團隊成員搭擋一起解決開發中的困難是什麼時候?
- 你有沒有遇過某位成員為團隊帶來大量負面情緒的經驗?你預計怎麼解決這類問題?
- 你的團隊成員合作良好,相處融洽嗎?他們在會議上會笑臉以對嗎?聊天時會開些玩笑嗎?一起喝咖啡或共進午餐嗎?你們上一次坐下來不談工作是什麼時候?
- 你的團隊如何做出決策,你有分配決策責任的流程嗎,哪些決策必須由你來做?
- 你上一次審查已完成專案是什麼時候?專案有達成預期的目標嗎?
- 你的團隊瞭解他們手上專案的脈絡知識和重要性嗎?
- 你上一次縮小專案範圍是什麼時候?你如何決定哪些工作應該割捨?
管理多個團隊:
- 最後一次回顧你的行程表是什麼時候?你有沒有發現一些正在執行卻沒有為個人或團隊提供價值的工作嗎?回顧過去幾週的行事曆。看看接下來幾週的行程表。你完成了什麼?你希望達成哪些事情?
- 如果你還在編寫程式碼,這工作和你的行程有衝突嗎?你下班之後才有空寫嗎?讓你持續寫程式碼的動力是什麼?
- 你最近一次授權給團隊成員的任務是什麼?簡單嗎?複雜嗎?你授權的這個人處理起這個新任務的狀況還好嗎?
- 誰是團隊中的明日之星?你準備如何指導他們擔任更重要的領導力角色呢?你準備給他們哪些任務,承擔更多責任?
- 在你的團隊中,程式碼的編寫、發布和維護等流程運作順利嗎?上一次發生問題是什麼時候?發生了些什麼?當時團隊如何應對,在軟體開發流程中經常發生問題嗎?
- 上一次敦促團隊縮減專案範圍是什麼時候?你選擇砍掉功能、捨棄程式碼品質,還是犧牲兩者?你是怎麼下決定的?
- 上一欠在晚上八點或週末發送電子郵件是什麼時候?收件人回覆你了嗎?你有要求他們做出回應嗎?
管理經理
- 你有多常和跨層級下屬聊天?你和他們單獨約談,還是一群人一起見面?你會主動關心團隊嗎?你花多少時主動尋找關於團隊運作的蛛絲馬跡,還是你選擇被動接收?上一次參加團隊會議是什麼時候?
- 在不參考現有職位述文件的情況下,你寫下你的下屬「技術經理」的工作描述。
- 你們負責哪些任務?
- 如何評估他們的績效表現?
- 在你看來,哪些領域是成功的關鍵?
- 現在,請檢視你公司挪用的職位描述,在評估下屬績效時,你可能忽略了哪些地方?
- 最後,在心理快速回想一遍他們目前的工作表現。哪些地方需要指導和發展?在下次一對一會議中騰出時間討論這個問題。
- 假如你管理著一個超出技術舒適圈的領域,你通常多久關心一次這個領域,確保事情進展順利?你有沒有花點時間向這個領域的經理學習如何在這個職位角色上取得成功?在過去的三個月裡,你學到了什麼新東西,幫助你更理解那個團隊呢?
- 如果某個團隊明顯比其他團隊運作更加順暢,在他們的工作流程中你發現了什麼特殊之處?團隊成員的互動如何?他們的鋹管和其他主管相比,有什麼差異?團隊成員和主管的互動方式是什麼樣子?這位經理又是如何和你互動的呢?
- 你如何面試技術經理?你會花時間討論他們的個人理今和管理哲學嗎?你會邀請團隊與面過程,讓他面試可能的經理人選,還是讓他們置身事外?你會花時間和推薦人取得聯絡,瞭解候選人過去的工作情況嗎?
- 貴組織本季度的目標是什麼?今年的目標是什麼?你會如何結合產品目標和技術目標?團隊是否充分瞭解組織傳達的要求?
高階管理
- 到了這個階段,協助你個人成長的教練和指導極有可能來自公司外部。你的頂頭上司不再是主管,而是大老闆。你有尋求企業教練的幫助嗎?即便公司沒有報銷指導費用,這也是一項非常值得的投資。你為你付錢請他或她聽你說話,不像和朋友訴苦取暖,教練能給你專業的指導,並且不拐跡抹角地給你回饋。
- 除了教練之外,你有經營公司之外的同儕網路嗎?你認識行業裡的其他高階領袖嗎?同儕團體能幫助你認識這份工作在其他公司會是什麼樣子,這裡是你分享經驗和獲得建議的好地方。
- 你有沒有特別景仰或敬佩的技術領袖?你欣賞哪些地方?你能做些什麼來效仿?
- 回想一下,最近一次為團隊改變優先級是什麼時候。結果如何?哪些地方進展順利,哪些地方受阻?你如何向團隊溝通誕客變動/也們的反應又是如何?如果能重來一次,你想要改變什麼?
- 在可預見的未來裡,你對業務的瞭解有多深?你夠瞭解有助於實踐目標的技術策略嗎?團隊關注的關鍵領域是什麼,是能力開發進度、效能、技術革新、還是人才招募?哪些領域需要持續努力,才能實踐企業目標技術和業務發展的瓶頸和機會在哪裡?
- 你和公司高階領導層的其他成員關係好嗎?哪些人你處得來,哪些處得不來?你能做些什麼努力,改善糟糕的關係?
- 你對團隊成員注動的優先級有多了解?你認為他們瞭解你看重哪些優先級嗎?
- 假如我問你的團隊,你和哪些高階領袖相處融洽,和哪些人水火不容,他們能毫不猶豫地告訴我嗎?當CEO或領導團隊做出你不同意的決策時,你有能力將你的不同意拋諸腦後,運用專業和理性去支持公司其他人所做出的決策嗎?
- 你是團隊的好榜樣嗎?如果人們模仿你的行為,你會感到高興嗎?當你旁聽團隊會議時,你傾向主導會議對話,還是更願意聆聽和觀察?
- 最近一次和不常交談的人聊到工作以外的個人生活是什麼時候?上一次有人寫信告假,你有沒有多花一分鐘回覆,祝他或她早日康復?
- 你希望資深工程師在評估工作和決策時考慮哪些核心準則?假如你的工作更偏向組織管理,你希望經理們在領導團隊時遵循哪些基本的管理原則?
塑造文化
- 組織的現有規範是什麼?有哪些實際作法?這些規範或做法是否有白紙黑字地記錄下來?你上次審視這些規則是什麼時候?
- 公司是否有一套價值理念?內容是什麼?你的團隊是否展現出這些價值?
- 組織中有明確的職涯發展路徑嗎?現有升職規範是否忠實地反映出團隊的現狀?抑或是反映出團隊的未來願景?如果組織欠缺職涯發展路徑,你打算如何設計這套職涯規範?
- 在團隊中,最讓你感到憂心的風險是什麼?對於公司的最大風險是什麼?在不對團隊加諸無謂的規範與官僚作風的前提下,你該如何降低這些風險?