天天看點

如何成為優秀的技術主管?你要做到這三點

如何成為優秀的技術主管?你要做到這三點

阿裡妹導讀:技術主管,又叫「技術經理」,英文一般是 Tech Leader ,簡稱 TL。随着工作經驗的不斷積累,能力的不斷提升,每個人都有機會成為Team Leader。然而在機會到來前,我們必須提前做好準備,對TL的工作職責有一定了解。當然,這也會為當下更好地配合TL工作打下基礎。

今天,阿裡巴巴進階技術專家雲狄将結合自己多年的經驗,從開發規範、開發流程、技術規劃與管理三個角度出發,分享對技術TL這一角色的了解與思考,歡迎一起探讨交流。

「技術主管」是開發團隊中的某位程式員需要對一起建立系統的整個開發團隊負責時所承擔的角色。通常他既要對最終傳遞的軟體系統負責,另外也會像一個程式員一樣去開發實作系統。

一個技術主管的 60% ~ 70% 的時間可能花在了開發任務分解配置設定、開發實踐、技術架構評審、代碼稽核和風險識别上,而餘下的 30% ~ 40% 的時間則花在為了保障系統按時傳遞所需的各種計劃、協作、溝通、管理上。和團隊管理者不同的是,技術主管的大部分管理工作都是針對具體研發任務和技術事務的。

接下來基于我在技術TL這個角色上,在開發規範、開發流程、技術管理與規劃等方面我的一些心路曆程,和大家共勉。

開發規範

我當時負責的業務是集團收購一家子公司的業務,在整體技術标規範上與集團的技術标準存在很大的差異。開發規範可以說是我來到這個團隊幹的第一件事,我當時面對的問題是API接口格式混亂,沒有标準的RPC服務化,代碼沒有統一标準的開發規範,技術架構元件非标準化等一系列問題,作為一名業務上的新人,我第一時間制定了一套相對标準、全面的技術開發規範,邊寫代碼邊梳理開發規範,引領團隊走向統一标準化開發道路。

針對團隊研發規範暴露的上述問題,主要制定了如下規範:

命名規範

我自己非常注重搭建項目結構的起步過程,應用命名規範、子產品的劃分、目錄(包)的命名,我覺得非常重要,如果做的足夠好,别人導入項目後可能隻需要10分鐘就可以大概了解系統結構。

具體規範包括包命名、類的命名、接口命名、方法命名、變量命名、常量命名。

統一IDE代碼模闆

約定了IDEA/Eclipse IDE代碼的統一模闆,代碼風格一定要統一,避免不同開發人員使用不同模闆帶來的差異化以及代碼merge成本。使用IDEA的同學可以安裝Eclipse Code Formatter插件,和Eclipse統一代碼模闆。

Maven使用規範

所有二方庫、三方庫的版本統一定義到parent pom裡,這樣來所有業務應用工程統一繼承parent pom裡所指定的二方庫、三方庫的版本,統一架構與工具的版本(Spring、Apache commons工具類、日志元件、JSON處理、資料庫連接配接池等),同時要求生産環境禁用SNAPSHOT版本。這樣以來更新通用架構與工具的版本,隻需要應用工程更新parent pom即可。

代碼Commit規範

基于Angular Commit Message規範生成統一的ChangeLog,這樣一來對于每次釋出release tag非常清晰,Mac下都需要安裝對應的插件,IDEA也有對應的插件,具體可以參考阮一峰老師的《Commit message 和 Change log 編寫指南》。

此刻忽然想起Linus面對pull request裡的騷操作所發的飚:

Get rid of it. And I don’t ever want to see that shit again. ——Linus

代碼的commit的規範對團隊非常重要,清晰的commit資訊生成的release tag,對于生産環境的故障復原業非常關鍵,能夠提供一些有價值的資訊。

如何成為優秀的技術主管?你要做到這三點

統一API規範

