技術大佬們都是怎麼學習的?

整理:小林 來源:oschina.net/question/3774191_2320056

這個問題我曾經也很好奇過,那些成爲技術大佬的人當初是怎麼學習,以及怎麼成長過來的,因爲我相信他們也是從 0 開始的,也會經歷困難期之類的。或許,站在大佬們的 “肩膀上”,可以走的更遠。

然後這個問題下面,有位 “無名大佬” 回答了這個問題,我看完後覺得相當不錯,重新排版和整理了下,分享給大家一起共勉。

無論你是在校學生,還是職場老鳥,我相信這些想法和建議都會對你有所啓發。


熟悉更多業務

不管是不是你負責的;熟悉更多代碼,不管是不是你寫的。

這樣做有很多好處,舉幾個簡單的例子:


熟悉端到端

比如說你負責 Web 後臺開發,但實際上用戶發起一個 HTTP 請求,要經過很多中間步驟纔到你的服務器(例如瀏覽器緩存、DNS、Nginx 等)。

服務器一般又會經過很多處理纔到你寫的那部分代碼(路由、權限等)這整個流程中的很多系統或者步驟,絕大部分人是不可能去參與寫代碼的。

但掌握了這些知識對你的綜合水平有很大作用,例如方案設計、線上故障處理這些更加有含金量的技術工作都需要綜合技術水平。

“系統性”、“全局性”、“綜合性” 這些字眼看起來比較虛,但其實都是技術大牛的必備的素質,要達到這樣的境界,必須去熟悉更多系統、業務、代碼。


自學

一般在比較成熟的團隊,由於框架或者組件已經進行了大量的封裝,寫業務代碼所用到的技術確實也比較少。

但我們要明白 “唯一不變的只有變化”,框架有可能要改進,組件可能要替換,或者你換了一家公司,新公司既沒有組件也沒有框架,要你從頭開始來做。

這些都是機會,也是挑戰,而機會和挑戰只會分配給有準備的人,所以這種情況下我們更加需要自學更多東西,因爲真正等到要用的時候再來學已經沒有時間了。

以 Java 爲例,大部分業務代碼就是 if-else 加個數據庫操作,但我們完全可以自己學些更多 Java 的知識,例如垃圾回收,調優,網絡編程等。

這些可能暫時沒用,但真要用的時候,不是 Google 一下就可以了,這個時候誰已經掌握了相關知識和技能,機會就是誰的

以垃圾回收爲例,我自己平時就抽時間學習了這些知識,學了 1 年都沒用上,但後來用上了幾次,每次都解決了卡死的大問題。

而有的同學,寫了幾年的 Java 代碼,對於 stop-the-world 是什麼概念都不知道,更不用說去優化了。

你負責的系統和業務,總有不合理和可以改進的地方,這些 “不合理” 和“可改進”的地方,都是更高級別的怪物,打完後能夠增加更多的經驗值。

識別出這些地方,並且給出解決方案,然後向主管提出,一次不行兩次,多提幾次,只要有一次落地了,這就是你的機會。

例如:

只要你去想,其實總能發現可以改進的地方的;如果你覺得系統哪裏都沒有改進的地方,那就說明你的水平還不夠,可以多學習相關技術,多看看業界其它優秀公司怎麼做。

我 2013 年調配到九遊,剛開始接手了一個簡單的後臺系統,每天就是配合前臺做數據增刪改查,看起來完全沒意思,是吧?

如果只做這些確實沒意思,但我們接手後做了很多事情:

還有其他很多優化,後來我們這個組承擔了更多的系統,後來這個小組 5 個人,負責了 6 個系統。


Do exercise

在做職業等級溝通的時候,發現有很多同學確實也在嘗試 Do more、Do better,但在執行的過程中,幾乎每個人都遇到同一個問題:光看不用效果很差,怎麼辦?

例如:

諸如此類問題還有很多,我這裏分享一下個人的經驗,其實就是 3 個詞:learning、trying、teaching!


Learning

這個是第一階段,看書、Google、看視頻、看別人的博客都可以,但要注意一點是 “系統化”,特別是一些基礎性的東西,例如 JVM 原理、Java 編程、網絡編程,HTTP 協議等等。

這些基礎技術不能只通過 Google 或者博客學習,我的做法一般是先完整的看完一本書全面的瞭解,然後再通過 Google、視頻、博客去有針對性的查找一些有疑問的地方,或者一些技巧。


trying

這個步驟就是解答前面提到的很多同學的疑惑的關鍵點,形象來說就是 “自己動手豐衣足食”,也就是自己去嘗試搭建一些模擬環境,自己寫一些測試程序。

例如:

還有很多方法,這裏就不一一列舉,簡單來說,就是要將學到的東西真正試試,才能理解更加深刻。

印第安人有一句諺語:I hear and I forget. I see and I remember. I do and I understand ,而且 “試試” 其實可以比較簡單,很多時候我們都可以自己動手做。

當然,如果能夠在實際工作中使用,效果會更好,畢竟實際的線上環境和業務複雜度不是我們寫個模擬程序就能夠模擬的,但這樣的機會可遇不可求,大部分情況我們還真的只能靠自己模擬,然後等到真正業務要用的時候,能夠信手拈來。


Teaching

一般來說,經過 Learning 和 Trying,能掌握 70% 左右,但要真正掌握,我覺得一定要做到能夠跟別人講清楚。

因爲在講的時候,我們既需要將一個知識點系統化,也需要考慮各種細節,這會促使我們進一步思考和學習。

同時,講出來後看或者聽的人可以有不同的理解,或者有新的補充,這相當於繼續完善了整個知識技能體系。

這樣的例子很多,包括我自己寫博客的時候經常遇到,本來我覺得自己已經掌握很全面了,但一寫就發現很多點沒考慮到

組內培訓的時候也經常看到,有的同學寫了 PPT,但是講的時候,大家一問,或者一討論,就會發現很多點還沒有講清楚,或者有的點其實是理解錯了。

寫 PPT、講 PPT、討論 PPT,這個流程全部走一遍,基本上對一個知識點掌握就比較全面了。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/cPEvghNmhCLlTJD4WJm3lQ