要怎樣努力,才能修煉成一個(gè)架構(gòu)師?

年輕程序員如何成長?

我一般會(huì)把程序員分為初級(jí)、中級(jí)和高級(jí)。他們的區(qū)別在哪兒呢?初級(jí)可以在別人的指導(dǎo)下完成工作,中級(jí)可以獨(dú)立地完成工作,高級(jí)不僅僅可以指導(dǎo)別人的工作,而且可以很好地提煉自己的方法論,用這些方法論去影響別人,幫助他們成長。而架構(gòu)師,他更多的職責(zé)則應(yīng)該是確保一個(gè)項(xiàng)目不會(huì)因?yàn)榧夹g(shù)的問題而失敗,比如是不是伸縮性不足導(dǎo)致大量用戶涌入時(shí)支撐不住、靈活性差導(dǎo)致功能很難添加,設(shè)計(jì)過于復(fù)雜導(dǎo)致開發(fā)持續(xù)延期,技術(shù)選型錯(cuò)誤導(dǎo)致成本和穩(wěn)定性出現(xiàn)問題,等等。

我們公司采用了 buddy 制度,簡單來說就是任何一個(gè)新員工入職,都會(huì)指定一個(gè) buddy ,在入職的前三個(gè)月,你不管什么事情都可以問他,這個(gè)制度對新員工快速平滑地融入團(tuán)隊(duì)幫助很大。如果你的公司沒有這個(gè)制度,你可以考慮跟你的上級(jí)申請一個(gè) buddy, 你的 buddy 也許很忙,那么你可以考慮一下定期(比如每天中午花半個(gè)小時(shí))跟 buddy 核對一下之前遇到的問題。這些都是可以讓你快速融入團(tuán)隊(duì)的辦法。

一般過了 2 年左右,很多人就不再能直接從項(xiàng)目或者周圍的同事身上獲得成長了,這個(gè)時(shí)候一個(gè)比較好的手段是跳出現(xiàn)在的圈子,多參加一些本地社區(qū)的活動(dòng),多參加 QCon 這類的技術(shù)會(huì)議(當(dāng)然看直播或者視頻也行),看看這個(gè)也就的標(biāo)桿長什么樣,他們在解決什么問題,他的知識(shí)體系有哪些是你缺少的。我很認(rèn)同的一句話是“參加會(huì)議的目的不是為了學(xué)到什么,而是為了知道要學(xué)習(xí)什么”。找到一個(gè)好的標(biāo)桿,相信你在職業(yè)生涯的前面 5 年會(huì)一直快速成長。

如何在團(tuán)隊(duì)中脫穎而出?

方法其實(shí)很多,每個(gè)人都可能有不同的選擇,甚至說在不同的團(tuán)隊(duì),你的做法也可能會(huì)不一樣,下面僅就個(gè)人的經(jīng)驗(yàn)講講我自己的看法:

首先一點(diǎn)是要把手邊的活做扎實(shí),如果這點(diǎn)做不到,你的意見比較容易被人輕視和質(zhì)疑。

其次是要經(jīng)常參與項(xiàng)目中的設(shè)計(jì)與技術(shù)相關(guān)的討論,勇于發(fā)表自己的意見,但這個(gè)時(shí)候要學(xué)習(xí)一些討論問題的常識(shí),比如說對于別人的方案,要先去接受而不是拒絕,然后從兩個(gè)方面去考慮,一方面是這個(gè)方案有什么漏洞,禮貌地提出潛在的漏洞,等待對方拋出他的觀點(diǎn)。另外一方面這個(gè)方案有什么可以延伸或者擴(kuò)展的地方,是否可以根據(jù)對方的方案拋出一個(gè)更好的方案。對于自己的方案,不要過于強(qiáng)勢,畢竟很多事情一個(gè)問題有超過一個(gè)正確答案,自己的方案沒選上也要有平常心。

對于團(tuán)隊(duì)來講很重要的一點(diǎn)其實(shí)是擔(dān)當(dāng),也就是你是否愿意為某個(gè)小項(xiàng)目整體來承擔(dān)責(zé)任,當(dāng)然這也意味著你需要再代碼之外做很多事情,包括很多溝通、妥協(xié)和持續(xù)跟進(jìn)的事宜。這一點(diǎn)對于那些有志于在管理或者產(chǎn)品方向有進(jìn)一步發(fā)展的人尤其重要。如果你在很多事情上表現(xiàn)出不錯(cuò)的擔(dān)當(dāng)能力,相信你的上司一定不會(huì)埋沒你這種人才。

如何做好架構(gòu)?

從我自己來看,我覺得我把自己定位從開發(fā)轉(zhuǎn)為架構(gòu)的一個(gè)時(shí)間點(diǎn)在于,我不再是在尋找一個(gè)問題的答案,而是在從問題的一堆答案中評估哪個(gè)對我們更合適,這個(gè)時(shí)候我感覺到我已經(jīng)能充分駕馭這個(gè)問題,而且也有信心來面對未來更多的挑戰(zhàn)。