統一Rpc服務接口的傳回值ResultDTO,具體代碼如下:

如何成為優秀的技術主管?你要做到這三點

success代表接口處理響應結果成功還是失敗,errorCode、errorMsg表示傳回錯誤碼和錯誤消息,module表示傳回結果集,把ResultDTO定義到common-api頂層二方庫,這樣以來各個應用不需要來回轉換傳回結果。

Http Rest接口規範約定同ResultDTO相差無幾,需要額外關注一下加解密規範和簽名規範、版本管理規範。

異常處理規範

異常處理不僅僅是狹義上遇到了Exception怎麼去處理,還有各種業務邏輯遇到錯誤的時候我們怎麼去處理。service服務層捕獲的異常主要包括BusinessException(業務異常)、RetriableException (可重試異常) 到 common-api,定義一個公共異常攔截器,對業務異常、重試異常進行統一處理,對于可重試的異常調用的服務接口需要保證其幂等性。

另外其他業務層有些特殊異常不需要攔截器統一處理,内部可以進行自我消化處理掉,根據場景對應的處理原則主要包括:

  • 直接傳回
  • 抛出異常
  • 重試處理
  • 熔斷處理
  • 降級處理

這又涉及到了彈力設計的話題,我們的系統往往會對接各種依賴外部服務、Api,大部分服務都不會有SLA,即使有在大并發下我們也需要考慮外部服務不可用對自己的影響,會不會把自己拖死。我們總是希望:

盡可能以小的代價通過嘗試讓業務可以完成;

如果外部服務基本不可用,而我們又同步調用外部服務的話,我們需要進行自我保護直接熔斷,否則在持續的并發的情況下自己就會垮了;

如果外部服務特别重要,我們往往會考慮引入多個同類型的服務,根據價格、服務标準做路由,在出現問題的時候自動降級。

推薦使用Netflix開源的hystrix容災架構,主要解決當外部依賴出現故障時拖垮業務系統、甚至引起雪崩的問題。目前我團隊也在使用,能夠很好的解決異常熔斷、逾時熔斷、基于并發數限流熔斷的降級處理。

分支開發規範

早期的時候源碼的版本管理基于 svn,後來逐漸切換到 git,分支如何管理每一個公司(在Gitflow的基礎上)都會略有不同。

針對分支開發規範,指定如下标準:

  • 分支的定義(master、develop、release、hotfix、feature)
  • 分支命名規範
  • checkout、merge request流程
  • 提測流程
  • 上線流程
  • Hotfix流程

雖然這個和代碼品質和架構無關,按照這一套标準執行下來,能夠給整個研發團隊帶領很大的便利:

減少甚至杜絕代碼管理導緻的線上事故;

提高開發和測試的工作效率,人多也亂;

友善運維處理釋出和復原;

讓項目的開發可以靈活适應多變的需求,多人協同開發。

統一日志規範

日志是産品必不可少的一個功能,具備可回溯性、能夠抓取問題現場資訊是其獨一無二的優點,尤其在生産系統上問題定位等方面具有不可替代的作用。

這裡着重強調一下針對異常的日志規範:

WARN和ERROR的選擇需要好好考慮,WARN一般我傾向于記錄可自恢複但值得關注的錯誤,ERROR代表了不能自己恢複的錯誤。對于業務處理遇到問題用ERROR不合理,對于catch到了異常也不是全用ERROR。

記錄哪些資訊,最好列印一定的上下文(鍊路TraceId、使用者Id、訂單Id、外部傳來的關鍵資料)而不僅僅是列印線程棧。

記錄了上下問資訊,是否要考慮日志脫敏問題?可以在架構層面實作,比如自定義實作logback的ClassicConverter。

正确合理的使用日志,能夠指引開發人員快速查找錯誤、定位問題,是以約定了一套日志使用标準規範,現在可以更多的參考《阿裡經濟體開發規約——日志規約》。

