02.01 如何從一名程序員變成架構師,快人一步拿下高薪offer

能有這個疑問的程序員,你的心態已經保證你成功了一半

我基於我的經驗給些建議吧。

第一、知識面要廣

其實我認為做架構師的,從來都是CTO儲備,因為需要涉及的能力太廣。

做架構,其實最簡單的理解就是一句話,就是在有各種限制的情況下想辦法解決問題。

所謂的限制就是性能、穩定性、開發效率、可維護性等因素。

例如,百度貼吧這種應用場景,每天可能有幾十億次的訪問,幾千萬甚至上億次的寫入。肯定是性能要求為先,可能為了做性能的提升犧牲一部分開發的效率。

再如,銀行的應用場景,不是非常在意用戶的體驗和訪問延遲,但是對於數據的安全性和一致性非常非常重視。這種時候,肯定是安全和穩定優先,性能後面考慮。

在限制中做權衡,也就是意味著要做大量的選擇。但做選擇那首先你得知道有哪些選擇。

所謂的性能和安全,除了這幾個字之外,具體的技術實施上,總得知道都有哪些方案吧。

1.例如java體系、php體系、c體系、還有python/nodejs/golang等,各自有各自的優勢劣勢,你總得有過相關開發經驗才能做出正確的選擇吧。道聽途說是沒有發言權的。

2.雖然現在數據庫用的最多的是mysql,但是oracle/pgsql也都有其優勢。

3.現在項目幾乎沒有不用到大數據的,那麼大數據的算法至少得有些理解吧,大數據的平臺得有些經驗吧。

4.玩轉整體項目還有許多許多的點,例如代碼如何管理、上線部署,如何測試保證bug率,系統的監控,服務器部署,灰度發佈等等。

不要聽那些一提架構師就好像多麼高大上,做的都是些設計師類似的工作,系統設計、軟件設計等。那些都是人云亦云YY出來的。

沒有哪個互聯網公司讓你去專門做設計,因為互聯網公司領導們統統無一例外需要都是功能的實現,戰略戰術想法的實現。

所有的大型系統架構,全部都是基於面臨的問題一步一步解決迭代出來的。沒有場景會讓人一步到位(甚至哪怕提前一段提前量)去設計一套牛逼系統的,因為世界變化太快,項目如果不趕緊實現,明天可能就掛了,哪有那些閒心去給未來幾年做設計。

所以,做架構師最關鍵的是對整個項目的把控能力,可以讓項目高效率的運轉。

第二、卓越的代碼能力

想要成為架構師,首先得是一個優秀的程序員。怎麼樣才算優秀的程序員呢?

光寫代碼不思考、不學習肯定是不行的。

最明確的,就是得深入掌握各類數據結構、各類設計模式、計算機網絡、操作系統、各種常見的架構模式等。這些提的非常多,但是能做到深入理解的我感覺可能沒幾個人。

包括我自己,當年剛開始看設計模式的時候,1個多月就感覺已經全部理解了。但是之後每次或者複習的時候,或者看到寫的非常好的代碼的時候,重新去溫故此方面的知識,都能感到有新的收穫、都會有更深的領悟。

而且,理解也僅僅是開始。如何完完全全的融入自己的代碼中,才是關鍵。

寫代碼經常也同樣充斥著架構設計的感覺。其實我認為,程序員寫代碼叫編碼或coding,而架構師寫代碼就叫架構設計。

因為兩者寫代碼時考慮問題的角度完全不同。程序員可能更多考慮的是如何實現功能,而優秀的程序員才可能會考慮的例如性能、可讀性、可維護性的問題。

而這些對於架構師來說則是必須考慮的,考慮的緯度經常還會更多一些。

所以,不要想著一步到位的跳過優秀程序員而直接成為架構師。不現實。

第三、對某些相關領域要有深度

剛才講了技術的廣度,但是如果什麼都知道,但是什麼也不善長,沒有什麼精通的。那依然只能做個程序員。

那麼哪些領域算是關鍵的領域呢?

到此基本就由業務方向的不同而區分不同的架構師了。

例如金融領域的架構師,可能需要金融知識。

例如大數據領域,可能對hadoop/spark/hive之類的大數據領域知識要求深一些。

再如高併發領域,可能對整個系統的性能優化,分佈式系統設計等更深入一些。

第四、要有技術洞見

這個技術洞見是借用《重新定義公司》裡的詞。換個易理解的詞,就是技術上的遠見卓識。

以事後諸葛亮的方式舉幾個例子:

1.當年的京東如果選用的不是windows平臺,可能發展比現在好不少。

2.百度如果不是李XX的目光短淺,總是比市場慢幾拍,現在也不致於被AT遠遠甩開。

這種事太多太多。

不要感覺好像很虛幻,如果你現在身為一個創業公司的架構師,你現在的一個貌似正確的決策可能直接導致未來公司的大量損失,甚至倒閉。

第五、管理能力

架構師少有不帶項目、不帶人的,所以管理能力肯定也是必須。

但管理能力是個很大的主題,這裡就不多說了。


回頭看看,其實我寫的也都是些方向性的東西。

但是由於架構師職業的特殊性,很難給出一條具體的道路,我分享一套針對Java程序員技術進階學習思路

1.架構鞏基

如何從一名程序員變成架構師,快人一步拿下高薪offer

2.開源框架

如何從一名程序員變成架構師,快人一步拿下高薪offer

3.高性能架構

如何從一名程序員變成架構師,快人一步拿下高薪offer

4.微服務架構

如何從一名程序員變成架構師,快人一步拿下高薪offer

5.團隊協作開發

如何從一名程序員變成架構師,快人一步拿下高薪offer

6.B2C項目實戰

如何從一名程序員變成架構師,快人一步拿下高薪offer

第六,總結

作為架構師,其實所謂的設計能力並非關鍵,因為一個項目完全憑空設計的機會很少,而且也都可以基於當時情況的權衡,直接使用別人們的設計方案的組合。

這就是為什麼看架構師相關的帖子看多了,就會發現所謂的分佈式架構、大型網站架構,基本來來回回就那麼幾種。導致是個人出來都能喊兩句架構怎樣怎樣。

那麼關鍵的是什麼?是項目的把控能力,以及面對具體問題的解決能力。

而要鍛鍊項目的把控能力和解決一些具體問題的能力,有時候光靠公司裡的項目是不夠的。

因為公司項目中你往往只是其中的一員,只是幹某個具體的工作,例如前端js、app、後端業務等。項目整體的運轉情況你一般是瞭解不到的。即使運氣好,項目負責人對此的把控很到位,而且還願意全部講解給你聽,但畢竟很多環境你沒動手做出,光憑別人說是不大可能有深刻的理解的。

學習是無止境的!

轉發+關注我後臺私信回覆“Java”領取獲取往期Java高級架構資料、源碼、筆記、視頻。Dubbo、Redis、設計模式、Netty、zookeeper、Spring cloud、分佈式、高併發等架構技術

如何從一名程序員變成架構師,快人一步拿下高薪offer

合理利用自己每一分每一秒的時間來學習提升自己,不要再用"沒有時間“來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個交代!


分享到:


相關文章: