前言
我用了6年的時(shí)間成為阿里架構(gòu)師,一步一步走到了現(xiàn)在,中途也想過(guò)轉(zhuǎn)換行業(yè),也去了解過(guò)別人領(lǐng)域比較好的技術(shù)。也想過(guò)要轉(zhuǎn)其他的語(yǔ)言,但是最后還是堅(jiān)持下來(lái)走Java這條路,希望我的經(jīng)歷可以幫助到后來(lái)的人,要是覺(jué)得對(duì)你有是幫助的話,可以點(diǎn)贊關(guān)注一下。
導(dǎo)讀
架構(gòu)師應(yīng)不應(yīng)該寫(xiě)代碼
為什么別人的系統(tǒng)總是那么爛
成為架構(gòu)師最困難的門檻是什么?
如何更高效的學(xué)習(xí)?
1.架構(gòu)師應(yīng)不應(yīng)該寫(xiě)代碼
合格的程序員對(duì)于明確分配的任務(wù)會(huì)完成的很好,但是大部分情況下“架構(gòu)”這個(gè)詞意味著架構(gòu)師并不會(huì)涉及太多細(xì)節(jié),架構(gòu)圖和代碼實(shí)現(xiàn)之間總還是有些距離,你無(wú)法保證所有人都會(huì)正確的理解你的設(shè)計(jì),或者是程序員寫(xiě)代碼時(shí)遇到障礙時(shí)會(huì)立刻想出足夠優(yōu)雅的解決方案。
在我看來(lái),寫(xiě)代碼的架構(gòu)師更像是在做后勤保障的工作:在代碼中第一時(shí)間發(fā)現(xiàn)可能存在的問(wèn)題,向其他人提出警告,或是給予其他人改進(jìn)的意見(jiàn),必要的時(shí)候或是給其他人演示一下正確的姿勢(shì)。
大部分情況下我作為架構(gòu)師并不需要攬下“核心模塊”開(kāi)發(fā)這種工作,畢竟我能調(diào)配的時(shí)間太零散了,效率難以保證,很多人在專注的情況下比我做的好很多,我只需要保持大局觀需要適度參與就可以了。
總的來(lái)說(shuō),架構(gòu)師和程序員在某些方面上有點(diǎn)像產(chǎn)品經(jīng)理和用戶的關(guān)系,大部分程序員并不會(huì)主動(dòng)告訴你他們想要什么、哪里需要優(yōu)化,甚至自己也不知道這些。想要做出好的產(chǎn)品,捷徑之一就是跟用戶做同樣的事情。
2.為什么別人的系統(tǒng)總是那么爛
很多程序員解決問(wèn)題的能力很強(qiáng),說(shuō)要解決一個(gè)什么問(wèn)題,下午就能寫(xiě)出幾百行代碼把功能實(shí)現(xiàn)了。但是做出來(lái)的東西有種少考慮了什么東西的感覺(jué)。大部分程序都能實(shí)現(xiàn)功能,但是如果把“時(shí)間”這個(gè)也作為一個(gè)考慮的維度的話,就會(huì)意識(shí)到一個(gè)合格的項(xiàng)目需要考慮更多的東西:更通用的使用方式、易于理解的文檔、簡(jiǎn)單而易于擴(kuò)展的設(shè)計(jì),等等。
很多公司應(yīng)該都會(huì)有一些遺留系統(tǒng),它們龐大、笨重、難用、幾乎無(wú)法維護(hù),所有人都在抱怨這些系統(tǒng),并且每天都在想方設(shè)法換掉那些遺留系統(tǒng)。但是一段時(shí)間過(guò)去之后,又會(huì)發(fā)現(xiàn)身邊的新人又開(kāi)始吐槽當(dāng)時(shí)替代遺留系統(tǒng)的那個(gè)系統(tǒng)了。
“大多數(shù)系統(tǒng)當(dāng)初都很好使,功能當(dāng)時(shí)夠用,擴(kuò)展性看起來(lái)也可以,但是這些系統(tǒng)都是開(kāi)發(fā)的人離職之后變壞的?!?/p>
3.成為架構(gòu)師最困難的門檻是什么?
很多人自稱架構(gòu)師的人跟你講一個(gè)架構(gòu)時(shí)簡(jiǎn)直滔滔不絕,各種技術(shù)名詞像是說(shuō)相聲一樣從他嘴里說(shuō)出來(lái),三句話不離高并發(fā)大數(shù)據(jù),但是稍微追問(wèn)一下,就會(huì)發(fā)現(xiàn)很多基本概念的缺失,例如自稱精通高并發(fā)的人說(shuō)不清楚他所謂的高并發(fā)系統(tǒng)的瓶頸在哪里,自稱精通架構(gòu)設(shè)計(jì)的人說(shuō)不明白他的系統(tǒng)怎么保證高可用,自稱超大數(shù)據(jù)量的系統(tǒng)實(shí)際上只有不到100萬(wàn)條數(shù)據(jù),等等。
架構(gòu)師雖然聽(tīng)起來(lái)很高大上,但本質(zhì)上仍然是工程師,不是科學(xué)家,也不是忽悠人的江湖騙子。學(xué)習(xí)再多,也需要實(shí)踐落地。設(shè)計(jì)架構(gòu)方案更多的是在做一些抽象和權(quán)衡:把復(fù)雜的需求抽象成簡(jiǎn)單的模型,從功能、性能、可用性、研發(fā)成本等等方面規(guī)劃如何構(gòu)建一個(gè)系統(tǒng),這些內(nèi)容需要更多的實(shí)踐練習(xí)。
4.如何更高效的學(xué)習(xí)?
大多數(shù)人每天能留給自己學(xué)習(xí)的時(shí)間有限,這個(gè)階段如何提升學(xué)習(xí)效率就成了要解決的重點(diǎn)。
說(shuō)說(shuō)自己提升學(xué)習(xí)效率的心得,其實(shí)非常簡(jiǎn)單:體系化的學(xué)習(xí)。
在重復(fù)了幾次痛苦的學(xué)習(xí)-梳理過(guò)程后,再去看一些獨(dú)立的文章或者資料往往會(huì)事半功倍,因?yàn)槟茉隗w系內(nèi)找到相對(duì)應(yīng)的知識(shí),甚至有時(shí)候一本書(shū)里一頁(yè)只需要看一句話,點(diǎn)破那層窗戶紙,就可以掌握新的知識(shí)。
跟很多人一樣,剛畢業(yè)時(shí)我覺(jué)得作為程序員,只要努力,加上少許天賦便可以獲得一些成績(jī)。
工作一段時(shí)間后,對(duì)自己和其他人的認(rèn)識(shí)也越來(lái)越清晰,逐漸的發(fā)現(xiàn)程序員之間的差距或許比人和猴子之間的差距還大,接受這個(gè)事實(shí)這讓我郁悶了很久。
再過(guò)一段時(shí)間,發(fā)現(xiàn)自己已經(jīng)能夠客觀的評(píng)價(jià)自己的能力,也意識(shí)到了距離并不是那么重要,只要想辦法跑的更快,就足夠了。
5.快速成為架構(gòu)師的學(xué)習(xí)路線
以下五大知識(shí)體系是我從業(yè)多年總結(jié)出來(lái)的經(jīng)驗(yàn),都是當(dāng)前最主流的技術(shù)。
分布式學(xué)習(xí)路線

需要完整的學(xué)習(xí)路線的小伙伴可關(guān)注公眾號(hào)【不脫發(fā)有志青年】?免費(fèi)貨區(qū)
微服務(wù)學(xué)習(xí)路線

需要完整的學(xué)習(xí)路線的小伙伴可關(guān)注公眾號(hào)【不脫發(fā)有志青年】?免費(fèi)貨區(qū)
性能優(yōu)化學(xué)習(xí)路線

框架源碼路線

互聯(lián)網(wǎng)路線

動(dòng)手實(shí)踐項(xiàng)目

需要完整的學(xué)習(xí)路線的小伙伴可關(guān)注公眾號(hào)【不脫發(fā)有志青年】?免費(fèi)貨區(qū)