6個高效學習編程的方法

如何高效學習編程
編程確實不是一件容易的事情,除了要有較強的邏輯思維,還需要花大量的時間和集中力來提升或者維持一定的高度

與其他的領域不一樣的是,技術每日都在變,所以對於編程初學者是很難一直與時並進的。就算是技術大神和老司機們也是追趕的比較喫力的。在技術領域打滾的這些年裏,通過經歷和經驗總結出一些高效的學習方式和方法,在這篇文章裏與大家分享。讓我們現在就在技術領域的學習之路上奔跑吧!


鎖定目標,風雨兼程

鎖定目標,風雨兼程
在剛剛接觸技術的時候,很多人都會比較迷茫。技術領域有前端後端並且各自有多種編程語言。選定前端後端後又發現越過一山還有一山高,面臨更多的選擇。甚至在技術領域打滾了多年後的技術人員也會迷茫,會開始質疑自己的前景,是否要換一門語言或者多學幾門語言。所以鎖定目標是高效學習的第一門課。


選擇目標

如果你的目標是前端開發,前期的學習道路是比較明確的,HTML5+CSS3起步。但是如果你的目標是後端開發,還沒有開始就已經有多扇門在你前面,讓你瞬間選擇困難了。所以這裏我們就用後端語言選擇作爲一個例子講解學習目標選擇方法。

陷入學習目標選擇困難症是因爲技術每日每夜都在變,方向和未來都在搖擺。但是我們首先要有一個對技術有很好的判定能力。

大家應該很多時候都聽過"JAVA纔是世界上做好的語言","PHP纔是世界上最好的語言"等等,這些在自己領域崇拜着自己所愛的語言技術愛好者。TA們並沒有錯,因爲每個開發語言都在特定領域或者項目條件裏是最好的語言。不過並沒有世界上最好的語言,只有在某一個場景和條件下最適合使用的語言。每一種開發語言都有他擅長最合適的使用場景。

  • PHP - 更適合小型到中型網頁端應用(大型應用就需要其他語言配合使)
  • JAVA - 更適合大型應用,企業級應用(中小型應用用JAVA就是大材小用,浪費資源)
  • PYTHON - 更適合用於爬蟲,人工智能,腳本類應用

目標尋找法

所以在選擇學習目標的時候,我們要有對技術的判定能力,不要輕易聽取一些偏面的評價和定論而下決定。

選擇學習目標時重要的決定因素:

  • 在目前最實用的 - 學能用到的更容易上手,也更有價值
  • 難度跨度不要太高 - 難度跨越太大時間成本會越高
  • 感興趣的 - 感興趣才更能堅持,更有動力
  • 社區更大的 - 社區越大遇到問題時找答案的途徑越多
  • 開源項目優先 - 開源的項目的技術更有未來

🎯 一旦鎖定一個目標就要能懂,能用,能變,再擴張你的學習領域到其他的技術。

  • 能懂  -  能懂的技術或者知識的理論和原理;
  • 能用  -  能把技術或者知識投入使用,投入實戰項目;
  • 能變  -  能舉一反三學到的技術或者知識,能變通,延伸拓展。

不要蜻蜓點水

這一點是很多初學者都會犯的錯誤。

不要淺入淺出,得不到技能還失去了時間。

學習要一步一個腳印,很多一開始學習編程往往會同時學習多個技術,其實這種學習方式不但沒有效果反而還浪費時間浪費生命。鎖定一個學習目標就要專注一個點上學習,重點學習。

舉個例子,如果你想成爲一個Java開發工程師,你是不需要從C學起,然後C++,最後纔開始學習Java。我看到很多開發者剛開始都是這樣學習,其實根本不需要從底層技術開始學習。既然你的學習目標是Java,那就直奔重點不浪費時間。穩固了基礎開發語言後,選擇一個框架開始深入專業實戰知識。當你穩固了更專業的實戰知識後,就可以開始學習這個技術的周邊工具(比如IDE)讓開發更加高效便捷。

📖 專研祕訣:

  • 學習每一個知識或者技術,一定要深入淺出,深入學習和挖掘,吸取重要知識和技術。
  • 專心,專注,專研是一個技術人才的基本素養!

先專注於會用而不是能用

