如何成爲一名優秀的技術Leader?

我是架構精進之路,點擊上方「關注」,堅持天天爲你分享技術乾貨,私信我回復「01」,送你一份程序員成長進階大禮包。程序員

 

相信大部分人對於團隊管理和技術管理在認知上,存在必定隔閡,無形之中會將【管理崗】和【技術崗】進行對立比較。安全

在國內一些大研發團隊,通常會同時設置兩類角色來更好地作團隊運行管理。微信

  • 研發經理/總監,主要負責團隊價值輸出和業務目標管理;網絡

  • 技術Leader/架構師,主要負責技術攻堅和技術架構落地。 架構

本文結合本人自身一些淺薄的技術管理認知,跟你們聊一下如何成長爲優秀的技術Leader。框架

 

是否須要一個技術Leader?

首先,第一個問題:咱們是否須要一個技術Leader?ide

也許會有人反對這個角色,並以爲優秀的開發人員能夠本身作出決策,並作好部分技術Leader的工做。工具

即便存在以上這些完美的狀況,在團隊成員間公開談論彼此,在達成一致贊成的解決方案以前討論利弊,這些種種工做vs利益間微妙的平衡,或許須要技術Leader 這樣的一個角色。學習

我以爲不該該關注於這個角色是否應該存在,而最好將重點放在其職責可能會帶來的收益上。測試

技術Leader 與每一個領導職位同樣,糟糕的領導者會使事情變得更糟。

技術Leader 須要具有什麼能力?

能夠明確的一點是: 一個合格的技術 Leader 有責任來幫助團隊的進步

做爲該角色的人員,他應該具備很是不錯的技術視野/經驗以及良好的溝通技巧。他對項目或產品的技術方向負責(準確地說是對結果負責),並做爲跨團隊溝通的首選人。

對於大中型團隊而言,Tech Leader 主要的職責包括:

1)指導項目的技術設計及制定開發規範

例如。咱們將使用什麼技術,咱們將如何交付項目,咱們將使用哪些模式等。

2)分析風險和跨功能要求

分析風險意味着下降風險:咱們能夠選擇某種方法,仍是說有太多未知數。

在承擔必定風險時,對項目的影響是什麼?例如。介紹您在會議上看到的新技術。

3)指導/教練經驗不足的新人

極可能在你的團隊中有不一樣的經驗的同窗。一旦談到項目成本,考慮匹配技能和經驗時,它就變得頗有意義。所以,須要重視對經驗不足新人的培養。

4)關注跨團隊協助與溝通

一個項目團隊包含各個相關聯角色羣體,研發、測試、產品、運營甚至需求業務方等等,其餘角色同窗可能在技術上不如開發人員,他們將使用不一樣的語言,技術Leader 將須要關注於這一點,並作好協調與溝通。

如何作一個合格的技術Leader?

正如職位所描述的那樣,技術 Leader是一份包含技術和管理雙重責任的工做,準確地說應該是:先技術,後領導。

那在實際工做過程當中,須要注意作好哪些點呢?

1)倡導技術創新與變革

倡導技術創新與變革,創建積極的思惟模式。當一個流程緩慢或者繁瑣時,要嘗試去改變它,使其變得更好。這樣作的一種方法是使用 OODA 循環:

  • 觀察(Observe)

  • 定位(Orient)

  • 決定(Decide)

  • 行動(Act)

爲了正確觀察緩慢或繁瑣的流程細節,最好的方式就是成爲其中的一員(例如:著名的現場主義),並體驗與團隊中其餘人同樣的痛苦。

你應該採起一種不斷改善某種情況的心態。日本稱之爲「Kaizen」(改善法,其起源於豐田公司在生產、機械和商務管理中持續改進的管理法)。

在咱們的研發過程當中,但願改進的是團隊的效率和樂趣,以及軟件項目的最終交付。

2)坦然面對失敗與成功

  • 事情有可能會失敗,不用過度擔憂失敗

技術方案落地可能失敗,項目開發建設可能失敗、部署上線可能失敗、系統重要監控點可能被遺漏、系統宕機崩潰可能會發生。

