除了看書寫代碼你還能怎樣學習技術

程序員需要學習的技術無論深度和廣度都很可觀,學習久了之后總需要回頭總結一下自己的學習路線和方法,才有可能在技術水平上提升層次。許多技術好的程序員,他們跟普通程序員的差別一般不只是前者花費了更多時間在技術上,往往也是因為他們在逐步的積累中找到了更高效的學習方法。

寫代碼或者說廣義的計算機技術,本質上都是靠自己動手來學習、研究的。我們一開始的學習方式,往往是邊看書邊照著敲下代碼,偶爾也去網上搜索一些博客、文檔輔以學習;之后慢慢的入門了,大概了解到自己所學領域的輪廓后,就可以寫一些自己的項目、在自己感興趣的領域研究得更深一些。

那么在我們一步步走向更高層次的時候,除了看書和寫代碼,我們還能怎樣學習技術呢?

我在這里分享一點我自己的學習方法:

1.學習使用Github

Github不只是一個方便的托管代碼、合作開發的平臺,很大程度上也是一個集合了世界上所有優質代碼的知識寶庫。

一方面我們自己可以把它作為一個托管自己代碼的平臺,把自己平時寫的一些小項目、造的輪子放上去,每天都commit一次作為按時打卡。很多代碼只有敢于把它開源出來給人家看到,才能讓自己用更好的態度對待它。想想你寫的代碼將來會有很多人給你做code review,而且是一幫看見一個函數超出了一個屏幕都會罵一句的人,你在命名變量、寫函數的時候都會再三考慮。另一方面,當我們想要更好的理解我們平時所使用的一些庫、理解它的設計時,我們可能會考慮自己造輪子。試著把這些輪子也放到github上,并且以獲得star甚至pull request作為目標,也是一種很有挑戰性的任務。

另一方面,我們可以在github上閱讀其他大牛的代碼。以前我總覺得在github上讀代碼很難堅持下去,watch、star了不少優秀的項目,但都不了了之了。實際上我們可以通過給人家的代碼解issue來“逼迫”去閱讀代碼、理解其設計。一個有名的項目在issue頁一般都會有不少其他人提出的問題,某些是自己對于庫的使用問題,另一些是庫本身存在的Bug等局限性。試著去解issue(回答他人的問題或提交batch給作者),絕對是一種很好的閱讀習慣。

(ps:給大家推薦一款叫octotree的chrome插件,可以讓你把github當成ide一樣閱讀代碼)

2.Stackoverflow

相比github,stackoverflow更是一個可以檢驗自己所學、分享自己知識的平臺。

我最近把它當成知乎來刷,試著回答了不少問題,越發感受到它是一個好的學習平臺。在首頁綁定自己感興趣的話題,可以是自己所專精的、也可以是自己最近感興趣想要開始學習的一個全新的領域,自己的timeline上則會出現相關話題的提問。因為在這里你的回答必須對提問者有幫助、保證嚴謹性,否則很容易被別人點down,所以你的每個回答都必須保證自己對問題了解的足夠清楚、能夠提出建設性的建議或解決方法。那么這就要求你的知識的全面性和扎實性。

我認為stackoverflow可以用來幫助我們進行如下的學習:

(1)回答一些較為基礎的實際問題,幫助自己夯實基礎、回憶一些基礎庫等的使用,并且可以作為一個日常的練習;

(2)試著尋找一些較為進階、涉及更多底層原理的問題,這時你可能就需要進行一些搜索和調研,自己先把這一塊研究得夠深,然后才能在這樣一個較大的問題上提出自己的一些見解,甚至跟其他人討論從而學習、理解得更深。我為了回答一個有關Android內存模型的問題,又復習了一遍GC相關的一些問題,并且發現了更多可以研究的話題(比如匿名共享內存等),收獲很大;

(3)搜索一些最熱門的問答,尤其找找那些點up很多、或者討論很多的回答,在這里往往可以看到一些在其他地方看不到的大牛的思想,提供對一些主題的全新角度的認識或者了解一些Best practice;

另外,在stackoverflow提問也是一種學問,提的問題如果太“伸手”或是已有相似問題,就很容易被點down甚至是關閉。一般如果遇到棘手的問題,怎樣搜索都解決不了的,在stackoverflow基本都能有人給你提供解決問題的思路。有時如果研究一個主題,自己也可以在深思熟慮后提出能夠激發討論的gold question。

能夠回答問題加深自己的學習,又能夠贏得reputation,這種有激勵的學習方式是相當有效的。

3.訂閱周報、瀏覽知乎

這種方式主要是為了讓自己了解一些熱門或是最新的技術,保證自己不至于落伍。

知乎雖然不能作為一個深入學習的工具,但是它上面往往會出現一些新技術趨勢的討論,了解一些新東西也是一個程序員必須要做的,不能總是局限在自己的小圈子里。可以多關注幾個在相關領域較活躍的人,這樣時間線上就會更多出現新技術相關話題。或者有時看到了自己平時沒有關注過的本領域內容,也可以借此發現一個新的學習點,再通過別的方式進行深入的研究。另外當你新開始學習一個領域的技術時,也可以在知乎上搜索一些人家討論過的話題,對于快速了解這個領域的全貌會有幫助。

訂閱周報、月報也是類似的作用,不過更側重于保持對技術趨勢的跟進。另外有時周報也會推送有關某個主題的深入研究的文章,也很值得學習。

4.一點私貨

這種學習方法是我在一本書上看到的,也挺有啟發性:

選擇三位自己的技術偶像,關系跟自己越近越好或者他的技術行為能夠在網上很清楚的看到,這樣才能對他有一個更加全面的了解。

通過閱讀他的博客、代碼、技術論壇上的言論或是與他的交談,了解他對技術的態度、以及自己的學習方法,然后盡可能詳細的記在一張紙上。

選擇自己可以借鑒,并且可能堅持做到的,嘗試模仿他的一些行為。并且更進一步的,比如他活躍在stackoverflow或者github,試著follow他,去追趕他的答題數、commit數,慢慢地跟隨他閱讀一些代碼。

當然這并不是要你忽略自身情況,盲目模仿某個人,而是要讓你嘗試汲取自己偶像身上的優點,并且以此為激勵讓自己借鑒他的方法變得更好。等到有一天你做這些事不再需要提醒自己需要模仿誰,你就大致養成了自己獨特的學習習慣,甚至慢慢成為了別人的技術偶像。

這種方法我們不一定要照著來,但確實很具有啟發性,可以嘗試借鑒。

許多技術牛人本身也是很善于總結、分享的人,在學習技術的時候我們也應該學習怎樣更好地學習技術,并善于分享和總結。希望這篇文章能夠給我自己和大家更多啟發。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容