成為的架構(gòu)師是大部分初中級(jí)工程師的階段性目標(biāo)。的架構(gòu)師往往具備七種核心能力:編程能力、調(diào)試能力、編譯部署能力、性能優(yōu)化能力、業(yè)務(wù)架構(gòu)能力、在線運(yùn)維能力、項(xiàng)目管理能力和規(guī)劃能力。
編程能力、調(diào)試能力和編譯部署能力屬于基礎(chǔ)的能力。不能精通掌握這三種能力,很難在性能優(yōu)化能力和業(yè)務(wù)架構(gòu)能力方面有所成就。具備了一定的性能優(yōu)化能力和業(yè)務(wù)架構(gòu)能力之后,才能在線運(yùn)維能力和項(xiàng)目管理能力方面表現(xiàn)優(yōu)越。團(tuán)隊(duì)管理能力是能力,它對(duì)項(xiàng)目管理能力的依賴度更大。
編程能力
對(duì)工程師而言,編程是基礎(chǔ)的能力,必備技能。其本質(zhì)是一個(gè)翻譯能力,將業(yè)務(wù)需求翻譯成機(jī)器能懂的語言。
提升編程能力的書籍有很多。精通面向?qū)ο蠛驮O(shè)計(jì)模式是高效編程的基礎(chǔ)。初級(jí)工程師應(yīng)該多寫代碼、多看代碼。找高手做Code Review,也是提升編程水平的捷徑。
調(diào)試能力
程序代碼是系統(tǒng)的靜態(tài)形式,調(diào)試的目的是通過查看程序的運(yùn)行時(shí)狀態(tài)來驗(yàn)證和優(yōu)化系統(tǒng)。本質(zhì)上講,工程師們通過不斷調(diào)試可以持續(xù)強(qiáng)化其通過靜態(tài)代碼去預(yù)測運(yùn)行狀態(tài)的能力。 所以調(diào)試能力也是工程師編程能力提升的關(guān)鍵手段。很早之前有個(gè)傳說:“調(diào)試能力有多強(qiáng),編程能力就有多強(qiáng)。”不過現(xiàn)在很多編輯器的功能很強(qiáng)大,調(diào)試能力的門檻已經(jīng)大大降低。
調(diào)試能力是項(xiàng)目能否按時(shí)、高質(zhì)量提交的關(guān)鍵。
即使一個(gè)稍具復(fù)雜度的項(xiàng)目,大部分工程師也無法一次性準(zhǔn)確無誤的完成。大項(xiàng)目都是通過不斷地調(diào)試進(jìn)行優(yōu)化和糾錯(cuò)的。所以調(diào)試能力是不可或缺的能力。
多寫程序,解決Bug,多請(qǐng)教高手是提升調(diào)試能力的重要手段。
編譯部署能力
編譯并在線上部署運(yùn)行程序是系統(tǒng)上線的一個(gè)環(huán)節(jié)。隨著SOA架構(gòu)的普及以及業(yè)務(wù)復(fù)雜度的增加,大部分系統(tǒng)只是一個(gè)完整業(yè)務(wù)的一個(gè)環(huán)節(jié),因此,本地編譯和運(yùn)行并不能完全模擬系統(tǒng)在線運(yùn)行。為了快速驗(yàn)證所編寫程序的正確性,編譯并在線上部署就成了必要環(huán)節(jié)。所以編譯部署能力是一個(gè)必備技能。
讓盤根錯(cuò)節(jié)的眾多子系統(tǒng)運(yùn)行起來是個(gè)不小的挑戰(zhàn)。得益于SOA架構(gòu)的普及以及大量編譯、部署工具的發(fā)展,編譯部署的門檻已經(jīng)大大降低。基于應(yīng)用層進(jìn)行開發(fā)的公司,已經(jīng)很少有“編譯工程師”的角色了。但是對(duì)于初級(jí)工程師而言,編譯部署仍然不是一個(gè)輕松的事情。
性能優(yōu)化能力
衡量一個(gè)系統(tǒng)成功的一個(gè)重要指標(biāo)是使用量。隨著使用量的增加和業(yè)務(wù)復(fù)雜度的增加,大部分系統(tǒng)終都會(huì)碰到性能問題。性能優(yōu)化能力是一個(gè)綜合能力。因?yàn)椋?
影響系統(tǒng)性能的因素眾多,包括:數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)、虛擬機(jī)、CPU、存儲(chǔ)、網(wǎng)絡(luò)等。為了對(duì)系統(tǒng)性能進(jìn)行調(diào)優(yōu),架構(gòu)師需要掌握所有相關(guān)的技術(shù)。
精通性能優(yōu)化意味著深刻理解可用性、可靠性、一致性、可維護(hù)性、可擴(kuò)展性等的本質(zhì)。
性能優(yōu)化與業(yè)務(wù)強(qiáng)耦合,終所采取的手段是往往折衷的結(jié)果。所以,性能優(yōu)化要深諳妥協(xié)的藝術(shù)。
可以說,性能優(yōu)化能力是工程師們成長過程中各種技能開始融會(huì)貫通的一個(gè)標(biāo)志。這方面可以參考之前的博客文章“常見性能優(yōu)化策略的總結(jié)”。市場上還有很多與性能優(yōu)化相關(guān)的書籍,大家可以參考。多多閱讀開源框架中關(guān)于性能優(yōu)化方面的文檔和代碼也不失為好的提升手段。動(dòng)手解決線上性能問題也是提升性能優(yōu)化能力的關(guān)鍵。
在線運(yùn)維能力
如果說性能優(yōu)化能力體現(xiàn)的是架構(gòu)師的靜態(tài)思考能力,在線運(yùn)維能力考驗(yàn)的就是動(dòng)態(tài)反應(yīng)能力。殘酷的現(xiàn)實(shí)是,無論程序多么完美,Bug永遠(yuǎn)存在。與此同時(shí),職位越高、責(zé)任越大,很多架構(gòu)師需要負(fù)責(zé)非常重要的在線系統(tǒng)。對(duì)于線上故障,如果不能提前預(yù)防以及快速解決,損失可能不堪設(shè)想,所以在線運(yùn)維能力是架構(gòu)師的必備技能。
為了對(duì)線上故障進(jìn)行快速處理,標(biāo)準(zhǔn)化的監(jiān)控、上報(bào)、升級(jí),以及基本應(yīng)對(duì)機(jī)制當(dāng)然很重要。通過所觀察到的現(xiàn)象,快速定位、緩解以及解決相關(guān)癥狀也相當(dāng)關(guān)鍵。這要求架構(gòu)師對(duì)故障系統(tǒng)的業(yè)務(wù)、技術(shù)具備通盤解讀能力。解決線上故障的架構(gòu)師就好比一個(gè)在參加比賽F1的車手。賽車手必須要了解自身、賽車、對(duì)手、同伴、天氣、場地等所有因素,快速?zèng)Q策,不斷調(diào)整。架構(gòu)師必須要了解所有技術(shù)細(xì)節(jié)、業(yè)務(wù)細(xì)節(jié)、處理規(guī)范、同伴等眾多因素,快速?zèng)Q斷,迅速調(diào)整。
在線運(yùn)維本質(zhì)上是一個(gè)強(qiáng)化學(xué)習(xí)的過程。很多能力都可以通過看書、查資料來完成,但在線運(yùn)維能力往往需要大量的實(shí)踐來提升。
業(yè)務(wù)架構(gòu)能力
工程師抱怨產(chǎn)品經(jīng)理的故事屢見不鮮,抱怨多的主要原因來自于需求的頻繁變更。需求變更主要有兩個(gè)來源:個(gè)原因是市場改變或戰(zhàn)略調(diào)整,第二個(gè)原因是偽需求。對(duì)于個(gè)原因,無論是工程師還是產(chǎn)品經(jīng)理,都只能無奈的接受。的架構(gòu)師應(yīng)該具備減少第二種原因所導(dǎo)致的需求變更的概率。
偽需求的產(chǎn)生有兩個(gè)原因:
個(gè)原因是需求傳遞變形。從信息論的角度來講,任何溝通都是一個(gè)編碼和解碼的過程。典型的需求從需求方到產(chǎn)品經(jīng)理,終到開發(fā)工程師,少需要經(jīng)歷三次編碼和解碼過程。而信息的每一次傳遞都存在一些損失并帶來一些噪音,這導(dǎo)致有些時(shí)候開發(fā)出來的產(chǎn)品完全對(duì)不上需求。此外,需求方和產(chǎn)品經(jīng)理在需求可行性、系統(tǒng)可靠性,開發(fā)成本控制方面的把控比較弱,也會(huì)導(dǎo)致需求變形。
第二個(gè)原因就是需求方完全沒有想好自己的需求。
的架構(gòu)師應(yīng)該具備辨別真?zhèn)涡枨蟮哪芰Α?yīng)該花時(shí)間去了解客戶的真實(shí)業(yè)務(wù)場景,具備較強(qiáng)的業(yè)務(wù)抽象能力,洞悉客戶的真實(shí)需求。系統(tǒng)的真正實(shí)施方是工程師,在明確客戶真實(shí)需求后,高明的架構(gòu)師應(yīng)該具備準(zhǔn)確判斷項(xiàng)目對(duì)可行性、可靠性、可用性等方面的要求,并能具備成本意識(shí)。
,由于需求與在線系統(tǒng)的緊耦合關(guān)系,掌握在線系統(tǒng)的各種細(xì)節(jié)也是成功的業(yè)務(wù)架構(gòu)的關(guān)鍵。隨著級(jí)別的提升,工程師所面對(duì)的需求會(huì)越來越抽象。承接抽象需求,提供抽象架構(gòu)是架構(gòu)師走向卓越的必經(jīng)之途。
項(xiàng)目管理能力
作為工業(yè)時(shí)代的產(chǎn)物,分工合作融入在互聯(lián)網(wǎng)項(xiàng)目基因里面。架構(gòu)師也需要負(fù)責(zé)幾個(gè)重大項(xiàng)目才能給自己正名。以架構(gòu)師角色去管理項(xiàng)目,業(yè)務(wù)架構(gòu)能力當(dāng)然是必備技能。此外,人員管理和成本控制意識(shí)也非常重要。
項(xiàng)目管理還意味著要有一個(gè)大心臟。重大項(xiàng)目涉及技術(shù)攻關(guān)、人員變動(dòng)、需求更改等眾多可變因素。面臨各種變化,還要在確保目標(biāo)順利達(dá)成,需要較強(qiáng)的抗壓能力。
人員管理需要注意的方面包括:知人善用,優(yōu)化關(guān)系,簡化溝通,堅(jiān)持真理。
知人善用意味著架構(gòu)師需要了解每個(gè)參與者的硬技能和軟素質(zhì)。同時(shí),關(guān)注團(tuán)隊(duì)成員在項(xiàng)目過程中的表現(xiàn),按能分配。
優(yōu)化關(guān)系意味著管理團(tuán)隊(duì)的情緒,畢竟項(xiàng)目的核心是團(tuán)隊(duì),有士氣的團(tuán)隊(duì)才能高效達(dá)成目標(biāo)。簡化溝通意味著快速?zèng)Q策,該妥協(xié)的時(shí)候妥協(xié),權(quán)責(zé)分明。堅(jiān)持真理意味著頂住壓力,在原則性問題上絕不退步。
成本控制意味著對(duì)項(xiàng)目進(jìn)行精細(xì)化管理,需要遵循如下幾個(gè)原則:
以終為始、確定里程碑。為了達(dá)成目標(biāo),所有的計(jì)劃必須以終為始來制定。將大項(xiàng)目分解成幾個(gè)小階段,控制每個(gè)階段的里程碑可以大大降低項(xiàng)目失敗的風(fēng)險(xiǎn)。
把控關(guān)鍵路徑和關(guān)鍵項(xiàng)目。按照關(guān)鍵路徑管理理論(CPM)的要求,架構(gòu)師需要確定每個(gè)子項(xiàng)目的關(guān)鍵路徑,確定其早和晚啟動(dòng)時(shí)間。同時(shí),架構(gòu)師需要關(guān)注那些可能會(huì)導(dǎo)致項(xiàng)目整體延期的關(guān)鍵節(jié)點(diǎn),并集中力量攻破。
掌控團(tuán)隊(duì)成員的張弛度。大項(xiàng)目持續(xù)時(shí)間會(huì)比較長,也包含不同工種。項(xiàng)目實(shí)施是一個(gè)不斷變化的動(dòng)態(tài)過程,在這個(gè)過程中不是整個(gè)周期都很緊張,不是所有的工種都一樣忙。的架構(gòu)師必須要具備精細(xì)閱讀整體項(xiàng)目以及快速反應(yīng)和實(shí)時(shí)調(diào)整的能力。這不僅僅可以大大降低項(xiàng)目成本,還可以提高產(chǎn)出質(zhì)量和團(tuán)隊(duì)滿意度。總體來說,“前緊后松”是項(xiàng)目管理的一個(gè)重要原則。
團(tuán)隊(duì)管理能力
不想做CTO的工程師不是一個(gè)好的架構(gòu)師。走向技術(shù)管理應(yīng)該是工程師的一個(gè)主流職業(yè)規(guī)劃。團(tuán)隊(duì)管理的一個(gè)核心能力就是規(guī)劃能力,這包括項(xiàng)目規(guī)劃和人員規(guī)劃。良好的規(guī)劃需要遵循如下原則:
規(guī)劃是利益的博弈。良好的規(guī)劃上面對(duì)得起老板,中間對(duì)得起自己,下面對(duì)得起團(tuán)隊(duì)。在三者利益者尋找平衡點(diǎn),實(shí)現(xiàn)多方共贏考驗(yàn)著管理者的智慧和精細(xì)拿捏的能力。
任何規(guī)劃都比沒有規(guī)劃好。沒有規(guī)劃的團(tuán)隊(duì)就是沒頭的蒼蠅,不符合所有人的利益。規(guī)劃不是本本主義。市場在變,團(tuán)隊(duì)在變,規(guī)劃也不應(yīng)該一成不變。
客戶至上的是項(xiàng)目規(guī)劃的出發(fā)點(diǎn)。就人員規(guī)劃而言,規(guī)劃需要考量團(tuán)隊(duì)成員的能力、績效、成長等多方面的因素。
這些能力都是通過不斷工作積累起來的經(jīng)驗(yàn),在技術(shù)這條路上不想成為大牛的就不是一個(gè)的IT工程師。當(dāng)你具備這些能力的時(shí)候,就是在行業(yè)呼風(fēng)喚雨的時(shí)候。加入粵嵌IT培訓(xùn)班,賣出大牛人生的步,不管你是想學(xué)嵌入式開發(fā)還是Java開發(fā)我們都能為你未來的光明人生鋪路。