若是你已經爲失敗作好了十足的準備,那麼應該會比較容易應對。

當事情失敗時,不要尋找責怪的人!你是技術 Leader,有承擔的責任和義務。

花費你的精力來解決手頭的問題並從中吸收教訓。固然,不要在一個坑裏摔倒兩次,若是你須要經歷兩次相同的失敗來解決同一個錯誤,那麼你應該是作出了錯誤的決定。

從失敗中汲取教訓,將塑造您的方向,並在將來作出更好的決策。

  • 學會爲成功喝彩

當團隊有成就感時,成員們會感覺到快樂,同時積極的情緒會讓後面的工做盡量作到最好。慶祝階段的小成就很是重要,例如成功地衝刺或完成的功能。

當有人想出一個新想法時,也許是他們在會議上看到的一種方法或框架,若是這個想法得以實現,重要的是任何帶有新想法的人都應該被承認。這是很是有益的,將帶來更多的合做,創造力和開箱即用的思惟。

形式也許沒那麼重要,一頓小午飯,也許是一個團隊建設都是一個很好的想法,一樣能夠凝聚一個快樂和積極的團隊。

3)保持技術

技術主管有不少非編碼職責,但不要忽視實踐技術活動是很是重要的:

  • 編寫代碼,進行概念驗證,定義接口等,根據團隊的成熟程度,您的參與會有所不一樣。

  • 進行代碼CR,並審覈您的代碼。當新人蔘與項目時,我傾向於進行大部分代碼審查,並且我會很是嚴格:我會編寫致使 NullPointerExceptions 的測試,我會要求他們遵照慣例,使用單一責任原則,當心包裝和命名等。我還將詳細說明這些評論的推理和所作出的選擇。這可能會挑戰現有的工做方式並提升代碼庫的成熟度。他們必須作的更改(審覈後)將很快變得更少。

  • 確保技術願景存在,並由團隊共享。這一願景須要符合客戶的需求。客戶需求將致使重要的限制,例如。關於重用(一個一次性的營銷項目與多年的企業努力……但要注意這種類型的約束也可能會改變)。分享您與團隊實現這一願景的方式,將會對其採用產生巨大影響。嘗試讓團隊參與到技術願景中。並確保他們知道他們如何爲實現這一願景作出貢獻。

  • 密切關注代碼的演變:一段時間後,您所作的實際編碼量可能會更低,但您須要及時瞭解代碼的演變。您須要瞭解系統及其技術限制。

大多數(若是不是所有)開發人員將樂於定義框架,提倡某些方法等。可是,一些非功能性需求(也稱爲質量屬性)(如網絡,安全性,部署和一致性)常常被忽視。

4)良好的時間管理

做爲技術Leader,您應始終爲您的團隊服務;提問、支持、指導或作出決定。

  • 技術設計 爲團隊(包括您)準備工做。確保清楚須要實施什麼以及如何實施。這一般會考慮不少質量屬性,如網絡,安全性等。

  • 業務:與客戶交談,查看他們的需求和目標,並將這些與項目的技術願景相匹配。

  • 項目管理:定義用戶故事,估算,跟進。

  • 代碼:編寫代碼,進行代碼審查等。

對於每一個人和每一個項目,分配的百分比顯然會有所不一樣。查看實際狀況也很重要,由於這些能夠幫助您瞭解所花費的時間。

5)成爲團隊導師

  • 調解員:技術主管應該是調解員,便於討論。當人們有不一樣的意見時,你應該接受這一點。由於這意味着他們足夠關心某些事情來討論它。最後,咱們朝着同一個目標努力。每一個人均可以從別人的意見中學習。得到團隊的意見並嘗試達成共識。若是達成共識真的不可能而且須要作出決定,那就作出決定。不決定老是會引起更多的討論。

  • 導師:技術主管應該是開發人員的導師,當老師。當您查看代碼或解釋某些約定時,請務必清楚地解釋您爲什麼以特定方式執行某些操做的緣由。

  • 有效的受權:一段時間後,您的團隊將採用某些最佳實踐,而且須要較少(嚴格)的審覈或更多人將進行審覈。在這一點上,您還能夠向更多開發人員提供用戶故事的全部權。經過將全部權轉讓給開發人員,他們將很是積極地作好工做。技術主管不該該試圖承擔全部責任。技術主管須要確保某人承擔責任。

  • 匹配目標:將開發人員的我的目標與項目和組織的更大目標相匹配。這是專門針對性的動態指導。動態,由於目標能夠改變。在匹配目標時,溝通很是重要:它會讓人感到受到重視。

  • 針對小組進行優化:團隊中的我的很是重要,可是當難以找到共識時,您應該關注的是團隊。合做良好的團隊將表現得更好,表現良好的團隊成員是快樂的成員。

一個好的技術 Leader:

  • 知道何時給予輸入

  • 知道什麼時候作出決定

  • 知道何時退後一步,讓團隊得到更多的全部權。

分擔責任,給予全部權,但同時要保持負責。

6)學會作評估

霍夫施塔特定律:即便考慮到霍夫施塔特定律,它也老是比你預期的要長。——Douglas Hofstadter

項目工時評估很難,若是你常常這樣作,你會變得更好,但你仍然會有可能犯錯。

做爲 Tech Leader,可能須要在團隊實際需求開發以前進行預估。更便於瞭解實現成本及優先級的安排調整。

爲了達到這個目的,我建議使用三點估計,作一個樂觀的(Optimism 簡稱:O),一個最好的猜想(Best Guess 簡稱:BG)和一個悲觀的估計(Pessimism 簡稱:P),並使用這個公式:

(O + 4BG + P)÷ 6 //獲得加權平均值

估計表明了團隊執行的能力;不是你本身實施的能力。還要確保,你知道你的可交付成果。這可能不止包括代碼和部署工具,例如:代碼CR,接口文檔等等

掌握評估是一輩子的旅程,它會讓你不同凡響。合做方會將你與專業、穩定和高質量的工做聯繫起來。

7)擅長與外部溝通對接

非技術利益相關者使用的語言可能與開發團隊的語言是不一樣的。技術 Leader 必須找到一種以非技術人員能夠理解的方式交流思想的方法。

這在 DDD (領域驅動設計)世界中,這意味着創建一種鏈接上下文通用語言。

與客戶密切合做,嘗試從他們那裏檢測需求,並不斷地將他們的需求與正在進行的實施相關聯。

做爲技術 Leader,在外部溝通合做中做爲關鍵聯繫人,與其餘技術Leader 的溝通協做一樣也不可或缺。

有不少理由將本身與其餘技術Leader 聯繫在一塊兒。

  • 在我的層面上,它提供了向同行學習的機會:他們如何爲團隊提供意見,以及他們如何在角色的不一樣職責之間分配時間。

  • 在組織層面,應該考慮到是否有明確理解的整體目標。跟進技術架構設計的落地很是重要,以確保您的產品可以很好地與其餘組件一塊兒使用,並確保更大的系統保持一致。有可能依賴於其餘團隊的產品或其餘團隊的成員,要確保在編制項目排期時考慮到這些因素。

這種協調在較大型的組織或客戶時是一個真正的問題。投入一些時間是必要的,以免超出您的控制範圍的意外。

總結

做爲技術Leader,也許除了以上列舉的幾項內容以外,還存在其餘不少軟性的素質能力。

欲求木之長者必固其本, 欲求流之遠者必浚其源:

  • 業務感知的背後, 是對商業社會的理解, 是對需求的洞察;

  • 人員培養激勵的背後, 是對人的理解, 是對人性的洞察。

擁抱文化差別,多樣性很是寶貴。全部人都不一樣,過着不一樣的生活。

總結就是: 每一個人都是團隊的一員,應該重視每一個人的意見

由於你團隊的力量不是單個成員的才能,而是他們的合做,堅韌和相互尊重的總體效能的體現。

 

- END -


做者:架構精進之路,專一軟件架構研究,技術學習與我的成長,關注並私信我回復「01」,送你一份程序員成長進階大禮包。


 

往期熱文推薦:


 

「技術架構精進」專一架構研究,技術分享

 

Thanks for reading!

本文分享自微信公衆號 - 架構精進之路(jiagou_jingjin)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索