統一MYSQL開發規範

表的設計和 Api 的定義類似,屬于那種開頭沒有開好,以後改變需要花10x代價的,我知道,一開始在業務不明确的情況下,設計出良好的一步到位的表結構很困難,但是至少我們可以做的是有一個好的标準。

統一工具與架構

對開發過程中所用到的公共元件進行了統一抽象與封裝,包括 dao 層架構mybatis、cache 元件 jetcache、httpclien t元件、common-tools (公共工具),同時抽取出全局唯一ID、分布式鎖、幂等等公共元件,把以上公共元件進行內建到各個應用,進行統一更新、維護,這樣以來友善大家将更多的精力集中到業務開發上。

如何成為優秀的技術主管?你要做到這三點

開發流程

目前團隊的開發模式還是基于傳統的瀑布開發模式,整體開發流程涉及需求評審、測試用例評審、技術架構評審、開發與測試、驗收與上線,這裡主要基于TL的角度從需求管理、技術架構評審、代碼評審、釋出計劃評審幾個關鍵重點環節進行探讨,歡迎拍磚。

需求管理

美國專門從事跟蹤IT項目成功或失敗的權威機構 Standish Group的CHAOS Reports 報導了該公司的一項研究,該公司對多個項目作調查後發現,百分之七十四的項目是失敗的,既這些項目不能按時按預算完成。其中提到最多的導緻項目失敗的原因就是"變更使用者需求"。另外從曆年的 Standish Group 報告分析看,導緻項目失敗的最重要原因與需求有關。Standish Group 的CHAOS 報告進一步證明了與成功項目最密切的因素是良好的需求管理,也就是項目的範圍管理,特别是管理好項目的變更。

産品因需求而生,在産品的整個生命周期中,産品經理會收到來自各個方面的需求,但是每一個需求的必要性、重要性和實作成本都需要經過深思熟慮的分析和計劃,避免盲目的決定需求或者變更需求,這樣很容易導緻工作混亂,技術TL如果不能正确的對需求進行把控,會導緻整個項目偏離正确的軌道。

需求管理的第一步就是要梳理不同來源的需求,主要包括從産品定位出發、外部使用者回報、競争對手情況、市場變化以及内部營運人員、客服人員、開發人員的回報。首先技術TL對産品有足夠認知和把控,簡單來說就是我的産品是為了滿足哪些人的哪些需求而做,産品需求一定要根植于客戶的需求、根植于客戶的環境。每款産品必定有其核心價值,能夠為客戶創造更多的價值,基于此考慮往往能得到一些核心需求,摒除價值不大的需求。

需求管理中最重要的就是對發散性需求的管理,往往是以也會導緻産品在執行過程中不斷的變更或增加需求。由于人的思維是發散性的,是以往往在産品構思的過程中會出現各種新鮮好玩的想法,這些想法可能來自上司或者産品經理自己,但是這些想法往往都是和産品核心方向不相關的,但是由于這些想法能夠在當時帶來誘惑,是以這些不相關的需求會嚴重幹擾了技術團隊的精力,打亂或者延誤産品原本的計劃。同樣技術研發同學也需要建立對産品的深度思考,不要把自己定位成産品需求的實作者,同樣需要對需求負責。

很多時候需求的變更或增加是因為我們面臨太多選擇和想要的太多,沒有适當的控制自己的欲望,并以自己的喜好來決定需求,這些因素很容易導緻産品沒有明确的方向、團隊成員疲于奔命,但是卻沒有實際的成果。是以技術TL一定要能夠評估出重新審視産品和篩選需求的優先級,識别每一個需求的必要性、重要性和實作成本。通過深思熟慮給團隊明确方向并專注,聚焦資源的支配,確定團隊的精力都聚焦在産品的核心需求上。

技術架構評審

