談談學習方法
上一篇文章「你為什麼還不夠優秀?」有同學給我留言:張哥,我是一名大二學生,我很喜歡 Android,但是我感覺我的邏輯思維有點慢,學習方法也不得巧,所以,問下您有什麼建議嗎?還是說我不適合學編程,大學計算機專業!
其實不止這位同學,之前很多人給我留言,說因為興趣,選擇了編程,而且自己也很努力,也在持續堅持學習,然而覺得自己沒有任何進步,甚至一度懷疑自己不適合編程。還有工作了一兩年的同學給我留言,說感覺自己也挺吃苦的,做的項目也挺多,但是總感覺自己一直處於初級水平,沒什麼進展...
我相信以上絕不是一個人,這些人你能說他們不夠努力么?不一定,但是如果你們很努力,而且很有毅力,那麼我覺得可能就是學習方法的問題了,所以今天單獨寫篇文章來談談學習方法。
什麼樣的人適合編程?
在談學習方法之前最重要的應該是先確保你的方向對不對,因為很多時候如果朝著錯的方向,不管你如何努力,方法再怎麼正確,可能都是在錯的路上越走越遠,所以方向很重要。
很多人總懷疑自己不適合編程,所以這個問題我覺得是優先要解決的。確切的說真的不是所有人都適合編程,我認為邏輯思維能力是編程最重要的能力,而通常是理工科的人邏輯思維能力較強,尤其是高中數學、物理還不錯的人,這部分人學習編程完全不用擔心不適合。相反如果你邏輯思維能力較差,而且對編程又提不起興趣,一對著電腦就頭暈等等,這部分人可能真的選錯了方向。
至於自己是不是計算機專業真心沒大的區別,如果是計算機專業,只能說你比別人基礎好點,上手更快些,但是小學成績好,不代表以後高中成績就好。以後能走多遠全靠自己的學習能力以及夠不夠努力。
學習方法
在確保方向是對的,或者差不多沒有偏差太大的情況下,自己很努力,而又沒有效果可能就是學習方法的問題了。
我一直認為學習是沒有捷徑的,就有兩條:努力,堅持!然而是有一些學習方法可以參考的,適合你的學習方法可以幫你提高學習效率,也便於你更好的堅持下去。
相信大家都有這樣一種經歷,在上學的時候總有那麼一批人,總感覺天天在玩,但是成績很好,而我就是這麼一批人。而總有另一部分人很努力,幾乎每天都在看書學習,但是成績依然很一般,甚至很差,你能說他智商低下么?我不這樣認為,我覺得大部分人的智商應該都差不多,不會有根本性的區別,所以歸根結底很可能就是學習方法有問題!
培養自己的學習規律
我自己上初、高中的時候成績很好,但是平時基本不看書,給人的感覺就是天天在玩,但是成績卻又很好,然而我並不是不看書,我只是習慣晚上看書學習而已。偶然間我發現我晚上學習能學的進去,效率較高,所以我就培養了這個習慣,然後把它堅持下去,進而形成了自己的學習規律,一到晚上就會把筆記掏出來消化掉。其實大部分人都是有惰性的,所以很多人喜歡看雞湯,看完雞湯後感覺渾身充滿幹勁,然後努力一陣子,但是沒幾天之後又回歸本質,這種我把它叫做衝動學習,根本不足以持續。
所以之前有人留言說讓我多發些雞湯,雞湯有用么?確實有用,我自學編程的時候甚至都主動找一些雞湯來激勵自己,但是解決不了堅持的問題。前面我說了學習就兩條,努力和堅持,努力相信稍微有點自制力的人都能做到,但是堅持恰是最難的。而培養自己的學習規律本質上就是解決堅持的問題,所以,試著發現適合自己的學習場景,你是習慣早上閱讀還是晚上閱讀,是習慣在教室學習還是在宿舍學習,是習慣地鐵上看書還是公司加班時看書...
總之,找到最適合自己的學習場景,培養成自己的一套學習規律,養成習慣才足以持續下去!
結合實際,尋找適合自己的方式
我們在學習的時候有人看紙質書,有人看電子書,有人看視頻,有人看博客,有人看官方文檔,有人看源碼等等,這些都是學習的不同方式,沒有高低貴賤之分。
找到適合自己的學習方式很重要,但是一定要結合自己的實際情況。我覺得很有代表性的一個例子就是,有些大神分享自己的學習經驗是看源碼、看英文文檔過來的,然後有些人就照搬這套學習方式,然而殊不知連編程基礎都沒有,甚至簡單的中文文檔都看不懂,就學大神看源碼、看英文文檔不是在扯淡么。大神的學習方式有用么?當然有用,然而卻不適合你。
對於大部分人來說看書是最普遍的學習方式,然而就是因為最普遍,門檻最低,所以大部分人看書自學編程的階段水平差距沒怎麼拉開,然而一旦入門,每個人就找到了自己的學習方式,這個時候差距才慢慢開始體現。英文好的,就選擇看官方文檔,這是最權威的,比任何書籍、博客更有說服力,然而不是所有人都能看得懂的。0 基礎的一開始可能看書都有點看不懂,所以有的會結合視頻,幫助自己理解,但是一旦水平進階了,再看視頻會覺得很沒效率,幾分鐘看篇文章就弄懂的知識點,看視頻要講半小時。其實就是因為你處於不同的階段,你知道有屬於最適合你自己的學習方式了。
所以,大神分享的學習方式不能一味的去照搬,要對照自己的實際場景,起點高的看英文文檔也好,源碼也好,起點低的就看書結合視頻也好,總之尋找到最適合你自己的方式最重要!
學習的目的
我們做一件事總歸是有目的的,比如上學的時候學習就是為了能取得好成績,考上好大學,以後出任 CEO,迎娶白富美!學習編程一樣需要一個目的,沒有目的,你就會沒有任何動力。
之前有人問過我,說:張哥,你這麼努力,到底是為了什麼?其實我想說,不好意思,我很俗,我這麼努力就是為了賺錢!
是的,我當初選擇自學編程的目的就是為了賺錢,因為經歷過生活的困苦,我才意識到錢有多麼重要。所以我之後自學編程沒有其他那麼高尚的目的,很簡單粗暴,但卻很明確,所以我學習起來會比其他人更有動力,一想到以後學成了可以月薪過萬,頓時充滿了鬥志。
所以學習有個目的很重要,你想清楚你是為了什麼而學,如果你還沒想清楚,那麼先別急著學,這跟上學不一樣,上學是被迫的,我們不得不上,但是現在你可以有更多選擇。現在當然我想,大部分讀者學習編程的目的可能都跟我一樣俗,就是為了賺錢,如果你不是,恭喜你,你還不夠俗!
定個小目標
學習的目的是了掙錢,但是掙錢是個大方向,不夠具體,總歸有個具體的小目標吧,而且這個目標得是眼前看得到可達成的。
如果當初我給自己定個目標是以後月薪 10w,我想我會很有挫敗感,因為不管我怎麼努力,怎麼付出可能都沒法達成。所以我最初給自己定的目標就是月薪 1w,那會每天想著什麼時候月薪 1w 就好了。
然而當我真的月薪 1w 的時候,意識到靠自己努力是真的可以實現自己夢想的,更加自信,更加有努力的動力。不過欣喜之外,我又給自己定了下一個目標,就是月薪 1w5,看看市面上月薪 1w5 大概是什麼級別的,這個級別的開發大概需要具備什麼樣的技能,然後去朝著這個方向繼續努力。
就這樣,我一步步實現自己的小目標,達成之後給自己設定下一個小目標,就是這麼簡單直接有效!
實踐實踐再實踐
編程是一個實踐比理論重要的多得多的職業,可能你看了很多書,很多博客,但是遠沒有親自做一個項目來的有效。
相比我那個信息匱乏的時代,現在可謂是信息爆炸的時代,每天大量的技術文章可以看,信息的消化就變得很重要。之前很多人問我,說希望我多更新些技術文章,最好每天一更,我時間與精力跟不上是一個原因,退一步說即使我有大量的時間與精力去每天更新技術文章,對你來說你真的消化了么?對於技術文章來說,看過跟消化掉是完全兩個概念。
你每天看的技術文章是沒有目的性的,剛好看到了就看到了,要麼就收藏了。但是遠沒有多大價值,下次碰到同樣的問題你一樣不知道怎麼解決,而如果你是在項目中用到的,或者說遇到問題了,比如項目中需要用到自定義 View,這個時候因為項目的需要,再去搜索引擎中尋找答案,然後去學習、研究、實踐,這才是最佳的消化信息的方式。
而我認為在找到工作之前的實踐一般分以下三個階段:
1. 對著敲代碼的階段:這個是學習編程的最初階段,哪怕完全按照書本敲一遍,也比你只是看有效的多,只有親自敲代碼你才能加深印象,方便你更深刻的理解;
2. 模仿:當你有一定的基礎知識的時候,但是缺乏實踐經驗的時候,其實這個時候最迷茫了,自己會點基礎,但是自己寫項目根本不知道無從下手,這個階段我推薦你們從模仿著手。網上一堆 demo,就從這些 demo 入手,結合代碼,自己理解,邊理解邊對著 demo 敲代碼,直到你可以不看代碼可以自己敲出來為止。也許是從一個小動效,再到一個半成品的 demo,再到一個完整項目的模仿,在模仿的過程中你會逐漸的進步,進而對一個真實的項目有所了解。這麼說,我認為模仿是項目經驗的啟蒙!
3. 練手項目:當你跨過模仿階段的時候,這個時候要想著自己單獨做個項目練手,也許是模仿的別人的項目,但是是完全自己從 0 開始搭建,不再需要依賴已有代碼就可以折騰出屬於自己的項目,在這個階段會遇到各種問題,相信我,即使之前你掌握的技能,在這個階段依然會遇到問題。但是一旦經歷過這個階段,會進步很大!
一般來說經歷過以上階段之後就可以考慮找實習或者找正式工作了,在工作中不同的人進步速度又會有所不同,有的人在工作中持續學習,總結經驗,積極爭取新的機會,有的人安於現狀,得過且過,把自己眼前的事做完就行了。這本身是兩種態度,工作之中把自己事情做好了就覺得 ok 了沒有任何錯,但是如果你只把自己當成一個打工的,那麼你可能永遠都是個打工的!
最後,很多人總覺得自己進步很慢,學習效率奇低,這個是正常的,大部分人都跟你一樣,包括我自己,經歷過跟你們一樣的階段,套用意見遊戲里常說的話:當你遇到敵人的時候,就說明你路走對了。你需要做的就是確保在正確的道路上,找到適合自己的學習方法,按照自己的節奏,持續不斷的努力,堅持下去就足夠了!
本文原創發佈於微信公眾號 AndroidDeveloper「id:googdev」,不僅是Android原創乾貨分享,也許是最有人情味的技術公眾號,轉載請註明出處!
推薦閱讀: