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