架構(gòu)師在很多人眼中是一個(gè)非常高大上的職業(yè), 就像武俠小說(shuō)中的絕世高手一樣, 關(guān)鍵時(shí)刻可以起到扭轉(zhuǎn)乾坤的作用, 是團(tuán)隊(duì)中的靈魂人物. 回想我自己做一線(xiàn)架構(gòu)師的過(guò)程中, 也沒(méi)有經(jīng)歷過(guò)比較系統(tǒng)的培訓(xùn), 都是摸著石頭過(guò)河. 近期在培養(yǎng)架構(gòu)師的過(guò)程中, 促使我一直在思考, 一個(gè)合格的架構(gòu)師到底應(yīng)該具備哪些能力? 對(duì)希望成長(zhǎng)為架構(gòu)師的同學(xué), 或者在承擔(dān)架構(gòu)師職責(zé)的同學(xué), 需要提供哪些方面的指導(dǎo)和幫助, 才能讓他逐步成長(zhǎng)為合格的架構(gòu)師呢? 下面我結(jié)合自己的經(jīng)驗(yàn), 總結(jié)了我認(rèn)為對(duì)架構(gòu)師來(lái)說(shuō)非常重要的十項(xiàng)能力, 希望給那些努力成長(zhǎng)為架構(gòu)師的同學(xué)提供一點(diǎn)點(diǎn)幫助.
研發(fā)流程的持續(xù)改進(jìn)
架構(gòu)師不是單兵作戰(zhàn), 憑借個(gè)人英雄主義是無(wú)法做成大事的. 架構(gòu)師一定是指揮一個(gè)團(tuán)隊(duì)來(lái)共同完成既定目標(biāo), 或者一個(gè)復(fù)雜項(xiàng)目. 在軟件研發(fā)領(lǐng)域, 決定團(tuán)隊(duì)研發(fā)效率的核心在于研發(fā)流程的優(yōu)化. 現(xiàn)階段互聯(lián)網(wǎng)公司大多采用敏捷研發(fā)流程, 這其中主要包括:
需求卡片的狀態(tài)流轉(zhuǎn). 盡可能依靠工具實(shí)現(xiàn)狀態(tài)的自動(dòng)化流轉(zhuǎn), 減少人為操作的情況.
開(kāi)發(fā)工具的選擇. 比如web ide, 代碼審查工具, 項(xiàng)目管理工具等.
代碼的開(kāi)發(fā)和審查(包括單測(cè)代碼和測(cè)試流水線(xiàn)代碼). 開(kāi)發(fā)功能代碼的同時(shí), 必須同時(shí)提交單測(cè)代碼和測(cè)試流水線(xiàn)代碼, 保證新增代碼的基本功能被覆蓋. 盡量不要分開(kāi)開(kāi)發(fā), 保證測(cè)試代碼的質(zhì)量.
測(cè)試流水線(xiàn)的建設(shè)和持續(xù)優(yōu)化. 測(cè)試流水線(xiàn)需要在測(cè)試覆蓋率和運(yùn)行時(shí)間方面進(jìn)行平衡, 測(cè)試覆蓋率越大勢(shì)必會(huì)增加測(cè)試時(shí)間, 如果每次提交pr, 都需要跑很長(zhǎng)時(shí)間的測(cè)試流水線(xiàn), 那么無(wú)疑會(huì)降低研發(fā)效率. 這時(shí)候可以采用測(cè)試case分級(jí)的方法, 設(shè)計(jì)ci pileline, daily pipeline, perf pipeline等多條測(cè)試流水線(xiàn), 并且以不同的周期運(yùn)行.
持續(xù)發(fā)布和持續(xù)部署. 敏捷開(kāi)發(fā)模式核心就是希望通過(guò)小步快跑的方式優(yōu)化傳統(tǒng)瀑布模型的階段性開(kāi)發(fā)模式, 讓每次迭代盡可能快速的得到效果反饋, 從而可以針對(duì)反饋更快速的進(jìn)行軟件迭代. 這就要求我們一定要有持續(xù)發(fā)布和部署的能力, 可以采用灰度發(fā)布, A/B test等模式.
架構(gòu)師需要對(duì)研發(fā)流程的每個(gè)環(huán)節(jié)保持著敏銳的嗅覺(jué), 可以及時(shí)發(fā)現(xiàn)其中的問(wèn)題, 并提出有效的優(yōu)化方法. 我們經(jīng)常討論架構(gòu)師要不要寫(xiě)代碼的問(wèn)題, 在我看來(lái), 不管架構(gòu)師是否動(dòng)手寫(xiě)代碼, 一定要對(duì)代碼保持敏感. 保持敏感的方法就是對(duì)研發(fā)流程保持足夠的把控, 參與代碼審查, 持續(xù)的優(yōu)化研發(fā)流程. 做職稱(chēng)評(píng)審的時(shí)候, 對(duì)于不做code review的架構(gòu)師我一直是保持懷疑態(tài)度的, 我始終認(rèn)為, 連代碼都不進(jìn)行review的架構(gòu)師根本沒(méi)辦法真正指導(dǎo)一個(gè)項(xiàng)目或者一個(gè)技術(shù)方向, 至少一線(xiàn)架構(gòu)師如此.
歸納抽象和技術(shù)泛化能力
架構(gòu)設(shè)計(jì)很多情況下我理解就是將共性和差異化的東西分離出來(lái), 共性的部分抽象成獨(dú)立的接口, 功能模塊或者組件, 差異化的部分分別形成其他代碼模塊. 那如何識(shí)別或者分析出共性的部分, 我認(rèn)為主要就是依靠架構(gòu)師的歸納, 抽象和技術(shù)泛化能力. 這需要架構(gòu)師對(duì)問(wèn)題進(jìn)行反復(fù)深入的思考和對(duì)比, 透過(guò)現(xiàn)象探究事務(wù)的本質(zhì), 需要架構(gòu)師擁有舉一反三的能力. 鍛煉這樣的能力, 我覺(jué)得可以從日常編寫(xiě)代碼中體會(huì)和訓(xùn)練. 比如把握好代碼設(shè)計(jì)的SOLID原則, 在需要的時(shí)候?qū)Υa或者架構(gòu)進(jìn)行局部重構(gòu), 參考寫(xiě)的更好的代碼或者架構(gòu)設(shè)計(jì)等. 另外在日常工作中及時(shí)進(jìn)行總結(jié)和復(fù)盤(pán)也非常有必要, 不要一味地低頭走路, 在每完成一些階段性工作之后, 對(duì)自己的工作過(guò)程和成果進(jìn)行總結(jié), 發(fā)現(xiàn)其中的優(yōu)點(diǎn)和缺點(diǎn), 避免走彎路.
業(yè)務(wù)和需求的分析和理解能力
架構(gòu)的核心是為了業(yè)務(wù)服務(wù)的, 很多架構(gòu)師覺(jué)得自己高高在上, 看不起業(yè)務(wù)研發(fā)同學(xué), 這可不是什么好的想法. 架構(gòu)就是要讓業(yè)務(wù)更快速的發(fā)展, 所以架構(gòu)師一定要接地氣. 所謂的接地氣, 我認(rèn)為就是要加強(qiáng)對(duì)業(yè)務(wù)的深入理解, 能夠預(yù)測(cè)業(yè)務(wù)的發(fā)展趨勢(shì), 提前在業(yè)務(wù)需要的技術(shù)方向進(jìn)行適當(dāng)?shù)牟季? 同時(shí)對(duì)業(yè)務(wù)提出的需求, 要多問(wèn)多思考需求背后的本質(zhì)是什么, 來(lái)幫助我們識(shí)別并解決業(yè)務(wù)真正的痛點(diǎn). 對(duì)業(yè)務(wù)的理解也意味著架構(gòu)師不會(huì)設(shè)計(jì)出天馬行空不切實(shí)際的架構(gòu), 可以讓架構(gòu)師的架構(gòu)設(shè)計(jì)更快的落地, 也讓架構(gòu)師能夠更為順暢的和業(yè)務(wù)研發(fā)同學(xué)進(jìn)行溝通和交流. 所以架構(gòu)師切忌不可脫離業(yè)務(wù), 要時(shí)刻保持對(duì)業(yè)務(wù)的一定程度的理解能力.
技術(shù)折中和持續(xù)改進(jìn)能力
很多架構(gòu)師或者研發(fā)工程師都有所謂的代碼或者架構(gòu)潔癖, 動(dòng)不動(dòng)就想重構(gòu)或者重寫(xiě), 并自認(rèn)為是一種非常好的品質(zhì). 這確實(shí)在某種程度上體現(xiàn)了工程師的主動(dòng)性和匠心精神, 但是絕對(duì)要把握好時(shí)機(jī). 我相信任何一家公司或者任何一個(gè)代碼模塊, 都有所謂的技術(shù)債務(wù)或者實(shí)現(xiàn)的不那么好的代碼和架構(gòu), 希望短時(shí)間內(nèi)徹底解決是不現(xiàn)實(shí)的. 架構(gòu)師需要能夠識(shí)別那些真正的技術(shù)債務(wù), 并且要在適當(dāng)?shù)臅r(shí)機(jī)進(jìn)行適當(dāng)?shù)闹貥?gòu)來(lái)解決問(wèn)題. 技術(shù)債務(wù)的識(shí)別能力是架構(gòu)師抽象能力和業(yè)務(wù)理解能力等多方面能力的體現(xiàn). 適當(dāng)?shù)臅r(shí)機(jī)指的是架構(gòu)師能夠在一定程度上預(yù)測(cè)未來(lái)的發(fā)展趨勢(shì), 同時(shí)結(jié)合當(dāng)前的研發(fā)任務(wù), 讓架構(gòu)朝著可以逐步迭代演化的方式來(lái)進(jìn)化到理想目標(biāo). 迭代式的發(fā)展可以有效降低技術(shù)風(fēng)險(xiǎn), 也可以讓架構(gòu)師更能充分的把握理想目標(biāo). 這個(gè)過(guò)程要注意避免兩個(gè)極端. 一個(gè)極端是架構(gòu)師動(dòng)輒進(jìn)行大規(guī)模的重構(gòu), 一個(gè)項(xiàng)目耗時(shí)數(shù)人年或者更長(zhǎng)時(shí)間上線(xiàn). 這種情況不僅項(xiàng)目風(fēng)險(xiǎn)極大, 上線(xiàn)之后非常容易回滾, 而且也大大減少了試錯(cuò)的機(jī)會(huì). 可以說(shuō)是不成功便成仁. 另一個(gè)極端是架構(gòu)師僅僅就是新功能的建筑師, 不斷的添磚加瓦, 只關(guān)注新功能的設(shè)計(jì)和研發(fā)節(jié)奏, 而不做任何架構(gòu)優(yōu)化工作. 這樣時(shí)間久了之后, 項(xiàng)目就會(huì)越發(fā)難以維護(hù), 周邊類(lèi)似項(xiàng)目不勝枚舉. 當(dāng)然上述兩種情形畢竟只是極端情況, 更多的時(shí)候還是考察架構(gòu)師對(duì)時(shí)機(jī)的把握了.
技術(shù)廣度和深度
這一項(xiàng)能力都比較容易理解了. 架構(gòu)師畢竟仍然是工程師, 而且大都是從一線(xiàn)研發(fā)工程師逐步成長(zhǎng)和積累起來(lái)的, 在某一技術(shù)領(lǐng)域或者技術(shù)方向通常都有較為深入的理解和積累. 這里我想說(shuō)的是, 不管是一線(xiàn)研發(fā)同學(xué)還是架構(gòu)師, 至少應(yīng)該在1~2個(gè)技術(shù)領(lǐng)域有著深入理解的基礎(chǔ)上, 再同時(shí)涉獵技術(shù)廣度. 如果缺乏對(duì)技術(shù)基礎(chǔ)知識(shí)或者某個(gè)技術(shù)方向的深入理解, 那想繼續(xù)在技術(shù)廣度上拓展就非常困難了. 就像那些所謂的武林高手, 通常都有深厚的內(nèi)功根基, 學(xué)習(xí)其他武學(xué)招數(shù)就會(huì)特別快一樣. 技術(shù)廣度通常也成為技術(shù)視野, 計(jì)算機(jī)技術(shù)發(fā)展特別迅速, 即使在BAT或者Google/Facebook等世界頂級(jí)科技公司, 也切忌固步自封, 要多了解多同類(lèi)問(wèn)題的架構(gòu)設(shè)計(jì)和解決方案, 取其精華棄其槽粕. 平時(shí)多了解多對(duì)比相關(guān)技術(shù), 在遇到類(lèi)似問(wèn)題的時(shí)候, 就可以多一些參考信息, 少走一些彎路.
持續(xù)學(xué)習(xí)的能力
計(jì)算機(jī)技術(shù)發(fā)展速度非??? 持續(xù)學(xué)習(xí)能力對(duì)于計(jì)算機(jī)工程師來(lái)說(shuō)都非常重要, 特別是架構(gòu)師還要求開(kāi)闊技術(shù)視野. 持續(xù)學(xué)習(xí)能力與其說(shuō)是一種能力, 更多的還是一種習(xí)慣的養(yǎng)成. 大家可以自己回想一下, 每天讀多少文章, 每周或者每個(gè)月讀幾本書(shū), 平時(shí)對(duì)于讀到的文章或者書(shū)籍有沒(méi)有記錄筆記等. 處于信息爆炸的時(shí)代, 我們可以接觸到的信息也越來(lái)越多, 持續(xù)學(xué)習(xí)能力還要注意信息質(zhì)量, 注意把握信息的核心內(nèi)容, 對(duì)信息區(qū)分精讀和粗讀. 這里我覺(jué)得一些付費(fèi)內(nèi)容往往質(zhì)量較高, 正所謂一份價(jià)錢(qián)一分貨, 為知識(shí)付費(fèi)投資自己還是挺劃算的.
技術(shù)影響力
架構(gòu)師一定意義上也是某些領(lǐng)域的技術(shù)專(zhuān)家, 打造個(gè)人技術(shù)品牌, 樹(shù)立技術(shù)影響力對(duì)于架構(gòu)師來(lái)說(shuō)就更為必要了. 現(xiàn)階段技術(shù)社區(qū)非?;钴S, 架構(gòu)師可以通過(guò)開(kāi)源項(xiàng)目, 技術(shù)論壇, 開(kāi)設(shè)技術(shù)課程, 發(fā)表學(xué)術(shù)論文, 在技術(shù)類(lèi)大會(huì)上發(fā)表演講等多種途徑來(lái)提升個(gè)人的技術(shù)影響力. 可以先從公司內(nèi)部做起, 平時(shí)指導(dǎo)一線(xiàn)工程師的過(guò)程中, 注意積累素材, 積累到一定程度之后, 可以開(kāi)設(shè)一些技術(shù)類(lèi)課程, 然后可以到一些技術(shù)會(huì)議上進(jìn)行更大范圍的技術(shù)演講等. 參與開(kāi)源社區(qū)也是一種比較好的途徑, 同時(shí)還可以接觸相關(guān)技術(shù)圈子, 大家交流技術(shù)互通有無(wú), 其樂(lè)融融.
溝通表達(dá)能力
作為架構(gòu)師, 日常工作的溝通或者工作匯報(bào)必不可少. 能否將問(wèn)題和解決方案表達(dá)清楚, 對(duì)待不同的聽(tīng)眾, 能否區(qū)別的進(jìn)行溝通都對(duì)架構(gòu)師溝通能力的考察. 我在日常工作中參與過(guò)多次的職稱(chēng)評(píng)審, 也參與過(guò)無(wú)數(shù)次的技術(shù)評(píng)審和工作匯報(bào)等會(huì)議, 我發(fā)現(xiàn)很多架構(gòu)師的通病就是平時(shí)不注意培養(yǎng)溝通表達(dá)能力. 有的同學(xué)一上來(lái)就講解決方案, 很多同學(xué)對(duì)問(wèn)題的背景都還不清楚呢, 大家自然對(duì)解決方案一頭霧水. 有的同學(xué)對(duì)解決方案的非關(guān)鍵細(xì)節(jié)花費(fèi)了大量的時(shí)間進(jìn)行描述, 絲毫沒(méi)有全局視角或者整體的介紹, 讓大家聽(tīng)的是云里霧里. 有的同學(xué)在工作匯報(bào)時(shí), 對(duì)技術(shù)方案進(jìn)行了全方位闡述, 而忽略了對(duì)最終結(jié)果的介紹, 那大家可以想想老板是什么感受. 有的同學(xué)在和其他團(tuán)隊(duì)合作的溝通中, 強(qiáng)勢(shì)的要求對(duì)方積極配合, 而絲毫沒(méi)有替對(duì)方考慮的意思, 那這樣的溝通成功率可想而之了.
類(lèi)似的例子不勝枚舉, 那么如何培養(yǎng)溝通能力呢? 我認(rèn)為首先要能夠站在聽(tīng)眾的角度思考問(wèn)題, 明白聽(tīng)眾真正想要的是什么. 比如做工作匯報(bào)的時(shí)候, 老板更多的想知道事情的結(jié)果, 或者項(xiàng)目的計(jì)劃, 對(duì)技術(shù)細(xì)節(jié)往往不那么關(guān)心. 做技術(shù)評(píng)審的時(shí)候, 評(píng)審專(zhuān)家關(guān)注整體的架構(gòu)設(shè)計(jì)和技術(shù)難點(diǎn)的可行性, 對(duì)非關(guān)鍵細(xì)節(jié)就不需要過(guò)多闡述. 希望和其他團(tuán)隊(duì)合作的話(huà), 盡量從雙贏的角度, 先描述對(duì)方的收益, 然后在表達(dá)對(duì)方需要投入的工作, 這樣往往能夠取得對(duì)方的支持.
當(dāng)然溝通表達(dá)能力的基礎(chǔ)上是歸納抽象和邏輯思維能力, 如果沒(méi)有良好的邏輯, 那么其他一切溝通技巧都是徒勞的. 另外強(qiáng)調(diào)一個(gè)溝通表達(dá)的禮貌問(wèn)題, 那就是在發(fā)表意見(jiàn)之前, 注意傾聽(tīng)對(duì)方的話(huà)語(yǔ), 切忌打斷其他人的講話(huà). 隨意打斷別人的講話(huà), 不僅僅溝通低效, 而且還十分不禮貌, 溝通過(guò)程中如果遇到經(jīng)常打斷別人講話(huà)的架構(gòu)師, 那基本上可以敬而遠(yuǎn)之了.
技術(shù)管理能力
架構(gòu)師不是做完架構(gòu)設(shè)計(jì)之后就可以高枕無(wú)憂(yōu)了, 架構(gòu)師往往要帶領(lǐng)整個(gè)研發(fā)團(tuán)隊(duì)完成架構(gòu)的落地. 這就要求架構(gòu)師即使不是經(jīng)理角色, 也要具備一定的技術(shù)管理能力, 從而帶著整個(gè)團(tuán)隊(duì)一起完成工作. 管理工作的核心就是管人, 管事和管錢(qián). 管人就意味著需要和人打交道, 理解團(tuán)隊(duì)成員的特點(diǎn), 建立良好的信任關(guān)系. 管事就意味著管理項(xiàng)目和技術(shù)的落地, 包括項(xiàng)目計(jì)劃的拆解, 項(xiàng)目執(zhí)行進(jìn)度的追蹤, 項(xiàng)目技術(shù)難點(diǎn)的攻克等等. 管錢(qián)就意味著需要考慮成本的因素, 考慮投入產(chǎn)出比, 考慮激勵(lì)因素等. 管理是一門(mén)學(xué)問(wèn), 非常復(fù)雜, 我寫(xiě)在這里是希望架構(gòu)師不能一味的鉆研業(yè)務(wù)和技術(shù), 也需要學(xué)一些管理方面的知識(shí).
堅(jiān)持正確的價(jià)值觀(guān)
寫(xiě)在最后我覺(jué)得不僅僅是架構(gòu)師, 一個(gè)成功的人, 往往都需要具備正確的價(jià)值觀(guān), 這也是我們常說(shuō)的德才兼?zhèn)浜竦螺d物吧. 這里不是想讓大家喝雞湯, 而是我覺(jué)得任何所謂的能力都可以有意識(shí)的構(gòu)建起來(lái), 但是一個(gè)人的價(jià)值觀(guān)等因素, 卻是很容易被大家忽視. 比如遇到問(wèn)題, 能不能首先反思自己的問(wèn)題, 進(jìn)行自我批評(píng), 而不是僅僅覺(jué)得都是外界的問(wèn)題. 比如遇到困難或者逆境, 能不能有堅(jiān)定的信念和勇氣. 比如待人接物, 能不能堅(jiān)持誠(chéng)信的原則, 能不能信守承諾. 比如面對(duì)挑戰(zhàn)和壓力, 能不能有所擔(dān)當(dāng), 不甩鍋不逃避. 比如面對(duì)誤解, 能不能堅(jiān)持原則, 能不能內(nèi)心堅(jiān)強(qiáng). 諸如此類(lèi)情況, 還有很多, 我理解這都是構(gòu)建正確價(jià)值觀(guān)的一些因素. 這也就是為什么我們常說(shuō)先學(xué)做人, 后學(xué)做事的原因吧.
架構(gòu)師是團(tuán)隊(duì)的靈魂人物, 對(duì)團(tuán)隊(duì), 業(yè)務(wù)和技術(shù)的長(zhǎng)遠(yuǎn)發(fā)展起著決定性作用. 所以近期一直思考合格的架構(gòu)師需要具備哪些能力, 以及如何培養(yǎng)那些高潛的同學(xué)成長(zhǎng)為架構(gòu)師. 我相信以上十項(xiàng)能力肯定還不足以覆蓋架構(gòu)師能力的全部, 特別歡迎同行交流和補(bǔ)充.
本文來(lái)源于公眾號(hào):云原生架構(gòu)師
第三十四屆CIO班招生
北達(dá)軟EXIN網(wǎng)絡(luò)空間與IT安全基礎(chǔ)認(rèn)證培訓(xùn)
北達(dá)軟EXIN DevOps Professional認(rèn)證培訓(xùn)
責(zé)編:yangjun
免責(zé)聲明:本網(wǎng)站(http://www.www.gypb.net/)內(nèi)容主要來(lái)自原創(chuàng)、合作媒體供稿和第三方投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請(qǐng)進(jìn)一步核實(shí),并對(duì)任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對(duì)有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。
本網(wǎng)站刊載的所有內(nèi)容(包括但不僅限文字、圖片、LOGO、音頻、視頻、軟件、程序等)版權(quán)歸原作者所有。任何單位或個(gè)人認(rèn)為本網(wǎng)站中的內(nèi)容可能涉嫌侵犯其知識(shí)產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),請(qǐng)及時(shí)通知本站,予以刪除。