新聞中心
目前我在互聯(lián)網(wǎng)公司里干了1年多,接觸了多位技術(shù)和業(yè)務(wù)的架構(gòu)師,由于我正在升級到架構(gòu)師,所以能直觀地感受到高級開發(fā)和架構(gòu)的差距,而且,對于高級開發(fā)如何升級到架構(gòu)師,本人目前更有切身體會。

本文將結(jié)合我在互聯(lián)網(wǎng)公司的工作體驗,和大家分享下架構(gòu)師和高級開發(fā)在工作中的側(cè)重點,由此能給大家?guī)砩壍郊軜?gòu)師的啟示。
差距首先體現(xiàn)在工作態(tài)度上
架構(gòu)師或立志升級到架構(gòu)師的高級開發(fā),平時工作中一定有如下的特質(zhì)。
1. 出了問題第一時間去調(diào)查分析問題,哪怕這個問題看上去和自己無關(guān),而不是想辦法推脫問題。
2. 上班的時候,基本沒時間看無關(guān)網(wǎng)頁或手機(jī),哪怕手頭沒活,也會看項目框架或看技術(shù),或者思考如何優(yōu)化。
3. 出了問題,一般會深挖,哪怕當(dāng)前無法從根源解決問題,但一般會找到根源原因,而不是想辦法繞過去。
這點我深有體會,別說互聯(lián)網(wǎng)公司的架構(gòu)師都這樣,連表現(xiàn)不錯的高級開發(fā)也會這樣,因為要在互聯(lián)網(wǎng)公司生存下來,這些可能是必備條件。
當(dāng)然,我也見到過得過且過的,但一般上升空間都比較小,或者無法進(jìn)一步提升,或者沒能力競爭外面更高工資的崗位。
技術(shù)方面,架構(gòu)師的基本功與高級開發(fā)的技術(shù)存貨
一般的開發(fā)大多關(guān)注“單機(jī)版” 的代碼,只要在本機(jī)上開發(fā)完成任務(wù)就行,然后外帶些debug技能,能跟蹤到代碼,能使用數(shù)據(jù)庫就行。
而高級開發(fā)的“高級”體現(xiàn)在兩個地方,第一,對業(yè)務(wù)更熟悉,但話說回來,換了公司,業(yè)務(wù)值多少錢呢?第二就是對代碼底層有進(jìn)一步的了解,比如理解Spring Boot的啟動步驟等。
而架構(gòu)師的基本功要比高級開發(fā)要高些,下面來對比下我見到的架構(gòu)師和高級開發(fā)的各種表現(xiàn),大家從中能看出兩者的差別。
1. 由于高級開發(fā)大多是調(diào)試單機(jī)版程序,所以看日志的時候,一般是在本地看,或者是用工具把日志下載到Windows本地,然后用文本工具查找關(guān)鍵字。
但對架構(gòu)師而言,這種查日志的效率太低,大多都是用less和grep之類的命令來看,也就是說,架構(gòu)師必須對linux的操作和很熟悉。
2. 高級開發(fā)一般無需考慮打包部署等問題,而架構(gòu)師在優(yōu)化分布式組件前,必須要打包項目。
所以架構(gòu)師需要對項目打包(比如maven命令),項目部署(比如jenkins或uDeploy)還有項目質(zhì)量管理(比如繼承sonar)有了解,如果項目還需要部署在云平臺上,可能還得了解Docker或k8s之類的工具。
也就是說,除了寫代碼之外,架構(gòu)師還至少得了解項目的集成部署這塊內(nèi)容。
3. 架構(gòu)師更得了解組件集群等內(nèi)容,比如分布式組件,云平臺集群,反正不是單機(jī)版。
可能高級開發(fā)也會多少了解些Dubbo,緩存之類的組件知識,但架構(gòu)師更得掌握這些組件的分布式部署相關(guān)內(nèi)容,即一臺機(jī)器失效了,其它熱備的機(jī)器該如何頂上。
除了開發(fā)代碼,架構(gòu)師更得關(guān)注壓測,方案評估和系統(tǒng)上線等實施要點
架構(gòu)師多少得具備些產(chǎn)品的相關(guān)意識,這些意識必須始終貫穿于工作中,這塊就是和高級開發(fā)相比,架構(gòu)師值錢的技術(shù)了。
1. 對于架構(gòu)師而言,產(chǎn)品(或相關(guān)組件模塊)不是做出來就好了,更得進(jìn)行壓力測試,壓測結(jié)束后,架構(gòu)師還得雞蛋里挑骨頭,錙銖必較地想優(yōu)化點。
2. 架構(gòu)師還得借鑒些當(dāng)前的同類產(chǎn)品(或者是競爭產(chǎn)品),對性能而言,只有更好沒最好,比如一個模塊當(dāng)前運(yùn)行時間是2秒,還得想盡一切辦法壓縮到1秒,這就要求架構(gòu)師精通各種技術(shù)。
3. 架構(gòu)師更得評估各種風(fēng)險,尤其是當(dāng)新版本上線時,發(fā)布時候就好比一個關(guān)口,首先得保證新老代碼兼容,不能導(dǎo)致停服,其次得控制風(fēng)險,預(yù)先設(shè)計好各種基于代碼或數(shù)據(jù)庫的回退或處理預(yù)案, 一有風(fēng)吹草動,就得立即回退。
也就是說,架構(gòu)師首先得保證系統(tǒng)能平穩(wěn)上線,其次在開發(fā)過程中,應(yīng)當(dāng)預(yù)先考慮到線上的各種風(fēng)險,并且更得時刻考慮優(yōu)化的方向,而高級開發(fā)并沒有這類要求。
架構(gòu)師是某一領(lǐng)域的主心骨,高級開發(fā)還是處于“干分配的活”階段
架構(gòu)師不僅只是技術(shù)控,更得結(jié)合業(yè)務(wù),和相關(guān)團(tuán)隊合作,制定出當(dāng)前可行,且實施風(fēng)險較小的各類方案。
也就是說,架構(gòu)師雖然不會像項目經(jīng)理那樣側(cè)重于項目管理,但也需要有帶人的經(jīng)驗,一方面把自己的設(shè)計理念讓組員落實,另一方面,一旦自己分管的系統(tǒng)出了問題,高級開發(fā)尚可以退縮,而架構(gòu)師應(yīng)當(dāng)責(zé)無旁貸地負(fù)責(zé)解決。
這里我列些我見過的架構(gòu)師平時的一些工作場景。
1. 架構(gòu)師手機(jī)上有各種群,包括業(yè)務(wù)和技術(shù)相關(guān)的,要求是@你的一定得第一時間解決。
如果客戶不是@你,雖然沒@,但報的問題和你有關(guān), 也得第一時間解決,所以大多數(shù)架構(gòu)師養(yǎng)成了手機(jī)不關(guān),而且半夜醒來看手機(jī)的習(xí)慣。
而高級開發(fā)還可以等著架構(gòu)師來分配活。
2. 出任何問題,比如業(yè)務(wù)上功能有問題,或者系統(tǒng)運(yùn)行時出了OOM等性能問題,或者通過監(jiān)控發(fā)現(xiàn)關(guān)鍵性指標(biāo)下降,架構(gòu)師都需要在第一時間介入。
3. 自己組內(nèi),或者別的組對自己分管領(lǐng)域內(nèi)有任何問題,包括業(yè)務(wù)上的和技術(shù)上的,都應(yīng)當(dāng)是協(xié)調(diào)解決。
4. 更多的時候,架構(gòu)師更得和相關(guān)人員(產(chǎn)品,其它組或系統(tǒng)運(yùn)行維護(hù)人員等)開會,評估各種方案的實施方式。
在定方案的時候,每個組都會有私心,想自己組少改些,這時架構(gòu)師就得協(xié)商或妥協(xié)出各類方案。
架構(gòu)師在這方面的工作量甚至超過了寫代碼的工作量,我就經(jīng)常見到諸多架構(gòu)師上班時開會,下班或者周末才有自己的時間來寫代碼。
系統(tǒng)發(fā)布階段,最能體現(xiàn)出架構(gòu)師和高級開發(fā)的水平
在高級開發(fā)的眼里,系統(tǒng)發(fā)布僅僅是把最新代碼和腳本部署到生產(chǎn)服務(wù)器上,之前我也是這樣認(rèn)為的。但在這個階段,架構(gòu)師需要考慮如下方面的問題。
1. 在發(fā)布的時間段里,會新老代碼并存,比如灰度發(fā)布時,會切一部分流量到新代碼上,這時如何保證兼容性。
2. 發(fā)布時的回滾步驟,如果涉及到數(shù)據(jù)庫回滾,還得準(zhǔn)備好各種SQL。
3. 數(shù)據(jù)清洗和數(shù)據(jù)遷移的步驟,往往上新功能后,數(shù)據(jù)清洗的范圍是全局的,架構(gòu)師還得考慮性能問題。
4. 系統(tǒng)上線后,該對那些關(guān)鍵步驟進(jìn)行監(jiān)控打點,以及打點后,提示異常的閥值該如何設(shè)置?
從中我們能看到,架構(gòu)師更得掌握系統(tǒng)運(yùn)維+性能綜合調(diào)優(yōu)+系統(tǒng)監(jiān)控等能力,這塊對高級開發(fā)而言,其實要求是很低的。
我見到的牛人架構(gòu)師,以及他們的進(jìn)階方式
在進(jìn)互聯(lián)網(wǎng)公司前,由于我寫了兩本書,也接觸過一些牛人,但進(jìn)互聯(lián)網(wǎng)公司后,發(fā)現(xiàn)第一牛人的數(shù)量比預(yù)期多很多,而且都很年輕,第二牛人在一些領(lǐng)域的精通程度超過我的想象。
就說我的師傅,除了工作態(tài)度好責(zé)任心強(qiáng)肯幫助人之類的軟實力外,看日志調(diào)試代碼到j(luò)ar包里去debug的硬實力也厲害,更重要的,對一些分布式組件,達(dá)到了出暢銷書(至少1萬本)的地步。
而我?guī)煾档膸煾?,更是業(yè)內(nèi)大牛,不僅在Spring方面出了很多書,而且最近在極客世界里錄制的視頻課,目前銷量就2萬+了,后期估計至少5萬+。
跟著牛人學(xué),我在互聯(lián)網(wǎng)公司里能力提升不慢,且架構(gòu)方面有了一定的進(jìn)步,以我的切身體會,怎么快速提升呢?
1. 當(dāng)然得熟悉業(yè)務(wù),否則沒法干活,但熟悉以后不能沾沾自喜,更得看技術(shù)(尤其是值錢的技術(shù))如何同業(yè)務(wù)整合。
如何熟悉業(yè)務(wù)?沒捷徑,第一看文檔,第二看代碼,第三問人,第四還得看自己領(lǐng)域外的但本系統(tǒng)會調(diào)用的上下文系統(tǒng)。
2. 出了問題別推,通過看日志等方式排查,再不行,還得深入debug一些組件包去看。
當(dāng)排查問題的數(shù)量和種類積累到一定程度后,自己可能就無師自通了,我見過的一些大牛,基本上有問題就調(diào)查,從不推諉。
3. 畢竟個人的眼界有限,接觸到的面也未必多,所以一定多跟牛人打交道。
請牛人幫忙排查問題時,自己一定得在旁邊多看,平時更得和牛人交流,牛人們往往會給出學(xué)習(xí)的方式和學(xué)習(xí)的點,而且牛人會幫忙指導(dǎo)各種技術(shù)里的坑。
4. 多參與些自己領(lǐng)域外的工作,比如壓測和系統(tǒng)部署,干活的時候不能僅僅停留在技術(shù)領(lǐng)域,更得關(guān)注項目啟動,組件部署乃至項目部署等方面。
其實不少牛人不僅干過開發(fā),更干過系統(tǒng)集成和系統(tǒng)運(yùn)行維護(hù)的活,這樣對分布式組件等之前的知識,就不僅僅停留在“會開發(fā)”的地步。有時候哪怕自己未必被分配到這類活,但也一定要多參與。
通過什么渠道我們能獲得架構(gòu)師相關(guān)的幫助文檔和實踐機(jī)會
1. 目前網(wǎng)上有大量的架構(gòu)師進(jìn)階資料,包括分布式組件的,包括云計算等的,甚至有架構(gòu)師相關(guān)的面試技巧的。對此,大家一定得多看帶框圖的,和業(yè)務(wù)實踐相關(guān)的文檔。
2. 一定得理論結(jié)合實際,架構(gòu)師相關(guān)的文檔如果光看,比較枯燥,很容易就半途而廢,這點我自己有體會。
怎么結(jié)合呢?最好能去互聯(lián)網(wǎng)公司鍛煉一段時間,哪怕在其中就干高級開發(fā)的活,平時也絕對有機(jī)會接觸到架構(gòu)師的技能。
3. 一定得多和人打交道,小到和自己組員多溝通,中到和自己公司里相關(guān)的牛人多溝通請教,再大點范圍,可以和網(wǎng)上的一些大牛多交流。
我體會下來,這些交流絕不會白費(fèi),除了能得到技術(shù)交流的機(jī)會外,還能掌握到一些掙錢的渠道和方法。
總結(jié),升級到架構(gòu)師,不僅僅得提升技術(shù)
確實,提升到架構(gòu)師離不開技術(shù)的提升,但架構(gòu)師最終是要讓技術(shù)解決實際業(yè)務(wù)問題,所以在提升過程中,我更多關(guān)注的是“技術(shù)+案例”的資料,比如我會搜索“dubbo案例”之類的,以此深挖技術(shù)的落地方式。
而且,架構(gòu)師還得和人打交道,這比與技術(shù)打交道難多了,因為各樣的人都有。
那么升級到架構(gòu)師以后,會帶來哪些收益呢?
當(dāng)然是錢多,不僅如此,架構(gòu)師往往會是在某個領(lǐng)域里是專家,所以在這個領(lǐng)域更能用技術(shù)換錢,比如賣視頻教程等。
最重要的是,通過升級到架構(gòu)師積累起來的一些軟實力,比如責(zé)任心,管理時間的方式,高效的工作方法以及思考問題的方式,這才是最值錢的。
文章題目:架構(gòu)師究竟比高級開發(fā)厲害在哪?
標(biāo)題網(wǎng)址:http://m.fisionsoft.com.cn/article/dppejij.html


咨詢
建站咨詢