很多開發者習慣性會過於專注於工具使用,寫法,性能,可擴展性等等。初學者一般都會掉入工具使用和寫法的坑,而資深的開發者會過於專注於性能和可擴展性。這時候往往會過度消耗學習時間,甚至忘記最初的學習目標。

用一個簡單易懂的例子,“一個機械工程師不會浪費時間想怎麼更好的使用TA的扳手,而是怎麼可以組裝好一個機器的部件” - 很多人會想,學會用更好的工具不是可以更快地安裝好嗎?但是現實是,你都還沒有弄懂怎麼安裝,再好再有效的工具對你來說都是無用武之地。所以還沒有學會前行,就不要先想着怎麼跑

再舉例,如果你是正在學習使用Vue框架,不要太過於執着怎麼使用Vue的周邊工具,高級寫法,性能隱患問題等等。你的目標應該是創建你的第一個首頁然後直接投入開發一個小項目小應用。這樣你的產出纔是最高的,因爲這樣做更加專注於學會怎麼使用Vue來實現功能,而不是更好的使用Vue框架。

在學習的時候要專注於會使用新的技術,而不是怎麼用各種花式技巧來提高使用能力

還有很多童鞋開始學一門技術時,會先開始看一大堆的知識和書籍,或者去看一些大型的項目用這個技術是怎麼實現的。其實更有效的學習方式是小步快跑,學習的過程中開發一個小項目會讓你更加有動力也更有趣。

約定自己在限定時間內完成小目標,如能完成就給自己一點小獎勵。例如,你對你自己說"如果我下週五完成這個功能,我就讓自己去看個電影"。記住獎勵不需要很大,小步快跑,小獎小利,這樣才能維持發自內心的動力和驅動力。不過就算沒有達成小目標也不用氣餒,失敗時成功之母,所有成功的人都是通過在失敗中總結成長壯大。


採用學習策略

採用學習策略
每一個人都會有一種最合適自己的學習方式方法,適合我的不一定對你就有效 - 所以找到一種對你有效的學習方法很重要。

經歷

學習方式方法是通過你日復一日,年復一年不停地嘗試和總結得來的一種技巧。我也嘗試過很多種方式來學習技術,自從我開始進入技術行業到現在,我換了無數種學習方式才找到最適合自己的一種技巧。
在一開始剛剛入門的時候,我嘗試看很多"從入門到精通",“XXX語言101"等等,最終的結果都是"從入門到放棄”。後面開始走視頻學習之路,發現視頻裏面的老師說話好像是機器人一樣,本來有點失眠症的,沒想到一看視頻秒睡着,被治好了!我以爲我的技術生涯就要結束在這裏了~ ¯_(⊙︿⊙)_/¯

建立策略

前方無絕路 · 希望在轉角 ~ 我迅速改變了策略,學習技術和其他領域不一樣除了看書,擼視頻還需要動手去敲代碼。學習任何一門技術,可以遵循以下學習策略,可以讓學習的技術和知識更加穩固。

📖 學習策略:
還是遵循我們之前說到的規則,能懂,能用,能變。

  1. 深入瞭解技術的原理 -  瞭解清楚才能更好的在不同場景下運用自如(可以通過看書,看文檔)
  2. 通過代碼理解運用方式  - 看懂基本原理,就可以看看別人是怎麼在項目中使用的(在github找開源項目,看教學視屏等等)
  3. 實戰,做一個小項目 -  能懂,能會了就要能用,用新學的技術實現一個功能,做一個小項目,把知識投入實戰。
  4. 發揮你的想象力  -  能用後如果想進階更高層次,就要發揮你的想象力,能舉一反三,在你的小項目裏面加功能。

其實上面的策略無非就是學習的過程中必須有的理論,運用和變通。這三個學習維度要保持一個良好的平衡。這個平衡是非常重要的,只有理論那就是"紙上談兵",只有理論和運用那只是個"代碼搬運工",如果三個維度你都纔是就是"大師"。

當然所說的平衡不是說1:1:1,完全平衡是很難的。對於一個初學者的話可以先3:2:1,中級就可以開始維持2:3:1,到了高級就可以維持2:2:2了。(比例指的是 - 理論:運用:變通)


時間管理,提高效率