網際網路時代,大家提倡靈活疊代,總嫌傳統方式太重,流程複雜,影響效率,什麼都希望短平快,在扁平化的組織中,經常是需求火速分發到一線研發,然後就靠個人折騰去了,其實技術架構評審這同樣是一個非常重要的環節。架構評審或技術方案評審的價值在于集衆人的力量大家一起來分析看看方案裡是否有坑,方案上線後是否會遇到不可逾越的重大技術問題,提前盡可能把一些事情先考慮到提出質疑其實對項目的健康發展有很大的好處。

如何成為優秀的技術主管?你要做到這三點

基于架構評審,我們的目标核心是要滿足以下幾點:

1.設計把關,確定方案合格,各方面都考慮到了,避免缺陷和遺漏,不求方案多牛,至少不犯錯。

  1. 保證架構設計合理和基本一緻,符合整體原則。
  2. 維持對系統架構的全局認知,避免黑盒效應。
  3. 通過評審發掘創新亮點,推廣最佳實踐。

架構設計既要保證架構設計的合理性和可擴充性,又要避免過度設計。架構設計不僅僅是考慮功能實作,還有很多非功能需求,以及持續運維所需要的工作,需要工程實踐經驗,進行平衡和取舍。

架構評審需要以下幾點:

  1. 技術選型:為什麼選用A元件不選用B、C元件,A是開源的,開源協定是啥?基于什麼語言開發的,出了問題我們自身是否能夠維護?性能方面有沒有壓測過?這些所有問題作為技術選型我們都需要考慮清楚,才能做最終決定。
  2. 高性能:産品對應的TPS、QPS和RT是多少?設計上會做到的TPS、QPS和RT是多少?而實際上我們整體随着資料量的增大系統性能會不會出現明顯問題?随着業務量、資料量的上升,我們的系統的性能如何去進一步提高?系統哪個環節會是最大的瓶頸?是否有抗突發性能壓力的能力,大概可以滿足多少的TPS和QPS,怎麼去做來實作高性能,這些問題都需要我們去思考。
  3. 高可用:是否有單點的元件,非單點的元件如何做故障轉移?是否考慮過多活的方案?是否有資料丢失的可能性?資料丢失如何恢複?出現系統當機情況,對業務會造成哪些影響?有無其他補救方案?這些問題需要想清楚,有相應的解決方案。
  4. 可擴充性:A和B的業務政策相差無幾,後面會不會繼續衍生出C的業務政策,随着業務的發展哪些環節可以做擴充,如何做擴充?架構設計上需要考慮到業務的可擴充性。
  5. 可伸縮性:每個環節的服務是不是無狀态的?是否都是可以快速橫向擴充的?擴容需要怎麼做手動還是自動?擴充後是否可以提高響應速度?這所有的問題都需要我們去思考清楚,并有對應的解決方案。
  6. 彈性處理:消息重複消費、接口重複調用對應的服務是否保證幂等?是否考慮了服務降級?哪些業務支援降級?支援自動降級還是手工降級?是否考慮了服務的逾時熔斷、異常熔斷、限流熔斷?觸發熔斷後對客戶的影響?服務是否做了隔離,單一服務故障是否影響全局?這些問題統統需要我們想清楚對應的解決方案,才會進一步保證架構設計的合理性。
  7. 相容性:上下遊依賴是否梳理過,影響範圍多大?怎麼進行新老系統替換?新老系統能否來回切換?資料存儲是否相容老的資料處理?如果對你的上下遊系統有影響,是否通知到上下遊業務方?上下遊依賴方進行更新的方案成本如何最小化?這些問題需要有完美的解決方案,稍有不慎會導緻故障。
  8. 安全性:是否徹底避免SQL注入和XSS?是否有資料洩露的可能性?是否做了風控政策?接口服務是否有防刷保護機制?資料、功能權限是否做了控制?小二背景系統是否做了日志審計?資料傳輸是否加密驗簽?應用代碼中是否有明文的AK/SK、密碼?這些安全細節問題需要我們統統考慮清楚,安全問題任何時候都不能輕視。
  9. 可測性:測試環境和線上的差異多大?是否可以線上上做壓測?線上壓測怎麼隔離測試資料?是否有測試白名單功能?是否支援部署多套隔離的測試環境?測試黑盒白盒工作量的比例是怎麼樣的?新的方案是否非常友善測試,在一定程度也需要考量。
  10. 可運維性:系統是否有初始化或預熱的環節?資料是否指數級别遞增?業務資料是否需要定期歸檔處理?随着時間的推移如果壓力保持不變的話系統需要怎麼來巡檢和維護?業務運維方面的設計也需要充分考慮到。
  11. 監控與報警:對外部依賴的接口是否添加了監控與報警?應用層面系統内部是否有暴露了一些名額作監控和報警?系統層面使用的中間件和存儲是否有監控報警?隻有充分考慮到各個環節的監控、報警,任何問題會第一時間通知到研發,阻止故障進一步擴散。