如果你要走架構(gòu)這條路,我有如下的幾個(gè)建議:

首先是要多讀一些書,其中最基礎(chǔ)的是類似于重構(gòu)和設(shè)計(jì)模式這種書,你需要知道很多小尺度級(jí)別上的問題解決技巧(如果你要做導(dǎo)演,你首先要做得是能熟練地把一個(gè)句子翻譯為一組鏡頭),以及這些作者梳理問題的方式,反過來問一下自己,如果讓你來寫設(shè)計(jì)模式這本書,你有哪些知識(shí)點(diǎn)可以寫?你如何組織這些知識(shí)點(diǎn)?如何讓大家接受你的觀點(diǎn)。

看完這兩本書之后,非常推薦你看一下 Martin Fowler 寫的《企業(yè)應(yīng)用架構(gòu)模式》和 Eric Evans 的《領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)》這類書,他能擴(kuò)大你的視野,專注于更有意義的問題,而不是設(shè)計(jì)模式究竟有多少種這種缺乏意義的問題。有一句話叫,“如果要成功,就要遠(yuǎn)離那些廉價(jià)的娛樂”。類似的,對于軟件工程師來講,要想讓自己更強(qiáng),就要遠(yuǎn)離那些廉價(jià)的爭論(vim vs emacs, linux vs unix, redhat vs debian, 這些爭論其實(shí)并沒有太大的價(jià)值)。

其次,你要對大量開源軟件的實(shí)際特性有深入的了解,容量究竟多大?高可用怎么做?如何擴(kuò)容?是否易維護(hù)?這些知識(shí)部分來自網(wǎng)上的各種測試和經(jīng)驗(yàn)文章,部分還要來自你的親手測試。作為架構(gòu)師,你的每一個(gè)技術(shù)選型都是在挖坑,給你的開發(fā)、測試、運(yùn)維團(tuán)隊(duì)挖坑,而你的作用之一,就是保證你的團(tuán)隊(duì)能夠在你的幫助下從坑里走出來。

另外,要解決很多大尺度的問題,你需要從很多同行去吸收經(jīng)驗(yàn),我個(gè)人的經(jīng)驗(yàn)就是,閱讀每年兩次 QCon 和 ArchSummit 架構(gòu)相關(guān)的幻燈片,先只看題目和問題部分,自己想一想解決方案是啥,然后再看一下演講者給出的解答,通過這種方式來淬煉自己的思維,豐富自己的工具箱。我想提醒的一點(diǎn)是,由于軟件行業(yè)還遠(yuǎn)不成熟,所以一個(gè)架構(gòu)師會(huì)長期跟進(jìn)一個(gè)項(xiàng)目,這就導(dǎo)致了一個(gè)架構(gòu)師如果不主動(dòng)去練習(xí)的話,一輩子也做不了幾個(gè)架構(gòu),至少相對于建筑專業(yè)的結(jié)構(gòu)工程師來講,我們每年的項(xiàng)目缺少少很多。你做的架構(gòu)越少,你就越容易自滿。

最后,我希望你是一個(gè)終身學(xué)習(xí)者,不管多忙,一定要規(guī)劃你的學(xué)習(xí)時(shí)間,一個(gè)星期也許不用太多,幾個(gè)小時(shí)即可,但這幾個(gè)小時(shí)一定要用在刀刃上,所以最好是哪些需要幾十個(gè)小時(shí)甚至更多時(shí)間才能弄清楚的課題,而且一直要堅(jiān)持到這個(gè)課題結(jié)束。千萬不能是學(xué)一點(diǎn)這個(gè)概念,遇到新事物,就馬上轉(zhuǎn)移方向。如果你有這樣的習(xí)慣,我建議你先把新想法放到一個(gè)池子里,等手邊的課題學(xué)習(xí)完,再到池子里邊撈一個(gè)新課題來繼續(xù)學(xué)習(xí)。不過關(guān)于學(xué)習(xí),這個(gè)是一個(gè)很大的話題,就不在這兒闡述了。

下面就講一下java架構(gòu)師怎么學(xué)習(xí)才算合格

首先 ? ?工程化專題

高性能及分布式專題

雙十一技術(shù)架構(gòu)專題-九陽真經(jīng)

性能調(diào)優(yōu)

想學(xué)習(xí)以上進(jìn)階技術(shù)加群:561614305

源碼分析

大家可以點(diǎn)擊加入群:561614305【JAVA大神交流二群】里面有Java高級(jí)大牛直播講解知識(shí)點(diǎn) 走的就是高端路線 (如果你想跳槽換工作 但是技術(shù)又不夠 或者工作上遇到了 瓶頸 我這里有一個(gè)JAVA的免費(fèi)直播課程 講的是高端的知識(shí)點(diǎn)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容