如何成为一名优秀的架构师
本文轉(zhuǎn)載自公眾號(hào)? 大飛碼字
同時(shí)期進(jìn)入到同一間公司,參與同一個(gè)項(xiàng)目的同學(xué),時(shí)間長(zhǎng)了之后,有同學(xué)的架構(gòu)能力很強(qiáng),有的卻還像一個(gè)新手,造成這種差別的原因除了個(gè)體素質(zhì)的差異,還有一個(gè)是工作方式和思考方式上的差異。
其實(shí),在工作中,架構(gòu)的學(xué)習(xí)和經(jīng)驗(yàn)的積累,是有一些比較好的方法的,這里,我就來(lái)分享一下這方面的一些經(jīng)驗(yàn)。
?
項(xiàng)目,相比數(shù)量,規(guī)模更重
毫無(wú)疑問(wèn),在實(shí)際工作中,積極參與實(shí)際工程項(xiàng)目是快速積累經(jīng)驗(yàn)最好的辦法。
相對(duì)于項(xiàng)目的數(shù)量,項(xiàng)目的規(guī)模更加重要。我們沒(méi)辦法在一個(gè)項(xiàng)目開(kāi)始的時(shí)候,去判斷一個(gè)項(xiàng)目的質(zhì)量。但項(xiàng)目的規(guī)模是可以比較容易判斷的。實(shí)際服務(wù)用戶的數(shù)量,參與工程實(shí)施的各類人員的數(shù)量,都可以反應(yīng)出項(xiàng)目規(guī)模的大小。
為什么更應(yīng)該追求項(xiàng)目的規(guī)模呢?因?yàn)轫?xiàng)目的規(guī)模越大,可能遇到的各種架構(gòu)問(wèn)題就會(huì)越多,你能從中學(xué)到的東西自然也會(huì)越多。
一個(gè)億級(jí)用戶的項(xiàng)目比一個(gè)千萬(wàn)級(jí)用戶的項(xiàng)目的復(fù)雜度,不是只高一倍的,項(xiàng)目的復(fù)雜度是成指數(shù)增長(zhǎng)的。你在一個(gè)千萬(wàn)級(jí)用戶項(xiàng)目中遇到的一個(gè)小問(wèn)題,在億級(jí)用戶的項(xiàng)目中,卻有可能是最難解決的問(wèn)題。
之所以說(shuō)去大公司好,除了流程上更加規(guī)范,也因?yàn)橛脩袅扛?#xff0c;系統(tǒng)復(fù)雜度更高,個(gè)人也能得到更大的鍛煉。
當(dāng)然,在實(shí)際工作的時(shí)候,你或許沒(méi)辦法選擇自己的項(xiàng)目,那就盡量做好手上的吧,一旦有機(jī)會(huì),就積極地去爭(zhēng)取。
?
由點(diǎn)及面的了解系統(tǒng)
規(guī)模大的項(xiàng)目,可能不常有,而且人的時(shí)間和精力也是有限的,不可能參與無(wú)限多的項(xiàng)目。做每個(gè)小項(xiàng)目的時(shí)候,如果可以盡量多地汲取設(shè)計(jì)經(jīng)驗(yàn),會(huì)成長(zhǎng)的更快。
那怎么來(lái)做呢? 你需要學(xué)會(huì)由點(diǎn)及面的了解系統(tǒng)。
當(dāng)你接到一個(gè)小需求,在一個(gè)已有的項(xiàng)目上面,增加一個(gè)小功能,比如就是數(shù)據(jù)庫(kù)的CRUD的操作。你可能覺(jué)得很無(wú)聊,沒(méi)啥技術(shù)含量,如果你這么想,那你可能錯(cuò)失了一個(gè)更好的理解系統(tǒng),精進(jìn)經(jīng)驗(yàn)的機(jī)會(huì)。
以前,我參與QQ系統(tǒng)后臺(tái)項(xiàng)目的時(shí)候,剛開(kāi)始接到的幾乎都是很小的需求,有一段時(shí)間,甚是無(wú)聊。后來(lái),有一個(gè)前輩跟我聊,他說(shuō)你要學(xué)會(huì)由點(diǎn)及面的去了解系統(tǒng),半年之后,你對(duì)系統(tǒng)的理解程度肯定會(huì)更全面,深刻,后面有大需求的時(shí)候,你才有可能hold得住。
比如,我接到一個(gè)增加一條新的客戶端協(xié)議的需求。這個(gè)需求本身實(shí)現(xiàn)起來(lái)比較簡(jiǎn)單,因?yàn)榻涌诙际乾F(xiàn)成的,只需要按照規(guī)范去設(shè)計(jì)字段,配置上去就可以了。如果是一般的做法,做到這個(gè)程度也就結(jié)束了。
但如果你采用由點(diǎn)及面的辦法,你應(yīng)該去了解整個(gè)協(xié)議鏈路的設(shè)計(jì),你會(huì)發(fā)現(xiàn),為了保證協(xié)議的可靠性,系統(tǒng)做了很多額外的設(shè)計(jì),這個(gè)才是系統(tǒng)設(shè)計(jì)真正有難度的地方。
我后面通過(guò)搜索和查找資料,還發(fā)現(xiàn)了業(yè)界通用的做法 --- XMPP協(xié)議。?
當(dāng)時(shí)我如果不深入的理解和挖掘這部分,估計(jì)到現(xiàn)在都不知道有這個(gè)協(xié)議。
發(fā)現(xiàn)這個(gè)協(xié)議,對(duì)我像是打開(kāi)了一片新的天地,原來(lái)類似的系統(tǒng)設(shè)計(jì)和協(xié)議,早已經(jīng)有一堆的人研究過(guò),并給出了很好的解決方案。
時(shí)間長(zhǎng)了,這種工作習(xí)慣,能給自己帶來(lái)很大的成長(zhǎng)。很多同學(xué)問(wèn)我,他每天在公司就是CRUD,感覺(jué)技術(shù)沒(méi)成長(zhǎng),那你確定自己深度的了解過(guò)你在CRUD的系統(tǒng)嗎?你有去深入的學(xué)習(xí)和擴(kuò)展這部分嗎?
(CRUD是指在做計(jì)算處理時(shí)的增加(Create)、讀取查詢(Retrieve)、更新(Update)和刪除(Delete)幾個(gè)單詞的首字母簡(jiǎn)寫(xiě)。)
?
多思考,這個(gè)特別關(guān)鍵
如果只是簡(jiǎn)單的實(shí)現(xiàn)業(yè)務(wù)功能,很多人都可以做到,根本不需要厲害的人, 那厲害的人是怎設(shè)計(jì)的?
除了功能需求,還需要考慮安全需求,性能需求,可靠性,穩(wěn)定性等。這些才是系統(tǒng)設(shè)計(jì)的難點(diǎn)和關(guān)鍵點(diǎn)。
這些需求,是不會(huì)從產(chǎn)品經(jīng)理的口里提出的,這個(gè)是架構(gòu)師的職責(zé)之一:從產(chǎn)品需求,業(yè)務(wù)需求里面提出安全,性能,可靠性,穩(wěn)定性等系統(tǒng)層面的需求。
一個(gè)產(chǎn)品經(jīng)理不會(huì)跟你說(shuō),你的系統(tǒng)要保證安全,能抵受黑客的攻擊。他們默認(rèn),這些屬于技術(shù)的范疇,應(yīng)該由技術(shù)來(lái)解決,當(dāng)然,這也合理。(他們甚至不知道這些還要設(shè)計(jì))
所以,一個(gè)合格的架構(gòu)師,在接到這些產(chǎn)品,業(yè)務(wù)需求的時(shí)候,一定要能夠全面的思考,給出除了業(yè)務(wù)需求外的系統(tǒng)需求,并要求自己或其他同學(xué)要去設(shè)計(jì)和實(shí)現(xiàn)這些系統(tǒng)需求。
這是一種思維方式,也是做事的一種習(xí)慣。剛開(kāi)始的時(shí)候,你可能沒(méi)有這種意識(shí)和習(xí)慣,但你要有意識(shí)的去培養(yǎng)它們。
這種思考,到后面可以形成一種架構(gòu)設(shè)計(jì)的直覺(jué)。比如,我有時(shí)候會(huì)接到一些很重要的任務(wù),我進(jìn)行一輪思考和設(shè)計(jì)后,卻發(fā)現(xiàn)比預(yù)想的要簡(jiǎn)單,這時(shí)候,我的直覺(jué)就會(huì)告訴我,我可能是遺漏了一個(gè)關(guān)鍵的部分。
或者是對(duì)需求的理解不充分,或者是對(duì)關(guān)聯(lián)系統(tǒng)的了解有盲區(qū)。然后我都會(huì)重新review 一遍,很多時(shí)候,這種直覺(jué),幫我避免了不少坑。
?
系統(tǒng)故障后的技術(shù)復(fù)盤(pán)
再穩(wěn)定的系統(tǒng),也會(huì)有故障。如果是業(yè)務(wù)高速發(fā)展中的系統(tǒng),那故障的頻率應(yīng)該就更高了。你們的團(tuán)隊(duì),有定期過(guò)故障的習(xí)慣嗎?
我們就經(jīng)常做這類的事情。
一個(gè)故障發(fā)生后,肯定是先處理,然后安撫用戶,待一切處理完畢,我們通常會(huì)由系統(tǒng)的負(fù)責(zé)人,出一份故障報(bào)告。這份故障報(bào)告會(huì)詳細(xì)的記錄故障的處理過(guò)程,比如xxx時(shí)xx分,xxx做了什么操作,然后還會(huì)詳細(xì)描述故障產(chǎn)生的原因和后續(xù)的改進(jìn)措施。
這份故障報(bào)告寫(xiě)完后,會(huì)以郵件的形式發(fā)給整個(gè)團(tuán)隊(duì),大家會(huì)一起來(lái)review 故障的處理過(guò)程和故障產(chǎn)生的原因。
我們會(huì)定期舉行故障復(fù)盤(pán)會(huì)議,大家會(huì)在一起討論問(wèn)題的根本原因和改進(jìn)的措施,更進(jìn)一步的,會(huì)由點(diǎn)及面的延展開(kāi)來(lái),全局看待問(wèn)題。
故障復(fù)盤(pán)會(huì)議,大概一個(gè)月執(zhí)行一次。我們會(huì)拉上相關(guān)的負(fù)責(zé)人,一起來(lái)看這個(gè)月內(nèi)發(fā)生的故障,分析故障的處理流程,分析設(shè)計(jì)和程序上的問(wèn)題。
我們發(fā)現(xiàn)有的問(wèn)題是設(shè)計(jì)的缺陷,有的問(wèn)題是程序的bug,有的問(wèn)題是已知問(wèn)題,但因?yàn)槌杀净蚱渌?#xff0c;所以暫不解決。這個(gè)過(guò)程使得團(tuán)隊(duì)成員對(duì)系統(tǒng)越來(lái)越熟悉,研發(fā)流程也被規(guī)范的越來(lái)越好。
定期的技術(shù)復(fù)盤(pán),幫我們發(fā)現(xiàn)了很多問(wèn)題,還預(yù)防了不少問(wèn)題的發(fā)生,我們從中也發(fā)現(xiàn)了很多系統(tǒng)設(shè)計(jì)上的缺陷。
?
對(duì)外的分享,總結(jié),提升影響力
最后一點(diǎn),項(xiàng)目整體完成后,要嘗試去總結(jié)和分享,會(huì)帶來(lái)很大的額外收益。
第一個(gè)收益。你可以總結(jié)自己做的這個(gè)項(xiàng)目,通常你都可以發(fā)現(xiàn)不少的問(wèn)題和可改進(jìn)的地方。這些存在的問(wèn)題,你應(yīng)該放到自己的腦子里進(jìn)行思考。我覺(jué)得一個(gè)優(yōu)秀的架構(gòu)師和一個(gè)普通的架構(gòu)師的區(qū)別,很大部分是源自思考的廣度和思考的深度。
第二個(gè)收益來(lái)自于影響力,這個(gè)很多的同學(xué)都會(huì)有點(diǎn)不在乎,但這個(gè)影響力越到后面,就越顯的重要。影響力地積累需要比較長(zhǎng)的時(shí)間,所以越早意識(shí)到這點(diǎn),越早有意識(shí)地去分享和打造自身的影響力是特別重要的。
對(duì)外分享,可以是寫(xiě)篇文章,可以是寫(xiě)個(gè)ppt,給組里,給整個(gè)項(xiàng)目團(tuán)隊(duì),或者給一些外部會(huì)議做分享,都可以慢慢地積累起這種影響力。
在很多的公司,技術(shù)影響力也是技術(shù)職級(jí)評(píng)定的一個(gè)關(guān)鍵直指標(biāo),所以相當(dāng)?shù)闹匾?/p>
?
結(jié)語(yǔ)
以上,是我這么些年來(lái),架構(gòu)設(shè)計(jì)方面的經(jīng)驗(yàn)積累。個(gè)人覺(jué)得架構(gòu)設(shè)計(jì)能力的提升和經(jīng)驗(yàn)的積累,沒(méi)有特別的捷徑,但跟平時(shí)的工作習(xí)慣和思考意識(shí)有很大的關(guān)系。
有同學(xué)接到一個(gè)需求,做完就做完了,其它的也不理會(huì),長(zhǎng)久下來(lái),肯定是沒(méi)什么成長(zhǎng)的。如果你想成為一個(gè)優(yōu)秀的架構(gòu)師,就需要培養(yǎng)這種做事的方式和思考的習(xí)慣。
總結(jié)
以上是生活随笔為你收集整理的如何成为一名优秀的架构师的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 4个最难的 Elastic Search
- 下一篇: 行业观察丨激荡二十年——货代软件1999