小團隊通常 10 人左右,其中經常是技術最牛的人作架構師(或TL)。因此,架構師在廣大碼農中的佔比大概平均不到 10%。而架構師也能夠分爲初級、中級、高級三檔,江湖上真正高水平的軟件架構師就更少了。程序員
因此,大部分(超過九成的)碼農幹上許多年,仍是作不了架構師,這是什麼緣由形成的呢?架構
1:碼農分爲真的能寫代碼的,以及自認爲能寫代碼的。併發
2:真的能寫代碼的碼農又分爲自認爲寫的不錯的,以及真的還不錯的。分佈式
3:真的能寫不錯代碼的碼農又分爲會鑽研會不斷優化的,以及安於現狀的。微服務
4:會鑽研的碼農又分爲喜歡廣度瞭解新技術走馬觀花的,以及深刻鑽研用到知識的。高併發
瞭解廣度的碼農又有少部分願意深刻某些技術,喜歡深刻研究的又每每缺少廣度知識。學習
5:極少深度廣度都關注的碼農又分爲爲技術而技術和爲業務而技術的。優化
純爲技術而技術的碼農在國內的軟件行業需求太少,且需求的每每不是應用軟件領域了。3d
6:爲業務而技術的深度廣度都瞭解的碼農,又須要有良好的溝通能力。cdn
7:而溝通好的,又有一部分當PM去了。
8:而後剩下的,又有一部分慢慢脫離實際開發(再也不作任何實現)或者開始依靠拿各類中間件搭積木來做爲「架構」手段。
9:除去這些,剩下對業務有必定了解,對技術廣度上有多種涉獵,深度上對部分技術研究完全,還有很重要的一點,考慮問題足夠細緻全面。
10:細緻全面善於溝通,技術上深度廣度都沒問題, 又喜歡這個工做,還會不時作底層實現,從業務和開發兩個角度出發,搭出「架構」來是爲了開發效率,爲了運行效率,爲了開發質量,爲了業務靈活和運行穩定,爲了維護方便等等這樣的人,我的認爲能夠稱爲「架構師」。
而真能知足這種需求的,別說10%的比例,1%能不能達到我也持懷疑態度。其實如今的「架構師」大多數都停留在8這個層次,甚至不少在5這個層次就當上title上的架構師了。
總之,成爲架構師,不只僅是工做上的簡單積累,更須要主動接納工做外的大量知識,同時,對性格上對於非技術能力上也有必定的要求,不只如此連思惟方式都很重要,要不斷找準本身定位,不斷思考如何搭建架構師知識體系?
學會如何分析源碼?
大部分程序員都會「寫」代碼,或者至少會抄代碼和改代碼。可是,會讀代碼的並不在多數,會讀代碼又真正讀懂一些大項目的源碼的,少之又少。由於它是兩個緣由形成的:
1:咱們全部的教育和培訓都在強調怎麼寫代碼,並無教你們如何讀代碼
2:大多數工做場景都是一個蘿蔔一個坑,咱們只須要了解一個系統的局部便能開展工做,讀不相干的代碼,彷佛沒用
因此,要養成源碼三問的習慣:
爲何是分佈式?
首先須要說明的是,分佈式系統是一個複雜且寬泛的研究領域,學習一兩門在線課程,看一兩本書可能都是不能徹底覆蓋其全部內容的。
微服務爲何會這麼火?
相信你們都瞭解業務愈來愈複雜,服務分層,微服務架構是架構升級的必由之路,而對於微服務的優勢相信你們都不陌生。
好比:易於開發與維護 / 微服務相對小,易於理解 / 啓動時間短,開發效率高 / 獨立部署 / 伸縮性強 / 每一個服務均可以在橫向和縱向上擴展 / 微服務架構能夠更好將架構和組織相匹配 / 每一個團隊獨立負責某些服務,得到更高的生產力 / 下降嘗試新技術的成本......
程序員到底要不要學習JVM?
總有人問這個東西好像用不上,因而要不要學這樣的問題,而後又總有人擔憂一直搬磚整天作些重複沒提高的東西。
若是你這輩子只甘心作一個平庸的Java碼農,那麼你徹底沒有必要去學習JVM相關的知識。
話很少說,附上學習體系圖:
被咱們忽略掉的工程化專題
在IT產業中,寡頭化出現表明着創業公司減小--沒人再去用聲勢浩大的發佈會講故事、沒人再去宣傳本身拿了多少融資。
這一代中國人自小的教育不比歐美的STEAM,而是重學術、輕手藝。咱們每每會爲工科和產能過剩畫上等號。強大的資本和技術門檻爲這些產業蒙上了一層神祕的面紗,讓普通人很難真正瞭解到其中技術和工藝的複雜程度,也就更難明白其中的價值。可正是由於中國的工程化能力,才讓咱們有機會走到AI時代的第一梯隊,而不只僅是靠學術研究能力。
附上思惟腦圖:
沒有高併發經驗,想進大公司該怎麼辦?
假如沒有靠譜的公司,接觸不到高併發的業務場景怎麼辦?你永遠解決的是小問題,工做10年技術也未必提高多少。
不少程序員也常常找我說,沒有經驗就沒有靠譜的公司收,沒有靠譜的公司也就沒有經驗,我看了無數的書,本身作了無數的實驗拼命想找個靠譜公司去深刻,可是感受好難,簡直是個死循環
你們都比較關注高併發,緣由很簡單,想去BAT這樣的大公司,你必需要有高併發的經驗。今天普及下高併發的知識,但願你們對高併發有一個正確的認識。
學習千遍,不如項目實戰成功一次
有人說:項目實戰相信不少程序員都多少會有的,但是咱們這個還要學習什麼呢?
個人回答是:那就要看你想不想成爲一個架構師了,爲何98%的程序員工做10年,一生還只是一個開發者,程序員們都要想想這個問題,我是否是須要提高了。
我認爲,學習項目實戰最重要的仍是學習項目管理,做爲程序員,都應該學點項目管理。
凡事皆爲「項目」項目的兩類屬性(複雜的邏輯,龐大的信息量)
這纔是咱們學習「項目實戰」的終極意義。
如今做爲程序員的你,或許想提高本身,卻找不到突破口,公司沒人帶。又或許你已經工做6年了,卻仍是很迷茫,不少知識都仍是不懂,也沒有達到本身指望的一個職位,薪資。
相信你們,在學習的路上也遇到了很多的坑,有人放棄,有人堅持,可是我相信做爲程序員的你不會想終其一輩子也只是一個開發,到年齡就會被公司辭退。
因此,你們若是想往技術路上走的,想成爲架構師的,必定要保持終生學習的態度,讓學習力成爲核心競爭力,才能不被時代所淘汰,這裏我也分享本身收集的系統的學習資料,和幾套學習路徑圖給你們,真心的但願能幫助到你們。
資料獲取方式:加入Java架構學習交流Qqun:1017599436,管理員處免費領取資料。