其實不同階段的項目有不同的目标,我們不會在項目起步的時候做99.99%的可用性支援百萬QPS的架構,高效完成項目的業務目标也是架構考慮的因素之一。而且随着項目的發展,随着公司中間件和容器的标準化,很多架構的工作被标準化替代,業務代碼需要考慮架構方面伸縮性運維性等等的需求越來越少,慢慢的這些工作都能由架構和運維團隊來接。一開始的時候我們可以花一點時間來考慮這些問題,但是不是所有的問題都需要有最終的方案。

代碼評審

代碼品質包括功能性代碼品質和非功能性代碼品質,功能品質大多通過測試能夠去發現問題,非功能性代碼品質使用者不能直接體驗到這種品質的好壞,代碼品質不好,最直接的“受害者”是開發者或組織自身,因為代碼品質好壞直接決定了軟體的可維護性成本的高低。代碼品質應該更多的應該從可測性,可讀性,可了解性,容變性等代碼可維護性次元去衡量,其中 CodeReview 是保證代碼品質非常重要的一個環節,建立良好的 CodeReview 規範與習慣,對于一個技術團隊是一件非常重要核心的事情,沒有 CodeReview 的團隊沒有未來。

每次項目開發自測完成後,通常會組織該小組開發人員集體進行代碼 review,代碼 review 一般 review 代碼品質以及規範方面的問題,另外需要關注的是每一行代碼變更是否與本次需求相關,如果存在搭車釋出或者代碼重構優化,需要自行保證測試通過,否則不予釋出。

如何成為優秀的技術主管?你要做到這三點

CodeReview 我會重點關注如下事情:

  1. 确認代碼功能:代碼實作的功能滿足産品需求,邏輯的嚴謹和合理性是最基本的要求。同時需要考慮适當的擴充性,在代碼的可擴充性和過度設計做出權衡,不編寫無用邏輯和一些與代碼功能無關的附加代碼。

在真正需要某些功能的時候才去實作它,而不是你預見到它将會有用。 —— RonJeffries

  1. 編碼規範:以集團開發規約、靜态代碼規約為前提,是否遵守了編碼規範,遵循了最佳實踐。除了形式上的要求外,更重要的是命名規範。目标是提高代碼的可讀性,降低代碼可維護性成本。
  2. 潛在的BUG:可能在最壞情況下出現問題的代碼,包括常見的線程安全、業務邏輯準确性、系統邊界範圍、參數校驗,以及存在安全漏洞(業務鑒權、灰産可利用漏洞)的代碼。。
  3. 文檔和注釋:過少(缺少必要資訊)、過多(沒有資訊量)、過時的文檔或注釋,總之文檔和注釋要與時俱進,與最新代碼保持同步。其實很多時候個人覺得良好的變量、函數命名是最好的注釋,好的代碼勝過注釋。
  4. 重複代碼:當一個項目在不斷開發疊代、功能累加的過程中,重複代碼的出現幾乎是不可避免的,通常可以通過PMD工具進行檢測。類型體系之外的重複代碼處理通常可以封裝到對應的Util類或者Helper類中,類體系之内的重複代碼通常可以通過繼承、模闆模式等方法來解決。
  5. 複雜度:代碼結構太複雜(如圈複雜度高),難以了解、測試和維護。
  6. 監控與報警:基于産品的需求邏輯,需要有些名額來證明業務是正常work的,如果發生異常需要有監控、報警名額通知研發人員處理,review業務需求對應的監控與報警名額也是Code Review的重點事項。
  7. 測試覆寫率:編寫單元測試,特别是針對複雜代碼的測試覆寫是否足夠。