時間管理,提高效率
番茄工作法估計很多人都聽說過,但是真正用上可能就很少了,能堅持使用的就更少了。

很多時候在學習中,或者工作中,我們都是被時間追着跑,這裏看一下哪裏看一下,不經意就已經過了幾個小時,一天就過去了。其實真正有效的產出不大,那是因爲你沒有合理的管理時間。用番茄工作法就是可以讓我們可以追着時間跑,讓自己時刻有着時間感,急迫感。
自然時間運用上就更加有效了。我現在工作中和學習中都已經在使用番茄工作法,有效管理時間效率。突然發現使用了之後,每個小時我的工作效率提高了很多。

使用方式其實很簡單,把學習或者工作時間拆分爲25分鐘一個小階段,每25分鐘休息5分鐘,每4次小階段休息15到20分鐘。

使用這個時間管理法後,你會覺得在25分鐘的小階段裏面,你的時間很緊迫的,每一分鐘你都覺得很寶貴。你會發現你沒有時間去浪費,自然而然的在25分鐘內提高了效率。無形中你的學習和工作的集中力就會提升。除了提高了你的效率以外,你會發現一天幾個小時的學習或者工作都不覺得很疲憊。因爲在25分鐘的高度集中後,你合理的調整了休息,讓自己非常平衡的控制好疲憊度。所以你會發現一天裏面的學習和工作都變得輕鬆了。

用番茄工作法提高了學習效率和疲憊度,自然你的學習成果就會更高。如果你覺得我說的這個方法太虛幻了,不妨試一下體驗一下,實戰說明一切!


多思考,多教學

多思考,多教學
通常我們學習都用的是吸🌟大法 🌟ԅ( ͒ ۝ ͒ ),然後實戰運用,其實還有很多細節和理論我們並沒有理解透測。所以運用就不夠自由,無法延伸一些創新的用法,或者舉一反三。

在我事業發展的過程中,從一個小開發,做到一個小組長,到現在技術總監。在我開始帶領一個小組,到帶領整個技術團隊;很多問題和新知識都要通過講解或者教學來帶培養你的組員和隊員。這個過程中會遇到各種不同思維程度和學習能力的人,每一個人的理解能力或者理解方式都不一樣,甚至看待每一件事情或者知識的角度都不一。你會發現你教學或者講解某一個知識的時候需要使用各種不同的方式和方法。往往就是這樣觸發了你自己去換角度思考和理解這個知識,而啓發了你自己對這個知識新的認知。

通過教學和講解來把你的知識傳承給另外一個人,需要重新整理思路,邏輯,切換N種方式和說法。這個過程中你會挖掘出新的知識,新的觀點,新的思維方式,新的理解角度和深度。這就是自我思維切換而達到的知識深度挖掘和提升的過程。這種就是我們經常說的小黃鴨教學法。

不知道大家有沒有聽說過,當你思路不清晰,或者有問題無法解決的時候。你可以找一隻小黃鴨,你就開始講解你的思路,邏輯或者問題。這個過程中你開始重新整理自己的思路。如果你把一隻啥都不懂的小黃鴨也能讓它聽懂。那這個時候你的思路,邏輯,理解都更加清晰了,問題起碼都解決了50%以上了。我給這個方法取了個名字叫小黃鴨教學法!初級學習的時候要用吸星大法,進階到高級的時候就要用小黃鴨教學法。能教會一隻小黃鴨技術,你就是大神了!


記錄,總結

記錄,總結
除非你是過目不忘,要不看完一本書能記下所有是不可能的。就算記住了但是不可能完全明白透徹。一個程序員經常面對着反覆又反覆的任務,記錄學習進度和總結學習知識很重要。往往你學到一個知識的時候,你會使用這個知識投入實戰中。你沉迷在代碼海洋之中無法自拔之後,你會發現你已經不記得你入海前學到哪裏了。所以記錄學習進度很重要。

記錄學習方式:

  • 把學習後的知識寫成文檔
  • 把知識寫成博客
  • 總結重點,記錄重點
  • 編寫學習規劃,就是所謂的todo規劃表

