工作五年十年後,別人成了架構師,自己還在基層打滾,原因是什麼?千鋒廣州小編髮現職場上無法成功升遷的原因有很多,沒有持續學習、學習效果不好、無法通過心儀公司的的面試等等,一定是很重要的原因。那麼該如何構建自己的的知識體系,持續學習進步呢?下面和千鋒廣州小編一起來看看吧!
把自己當成一臺計算機,既有輸入,也要有輸出,用輸出倒逼輸入。
學什麼
基礎與應用
近些年誕生了許多新技術,比如最時髦的AI(目前還在智障階段),數學基礎是初中就接觸過的概率統計。萬丈高樓從地起,不要被新工具或者中間件迷住雙眼,一味地追新求快。基礎知識是所有技術的基石,在未來很長的時間都不會變化,應該花費足夠的時間鞏固基礎。
以數據結構和算法為例,大家閱讀一下Java的BitSet的源碼,裡面有大量的移位操作,移位運算掌握的好,看這份源碼就沒問題。Java同步工具類AQS用到了雙向鏈表,鏈表知識不過關,肯定搞不懂它的原理。互聯網大廠都喜歡考算法,為了通過面試也要精通算法。
以Java工程師應該掌握的知識為例,按重要程度排出六個梯度:
1. 第一梯度:計算機組成原理、數據結構和算法、網絡通信原理、操作系統原理;
2. 第二梯度:Java基礎、JVM內存模型和GC算法、JVM性能調優、JDK工具、設計模式;
3. 第三梯度:Spring系列、Mybatis、Dubbo等主流框架的運用和原理;
4. 第四梯度:MySQL(含SQL編程)、Redis、RabbitMQ/RocketMQ/Kafka、ZooKeeper等數據庫或者中間件的運用和原理;
5. 第五梯度:CAP理論、BASE理論、Paxos和Raft算法等其他分佈式理論;
6. 第六梯度:容器化、大數據、AI、區塊鏈等等前沿技術理論;
有同學認為第五梯度應該在移到第一梯度。其實很多小公司的日活猶如古天樂一樣平平無奇,離大型分佈式架構還遠得很。學習框架和中間件的時候,順手掌握分佈式理論,效果更好。
廣度與深度
許多公司的招聘JD沒有設定技術人員年齡門檻,但是會加上一句“具備與年齡相當的知識的廣度與深度”。多廣才算廣,多深才算深?這是很主觀的話題,這裡不展開討論。
如何變得更廣更深呢?突破收入上升的瓶頸,發掘自己真正的興趣 。
大多數人只是公司的普通職員,收入上升的瓶頸就是升職加薪。許多IT公司會對技術人員有個評級,如果你的評級不高,那就依照晉級章程努力升級。如果你在一個小公司,收入一般,發展前景不明,準備大廠的面試就是最好的學習過程。在這些過程中,你必然學習更多知識,變得更廣更深。
個人興趣是前進的動力之一,許多知名開源項目都源於作者的興趣。個人興趣並不侷限技術領域,可以是其他學科。我有個朋友喜歡玩山地自行車,還給一些做自行車話題的自媒體投稿。久而久之,居然能夠寫一手好文章了,我相信他也能寫好技術文檔。
哲學
哲學不是故作高深的學科,它的現實意義就是解決問題。年輕小夥是怎麼泡妞的?三天兩頭花不斷,大庭廣眾跪求愛。這類套路為什麼總是能成功呢?禮物滿足女人的物慾,當眾求愛滿足女人的虛榮心,投其所好。食堂大媽打菜的手越來越抖,辣子雞丁變成辣子辣丁,為什麼呢?食堂要控制成本,直接提價會惹眾怒。
科學上的哲學,一般指研究事物發展的規律,歸納終極的解決方案。軟件行業充滿哲學味道的作品非常多,比如《人月神話》。舉個例子,當軟件系統遇到性能問題,嘗試下面兩種哲學思想提升性能:
1. 空間換時間:比如引入緩存,消耗額外的存儲提高響應速度。
2. 時間換空間:比如大文件的分片處理,分段處理後再彙總結果。
設計穩健高可用的系統,嘗試從三個方面考慮問題:
3. 存儲:數據會丟失嗎,數據一致性怎麼解決。
4. 計算:計算怎麼擴容,應用允許任意增加節點嗎。
5. 傳輸:網絡中斷或擁塞怎麼辦。
從無數的失敗或者成功的經驗中,總結出高度概括性的方案,讓我們下一步做的更好。
英語
英語是極為重要的基礎,學好英語與掌握編程語言一樣重要。且不說外企對英語的要求,許多知名博客就是把英文翻譯成中文,充當知識的搬運工。如果英語足夠好,直接閱讀一手英語資料,避免他人翻譯存在的謬誤。
怎麼學
知識體系
體系化的知識比零散的更容易記憶和理解,這正如一部好的電視劇,劇情環環相扣才能吸引觀眾。建議大家使用思維導圖羅列知識點,構建體系結構,如下圖所示:
![大牛是如何煉成的:程序員該如何構建自己的知識體系並持續學習?](http://p2.ttnews.xyz/loading.gif)
克服遺忘
高中是我們知識的巔峰時刻,每週小考每月大考,教輔資料堆成山,地獄式的反覆操練強化記憶。複習是對抗遺忘的唯一辦法。大腦的遺忘是有規律的,先快後慢。一天後,學到的知識只剩下原來的25%,甚至更低。隨著時間的推移,遺忘的速度減慢,遺忘的數量也就減少。
![大牛是如何煉成的:程序員該如何構建自己的知識體系並持續學習?](http://p2.ttnews.xyz/loading.gif)
每個人的遺忘程度都不一樣,建議第二天覆習前一天的內容,七天後複習這段時間的所有內容。
碎片時間
不少朋友利用碎片時間學習,比如在公交上看公眾號的推送。其實我們都高估了自己的抗干擾能力,如果處在嘈雜的環境,注意力容易被打斷,記憶留存度也很低。碎片時間適合學習簡單孤立的知識點,比如鏈表的定義與實現。
學習複雜的知識,需要大段的連續時間。圖書館是個好地方,安靜氛圍好。手機放一邊,不要理會QQ微信,最好閱讀紙質書,泡上一整天。有些城市出現了付費自習室,提供格子間、茶水等等,也是非常好的選擇。
用起來
技術分享
我們看到很多大佬都會發技術文章還有會在視頻給大家做分享,其實這也是加強自己技術的一種方法,就是把自己知道的技術用出來,知道所以然也能講出所以然。準備PPT和演講內容,給同事來一場技術分享。不光復習知識,還鍛鍊口才。曾經有個同事說話又快又急,口頭禪也多,比如"對吧、是不是”,別人經常聽不清,但是他本人不以為然。領導讓他做了幾次技術分享,聽眾的反應可想而知,他才徹底認清缺點。
堅持寫技術博客,別在意你寫的東西在網上已經重複千百遍。當自己動手的時候,才會意識到眼高手低。讓文章讀起來流暢清晰,需要嘔心瀝血的刪改。寫作是對大腦的長期考驗,想不到肯定寫不出,想不清楚肯定寫不清楚。
造個輪子
我們經常說不要重複造輪子。為了開發效率,可以不造輪子,但是必須具備造輪子的能力。建議造一個簡單的MQ,你能用到通信協議、設計模式、隊列等許多知識。在造輪子的過程中,你會頻繁的翻閱各種手冊或者博客,這就是用輸出倒逼輸入。
閱讀更多 艾特程序員 的文章