實際上維護單元測試的成本不比開發成本低,這點團隊目前做的的不到位。

針對以上每次代碼review所涉及到的經典案例會統一輸出到文檔裡,大家可以共同學習避免編寫出同樣的Ugly Code。

釋出計劃評審

涉及到10人日以上的項目,必須有明确的釋出計劃,并組織項目成員統一參加項目釋出計劃review,釋出計劃主要包含如下幾點:

1)明确是否有外部依賴接口,如有請同步協調好業務方;

2)釋出前配置确認包括配置檔案、資料庫配置、中間件配置等各種配置,尤其各種環境下的差異化配置項;

3)二方庫釋出順序,是否有依賴;

4)應用釋出順序;

5)資料庫是否有資料變更和訂正,以及表結構調整;

6)復原計劃,必須要有復原計劃,釋出出現問題要有緊急復原政策;

7)生産環境回歸測試重點Case。

技術規劃與管理

我在帶技術團隊的這些年,對團隊一直有一個要求,每周都要做系統健康度巡檢,未雨綢缪、晴天修屋頂,避免在極端場景下某些隐藏的bug轉變成了故障。

系統健康度巡檢

為什麼要把系統健康度巡檢放到技術管理裡,我覺得這是一個非常重要的環節。像傳統的航空、電力、汽車行業都要有一定的巡檢機制,保障裝置系統正常運轉,同樣軟體系統也同樣需要巡檢機制保障業務健康發展。

随着業務的不斷發展,業務量和資料量不斷的上漲,系統架構的腐蝕是避免不了的,為了保障系統的健康度,需要不斷的考慮對系統架構、性能進行優化。

系統的監控與報警能夠一定程度發現系統存在的問題,系統存在的一些隐患需要通過對系統的巡檢去發現,如果優化不及時在極端情況會導緻故障,巡檢粒度建議每周巡檢一次自己所負責的業務系統。

系統巡檢重點要關注如下幾點:

系統名額:系統CPU、負載、記憶體、網絡、磁盤有無異常情況波動,确認是否由釋出導緻,還是系統調用異常。

慢接口:通常rt大于3s的接口需要重點關注,極端并發場景下容易導緻整個系統雪崩。

慢查詢:MYSQL慢查詢需要重點關注,随着資料量上漲,需要對慢查詢進行優化。

錯誤日志:通過錯誤日志去發現系統隐藏的一些bug,避免這些bug被放大,甚至極端情況下會導緻故障。

技術規劃

技術規劃通常由團隊的TL負責,每個财年TL需要從大局的角度去思考每個季度的技術優化規劃,去償還技術債,技術債也是有利息的,因為利息的存在,技術債務不及時償還的話,會在未來呈現出非線性增長,造成始料不及的損失。

這裡的技術規劃包括如下幾點:

架構優化:一些結構不良、低内聚高耦合的代碼則會使得哪怕是微小的需求變更或功能擴充都無從下手,修改的代價很可能超過了重寫的代價。同樣系統之間的耦合也需要重點去關注,遵循微服務化的原則,系統也要遵循單一職責原則,對于職責不清晰的系統去做解耦優化,進行一些子產品化改造、服務隔離、公用服務抽象。