在學習中,如果要把知識記錄,當你要使用它的時候能快速找到。那你就要有總結知識的習慣。把你學過的知識,技術,技巧都寫成文檔,寫成總結。這樣加強你的印象,同時也整理出了屬於你自己的開發手冊。當你遇到了某些問題的時候就可以通過你自己的開發手冊找到答案。


改掉以下習慣

改掉以下習慣

  • 完美主義: 初學者經常會陷入的一個坑,從一開始就追求完美,完美的寫法,完美的實現方式,完美的設計模式。其實有時候這些都不是最重要的,反而導致有延遲和延後的嚴重情況,導致進度一直無法推進。最求完美往往把簡單事情變得複雜。不要總是爲了完美而無限徘徊,爲了最好的解決辦法而糾結,爲了對的方式而浪費時間。往往在開發中,時間是有限的,需求是無限的,連完成都無法保證,就更沒有時間追求完美。
  • 對比心態:很多行業內的新人或者準備入行的,都會去和行業內頂尖的人做對比。有一句很火的話"沒有對比就沒有傷害",很多人用來對比好與壞,美與醜。其實另外層意思就是如果對比會對你自身造成打擊又何必常常帶着對比之心來對待自己和事情呢?對比不一定會有傷害,但是對比的心態纔是真正造成傷害的源頭。應該先認可自己的優點,接受自己的缺點,然後去找到別人的優點,發現別人的缺點。在別人的優點和缺點給自己帶來成長。吸收別人優點,避免自己養成了同等的缺點。優秀的人不是天生比你優秀,而是TA們更懂的不自我透支,更懂得養成在無形之中讓自己成長的習慣。
  • 複雜化:學會把複雜的問題和事情拆分成多個小問題小事情。複雜的問題和事情就會變得更加簡單。因爲問題和事情往往有多個點需要突破,把每個點拆開逐個突破就會更加簡單輕鬆。從簡到繁,如果太複雜,就拆開一個一個更簡單的小點,逐個突破。
  • 過度透支:學習累了就躺穿上休息,喫飽喝足了就堅決不吃了。養好一種自律的習慣,不過度透支自己的時間和生命,這樣纔能有更好的精神和態度面對問題和困難。近年來有很多給程序員打上的標籤,“加班狗”,“無日無夜寫代碼”,“生活邋遢”,"衣服全是同款黑色"等等。確實,做爲一個程序員,我們花了大部分時間都在想問題,編寫者神乎奇幻代碼和程序。但是我們都往往忘記了自己的身體已經在一點一點透支。到了那一天你停下來了,你會發現,身體不行了,除了寫代碼其他個方面的能力都沒有時間去提升。也沒有勁學習成長了,整個人好像很頹廢,生無可戀一樣。所以學會不透支自己,纔有更好的狀態和精力學習和突破自己。

總結

無論你是在學習技術還是在學習任何其他領域的知識。在學習這條路上都會有坑坑窪窪,各種顛簸。所以我們學習要有技巧,要有方法才能在有效時間內收穫最大化!

學習法門:

  1. 鎖定目標 - 選擇有用的,對你現在階段有價值的目標
  2. 採用學習策略 - 深入學習,投入實戰,總結經驗
  3. 管理好時間 - 把控好時間,提高效率
  4. 多思考,多總結 - 多思考問題,多總結和記錄知識
  5. 改掉不好的習慣和心態 - 有好的習慣才能更輕鬆的學習和成長

一個人一生是有學不完的知識和技能,然而人一生的時間是有限的。所以要把我們的時間和收益最大化才能比同年齡的人跑的更快,學的更多,能力更強!大家一起在學習的道路上繼續加油吧!

推薦閱讀


  • 🔥 《學懂編程第一法則助你寫出更好的代碼》 — 無論新手還是資深開發者都會經常問一個問題,“怎麼寫好的代碼?”,要知道怎麼寫好代碼,首先我們要知道怎麼樣纔是好的代碼。要有明確的目標,才能知道如何達成目標。


  • 🌟《你真的懂怎麼寫服務層嗎?》 — 其實很多系統架構裏面都有服務層,但是服務對很多開發人員來說都有很多不同的定義和寫法。甚至在我待過的公司裏都有不同的寫法和編寫模式。每個人每個團隊每個項目都有對服務不同的理解。那到底什麼是服務,怎麼理解纔是對的呢?

和你一起終身學習

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章