IT小小鳥生存指南-學習起步篇

jopen 9年前發布 | 4K 次閱讀 程序員

經常跟公司的年輕人聊天(說起來好傷悲),他們大多在充滿激情的同時表達出自己對于學習的迷茫。面對快速發展的技術被迷暈了雙眼,不知道學什么,也不知掉怎么學,不知道從哪開始,也不知道學到何時為止。前兩天也在知乎上回答了一個類似的問題,想想應該把自己的一些經歷和問題以及對于這些問題自己的思考梳理一下,分享出來。

小小鳥們需要面對的第一個問題往往都是不知道該學什么?面對撲面而來的各種技術,框架,術語,各種三個字母或是四個字母的天書一樣的單詞,感覺一下就被淹沒在浩瀚的技術海洋中。看著大牛們的各種口吐蓮花,對于各種技術信手拈來,運用自如,羨慕之余也不禁暢想著自己何時才有這么一天。

為了實現心中的目標,很多人捧起了各種神書,什么設計模式,什么算法導論,什么編譯原理;而有些人則搞起了各種新潮的技術,什么Angular、 ReactJS、Go、Node、Swift、Spark,他們都以為自己已經拿到了通往成功的鑰匙,不過看了一陣發現,該聽不懂的還是聽不懂,書看的進展緩慢,狗熊掰棒子一樣忘的比記得還快,技術淘汰的速度超過了自己學習的速度。怎么破?我給的建議其實很簡單,就是:

    <li class="L0">
        <code><span class="pln"> </span><span class="lit">1.</span><span class="pln"> </span><span class="pun">工作用什么學什么;</span><span class="lit">2.</span><span class="pln"> </span><span class="pun">先上手后學習;</span><span class="lit">3.</span><span class="pln"> </span><span class="pun">無目標不學習,學到夠用就停止</span></code>     </li>
    

    </ol> </pre>

    為什么建議從工作入手?因為這樣可以最大化的借勢,達到事半功倍的學習效果。曾經有只小小鳥做著一個C#的工作,但總覺得沒有搞Ruby啥的高大上,用著IDE,總覺得沒有用Emacs&Vim高大上,所以就白天硬著頭皮用IDE搞C#,晚上下班后風風火火用Emacs搞Ruby。一年過去,累的跟狗一樣,結果工作也沒有干好,自己想學的東西因為沒有使用場景也總感覺停于表面。后來痛定思痛,決定集中火力專心學學C#,將自己的學習與工作的方向調整到一致(而不是像之前總是忘兩個方向使力,結果都相互抵消掉了)。最后發現反而事半功倍,工作也出成績了,對于編程語言本身的理解也深度了許多。再去看Ruby或是其他更新的語言,反而輕松了很多,對,這個小小鳥就是我。

    說起來簡單,但是很多人還是會很糾結,生怕站錯了隊伍,選錯了方向,選錯了語言,選錯了技術,輸在了起跑線,就像我當年一樣。走過來我才發現,其實作為當時的自己,無論學什么的效果應該都是差不多的,所謂殊途同歸,觸類旁通。而對于現在的自己,我已經有能力做出對于自己正確的選擇,反而不會糾結。所以做不出選擇只能代表自己不夠強大,也代表此時的選擇可能對自己的意義也沒有那么大。念念不忘必有回響,學什么都是有用的,但一個重要的前提是學習的驅動力是興趣而不是簡單的作為一個掙錢的工具,引用羅輯思維里說過的一句話:“沒有興趣你將一事無成”。所以,我的建議是:

    結論:工作用什么,學什么,以點帶面,順勢而為,將自己學的東西與工作契合,利用所有時間學習。

    很多計算機知識都非常抽象難于理解,什么模式、內聚、解耦、架構、分層、并發、異步、靜態、動態、過程、對象、函數、邏輯,還包括各種各樣的語言和原則。這些抽象的概念是很難簡單的通過“學習”可以完全理解的,因為它們都是從問題中來的,都是人們為了解決某一個問題想出來的解決方案。但是就像猴子定律中的猴子們一樣,我們已經慢慢忘了最開始不能去拿香蕉的原因,已經忘了問題,而將解決方案視為圣典,而后來的猴子們(小小鳥)在完全脫離了問題的前提下,單單去學習這些解決方案自然會覺得很抽象也很痛苦。

    所以,作為勇敢的小小鳥,應該多問幾個為什么(參考5why分析法),甚至勇敢的去摘一次那只香蕉,就當自私一點為了自己,知其然也要知其所以然。記住,那些“約定俗成”、“就應該這么干”、“大家都是這么做的”、“我們一直都是這么做的”都是狗屎,除非能說出問題給出原因,否則任何脫離問題給出的解決方案都是耍流氓

    結論:直接上手實踐,遇到問題,先嘗試自己解決,再帶著問題去學習,這樣的學習才會更有效率,理解也才會更深刻。

    大牛們經常會指點我們學什么,但是一般不會告訴我們學到何時為止。而面對一本本厚厚的書,和外面各種新技術新框架的誘惑,我們不禁自問,這得學到什么時候啊。我們知道在設計上有種說法叫過度設計,那如何避免過度學習呢?過度設計是指去設計那些現在用不到的功能或結構,而過度學習則是指去學習那些現在掌握運用不了的知識。

    TDD(測試驅動開發)是一種可以一定程度上避免過度設計的實踐,追求剛剛好的實現和設計,無測試不開發,無味道不重構。而對于學習,為了避免過度學習,追求剛剛好的學習,可不可以引用TDD的思路,無目標不學習,一旦目標實現,這次學習就停止了,這個時候可以對這段時間的學習進行歸納整理,然后再制定下一個目標,由此持續的學習。

    測試驅動開發:寫一個測試 => 實現讓測試通過 => 重構優化 (不斷重復這個過程形成環路)
    目標驅動學習:定一個目標 => 學習讓目標實現 => 整理總結 (不斷重復這個過程形成環路)

    結論:無目標不學習,學到夠用就停止

    其實大牛們也是從小小鳥成長來的,自然也曾面對過同樣的問題。但他們憑借對于技術的興趣和熱愛,禁得起誘惑,耐得住寂寞,守得住自我,日積月累自然就成就了自己。所以地球是圓的,技術也是圓的,無論那個方向,都會走到你想要的那個點,只要你在不停地一直往前走,正所謂可以十日不將軍,不可一日不拱卒。

    準備的很多內容其實還有很多問題沒有展開,比如學習的深度與廣度如何協調提高;如何面對層出不窮忽上忽下的新技術;時間如何管理規劃;知識如何整理沉淀;要不要做計劃,怎么做計劃;如何走向大牛之路。一篇肯定寫不完了,所以準備來個系列,慢慢寫吧,欲速則不達,第一篇就算是學習起步篇,希望能有所幫助,未完待續……



    來自:http://wj1s.github.io/xxn-01/

     本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
     轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
     本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!