性能優化:基于财年對于業務量、資料量的發展評估,根據目前系統服務的QPSRT,需要提前規劃對系統性能進行一些更新政策,包括重點關注對一些慢接口、慢查詢的優化。

彈性與可靠性:系統提供的服務需要保障括資料一緻性、幂等、防重攻擊,同時也需要從熔斷降級、異地多活的角度去考慮存在哪些問題,目前系統的SLA名額是否能夠達到高可用,需要做哪些優化保障系統的高可用。

可伸縮:應用服務是否保證無狀态,關鍵節點發生故障能夠快速轉移、擴容,避免故障擴大化。

如何成為優秀的技術主管?你要做到這三點

總結

大家不知道有沒有類似的經曆,某個時間段突然一些線上故障頻發,各種技術債、業務債被業務方窮追猛打要求還債,如果出現這種現象很大程度這個TL已經失位了,這個團隊失控了。也曾經有人跟我吐槽他的TL把活都分給他們,而TL自己什麼都不幹!這個技術TL真的什麼都不幹?曾經有一段時間我也在思考技術TL的核心職責到底是什麼?技術TL應該具備哪些素質?

首先技術說到底是為業務服務的,除非技術就是業務本身,必須展現它的商業價值。在很多公司裡技術研發真的就成了實作其他部門需求的工具,我覺得這樣的技術TL肯定是不合格的。首先它不能影響業務發展,需求提出方會經過很多轉化,如果不是不假思索傳遞需求,整個過程會失真。

第二個,我認為最最重要的是架構設計的能力,可能管理能力還次之。對于管理能力我認為最重要的是對團隊的感覺能力,因為一旦到了技術TL這個級别,不能脫離一線太遠,業務細節可以不清楚,大的方向必須要明确。如果沒有很細膩的感覺能力,很多的決策會有偏差。

如果他不是一個業務架構師,不是一個能給團隊指明更好方向的人,他最終會淪為一個需求翻譯器,産品經理說怎麼做就怎麼做。他更多的隻是負責保證産品的品質、開發的速度,最終被肢解成一個很瑣碎的人。一旦團隊上了一定的規模,團隊就會從單純的需求實作走向團隊營運,而營運是需要方向的,業務架構就是一個基于營運和資料的一種綜合的能力。

關于技術層面,技術TL需要具備如下素養:

技術視野良好,解決問題能力與架構設計能力出色。

技術TL要有良好的技術視野,不需要各種技術都樣樣精通,但是必須要所有涉獵,有所了解,對各種技術領域的發展趨勢,主流非主流技術的應用場景要非常了解。知道在什麼場景應用什麼技術,業務發展到什麼規模應該預先做哪些技術儲備。産品架構的設計要有足夠的彈性,既能夠保證目前開發的高效率,又能夠對未來産品架構的演進留出擴充的餘地。

動手能力要強,學習能力出色。

技術TL并不需要自己親自動手寫代碼,但是如有必要,自己可以随時動手參與第一線的編碼工作,技術TL不能長期遠離一線工作,自廢武功,紙上談兵。否則長此以往,會對技術的判斷産生嚴重的失誤。另外,技術TL也應該是一個學習能力非常出色的人,畢竟IT行業的技術更新換代速度非常快,如果沒有快速學習能力,是沒有資格做好技術TL的。

技術TL除了管人和管事之外,其他還有很多事情要做包括建立團隊研發文化、團隊人才培養與建設、跨部門協調與溝通等,這樣以要求技術TL也同時也需要具備良好的溝通和管理能力,以上觀點僅是個人的一些思考和觀點,僅供參考。

原文釋出時間為:2019-02-26

本文作者:阿裡技術

本文來自雲栖社群合作夥伴“

阿裡技術

”,了解相關資訊可以關注“

”。