想學好編程,別背代碼!

分享我編程 「不忘」 的十幾種方法javascript

你們好,我是魚皮。css

最近私信收到最多的問題就是:我學編程的時候記不住代碼,老忘怎麼辦?前端

好比這位小夥伴,學編程一個月了,問我咋背代碼:java

頭像不錯

其實,我本身的記性是很是很是差的,因此我纔在選專業的時候棄法從碼。程序員

我在最開始學習 C 語言編程的時候,也是敲一次忘一次,很痛苦。但我又不想放棄,因而強迫本身去記憶代碼,漸漸地把學編程變成了背單詞。但花了不少時間,好不容易把單詞背下來了,卻仍是寫不出代碼,這就讓我逐漸懷疑人生。面試

後來和前輩們的交流中,我發現記不住代碼是很正常的,倒不如說能記住代碼的人不太正常(太聰明、記性好)。算法

因而,我改變了本身的學編程方法,再也不背代碼,提升了學習編程的效率。編程

今天就分享下個人編程 「不忘」 大法。後端

魚皮編程不忘大法

分爲四部分:先分享一些通用記憶方法,再是面向學編程的記憶方法,還給出了忘記代碼後的解決方法,以及一些必需要記憶的內容。性能優化

本文大綱:

思惟導圖

通用記憶方法

如下方法,能夠幫助咱們養成記憶的好習慣,不止編程,適用於全部知識的學習。

編故事

相對枯燥的代碼和理論,咱們更喜歡看故事。試着把知識點編成有趣的故事,或者和某些人或事進行關聯,可以加深印象。

好比我給你們分享編程經驗的時候,會提到個人老弟小阿巴,就是爲了加深你們的印象,一看到熊貓頭就想到 bug,還有什麼 「從前有匹馬叫代碼」,以及一些用故事講技術的文章和視頻,都能起到強化記憶的做用。

興趣強化

對於本身感興趣的事情,咱們記憶會更容易。

好比我從前愛打遊戲,數學公式記不住,但卻能精準記憶怪物的血量傷害和裝備的爆率。

因此想更輕鬆地記憶,最好能培養本身對這件事的興趣,或者用更有趣的方式來學習,好比上面說到的看故事、看圖解、看短視頻知識分享。

利用感官

咱們在記憶時除了須要動腦外,還能夠利用好感官,好比搭配一些肢體動做。

關於這點,也不用刻意,每一個人都有本身的習慣和小動做。好比有人喜歡用手比劃,有人喜歡撫摸下巴,像我則是喜歡在背書時撓頭,有的時候把頭髮撓掉了,看着這根頭髮,我就感受知識記得更牢了。真就我變禿了,也變強了唄。

除了感官外,人腦經歷過的事物,思考過的問題,體驗過的情感和情緒,練習過的動做,均可以成爲咱們記憶的內容,幫助咱們關聯記憶碎片。

理解

記東西不能死記硬背,要思考,要理解,這點真的是從小聽到大,就很少說了。

體系化

咱們在學習時,最好按照體系去學習記憶,而不是東瞅瞅、西瞧瞧。

能夠把零碎的知識整理成大綱、學習路線、思惟導圖等等,按序、分點地去記憶。

老讀者應該發現了,我如今就常常在本身的知識分享文章開頭放上一張思惟導圖,就是爲了幫助你們快速瞭解文章結構,從而加深印象。

記憶時間

通常狀況下,天天早上和晚上臨睡前,是記憶的最佳時間。

我從小養成的一個習慣是:天天睡覺前會躺在牀上回憶一遍本身今天作過的事情,的確有強化記憶的效果。

此外,考試周或面試前,我會把複習內容做爲文檔存到手機上,睡覺前打開 WPS Office 或者一些文檔語音朗讀軟件,讓音頻伴我入睡。次日早上起牀前,能夠先打開音頻,閉上眼睛,聽到知識點時本身在腦海中再回想一遍,真的有奇效!

按期回憶

不知道你們有沒有據說過遺忘曲線(艾賓浩斯曲線),就是說咱們在學習中的遺忘是有規律的,而且遺忘的速度先快後慢。

遺忘曲線

觀察曲線,咱們發現,不少短時間記憶消失地很快。因此不能 光記不憶 ,要趁熱打鐵,學完知識後抓緊應用,而且按照曲線,每隔一段時間複習一遍,才能留住所學知識。

編程記憶方法

上面的方法能夠幫助咱們更好地記憶知識,而下面的方法更聚焦於幫助咱們學習編程,提升效率。

選擇性記憶

首先,對於學編程來講,千萬不要去背代碼!

原本編程知識這輩子都學不完了,背代碼的話下輩子都學不完了。

學編程時,咱們應該:記住有什麼,你能作什麼,而不是具體怎麼作

舉個例子,如今讓你設計一個電梯調度系統。你只須要據說過有個東西叫 電梯調度算法 ,以及它能實現電梯的有序調度就好了,而並不須要記住怎麼寫代碼。等到要作的時候,去搜該算法具體的實現就好了。

再舉個例子,如今前端的類庫那麼多,假設讓你作一個網頁動畫效果,那你在此前只須要知道 Animate.css 庫能夠實現,等用的時候查文檔就行了,並不須要把它的每一個類、每種用法都記下來。別忘了,代碼更新換代很快的,即便有的東西你能記住,但它也有時效性。

尤爲是對於編程的初學者,不要去背代碼,你只須要知道某個函數大概能作什麼事情,我要完成某個功能時能想到它(甚至是能搜到)就能夠了。

另外,刷算法題目的時候不少同窗理解不了就直接死記硬背,其實記憶算法沒有問題,但你要記的不是某段代碼,而應該是一類題目的 解題套路

筆記

學編程時,必定要多記筆記,不管是看書、看文章仍是看視頻。

可是請注意,筆記不是什麼都記!

有些同窗怕本身忘記視頻中老師講的知識,直接把老師的原話一句句地敲下來,一個視頻暫停幾十次。看似筆記上內容不少,但其實真正有用的、你能記住的東西不多,並且很浪費時間,大可沒必要。

不要忘了,筆記是 給你本身看的 ,是爲了幫助本身複習的。我記筆記時,重點在於記思路、記流程、記關鍵節點。

好比我看一個前端項目實戰教程時,我會記錄老師設計系統的思路、以及實現系統的關鍵操做步驟,而且在看完視頻後本身按照筆記的步驟去回想、去操做,而不是把老師寫的每一行代碼都記下來。還有就是記錄老師重點強調的細節,尤爲是一些坑。

記筆記還有個好處就是記錄本身的學習過程和進度,雖然會花一些時間,但性價比是很高的。

多寫代碼

想學好編程,必定要多寫代碼多實踐。不少同窗理論玩的很 六、視頻看的又多又快,但看完視頻後仍是不會寫代碼、沒思路,大機率是由於敲的少了,都是紙上談兵。

像我初學編程的時候,就是隻看不寫,最後約等於沒看。

後來,我修改了本身學習的節奏,通常看視頻學技術時:先看理論部分,瞭解某項技術它是作什麼的、有什麼功能;而後看實戰,跟着老師看一集寫一集,而且看完一套視頻後,必定要對照筆記本身再作一個項目,把視頻中講到的重點技術進行綜合運用。

不要以爲寫項目浪費時間,想要學好編程,就必定要多作項目,能夠幫助你更好地理解技術、加深印象。

另外,經過實踐,能夠幫助你理解不少枯燥的理論。好比當時咱們上計算機組成原理這門課,基本全是理論,上課聽的只知其一;不知其二、昏昏欲睡,也根本記不住。

直到後來老師帶咱們到實驗室,使用開發箱實際操做,經過接線點亮電路小燈,實現指令集運算,才真正幫助我記住了課堂上講到的知識。

卡塔練習

我是從一本程序員修養類書籍接觸到的 卡塔 ,官方的解釋是:卡塔是指 「形」,即招式套路,練習時必須按形進行。

簡單來講,就是每日練習。

想要學好編程,天天都要寫一些代碼,作一些訓練。好比學前端的同窗能夠天天用 JS 來實現一個小功能,學後端的朋友的能夠天天書寫幾條 SQL 語句,鞏固 SQL 語法。此外,如今程序員找工做很是看重基礎算法和數據結構,想要學好這些,咱們也應該堅持天天刷 1 - 3 道題,堅持過就知道這到底有多重要了。

每日一題

多踩坑

相比快樂,咱們更容易記住痛苦。因此學編程的時候,必定要多寫代碼,尤爲是要多遇到 Bug,多解決 Bug。摔得越痛,飛的越高。

好比我曾經經歷過一個線上事故,由於資源未釋放致使服務停機,直接影響了現金收益!因此直到今天,我時刻記得要釋放資源,不要再翻車了。

除了不經意間寫 Bug 外,我還會 主動試坑 。就寫代碼的時候故意去嘗試一些可能出現的操做,好比把函數參數的類型從 A 改成 B,而後分析對函數的影響,不少狀況下,會有意想不到的收穫,說不定就發現了一個知名框架的 Bug 呢?

激勵

和上面提到的興趣同樣,若是寫程序能給咱們帶來激勵和正反饋,咱們就更樂意、更主動地去完成它。

對我來講,本身主動去作的項目更容易記住,好比我至今都能想起大一時主動作的國家級創新創業項目用到了哪些技術、有哪些不足;但卻想不起來大四時被要求作的圖像處理畢業設計都有哪些功能了。

外力

除了主動以外,壓力也能幫助咱們提升編程學習效率,加深記憶。

好比我在騰訊實習期間,有一週上線時間很緊張,那一週基本天天工做到凌晨,因此印象尤其深入。

分享

有的知識你覺得本身會了,但沒辦法把它講出來,就是不理解,這樣很快就會遺忘,面試時還會吃大虧!

因此最好能把本身寫過的代碼、學到的知識分享給他人,可以極大地加深對知識的理解和印象,還能幫助本身發現不足。

分享的途徑多種多樣,好比寫文檔、寫博客、對着小黃鴨去講、參與演講、錄製視頻等。

像我剛開始學編程大概半年多的時候,就創建了本身的我的博客,在上面記錄本身學到的知識。如今來看,雖然當時寫的真的是太爛了!但也爲我現在作知識分享作了鋪墊。

我真的是很享受學習知識而且對外輸出的過程的,持續學習,持續輸出。說個好玩的事,大學的時候騎着我小電動車帶室友一塊兒上課的路上,我都會跟他扯一通技術。分享真的是能夠激勵本身不斷進步,而且幫助到更多人的!

覆盤總結

這也是不少同窗忽略的一點,學了一個技術、作了一個項目後,就趕忙把他們像炸彈同樣丟掉了。其實,你本身學過的、實踐過的知識都是值得珍藏的寶藏。

我在學校時,每作完一個項目,都會展開回憶,從當初想作這個項目開始、到當時的思路、實現過程、遇到的坑等,而且還會分析本身作的好或很差的地方,再加上一些心得感悟,整理彙總成一篇博客文章。

同理,學完一門技術時,我也會把這個技術的關鍵知識點彙總成博客。

如今工做了,我依然保持總結的好習慣,本身會寫日報、週報、月報、年報等。如今回過頭來看,也是一筆不小的成就,要否則誰還記得本身一年前幹了啥呢?

記錄工做

忘了怎麼辦?

我知道不少同窗追求完美,想把什麼都記住,懼怕從此忘記重要的知識。

其實對學編程來說,忘記是很正常的,並且徹底不可怕!

我建議你們索性少記一點,不要給本身太大的記憶負擔,即便忘了,咱們也有下面的方式來解決。

積累

首先,必定要注重積累,整理本身作過的事。

像我會整理本身寫過的代碼,這樣等要用的時候,直接去找,而後 CV(複製粘貼)大法好。

我會整理本身寫過的文章、看過的好文、好句子、好表情,打造本身的語料庫、素材庫,隨用隨搜,省去了大量記憶量。

我還會整理本身踩過的坑、寫過的 bug,而且將解決方案也一同整理,即便下次再遇到一樣問題,也能高效解決。

整理 Bug 及解決

利用搜索和文檔

忘了某段代碼怎麼寫、沒有思路、或者遇到問題了,那就去網上搜索一下;忘了某個框架的特性、函數的參數、用法,那就去看框架的官網文檔就好了。

難道還要別人幫你搜索嘛?

多寫註釋和文檔

程序圈裏有個梗:有位程序員罵一段代碼特別辣雞,結果最後發現是本身寫的。

這是每位程序員都會遇到的事:

  1. 看不懂本身寫的代碼
  2. 不認識本身寫的代碼

爲了防止此類沙雕事件的發生,咱們應該適當地給代碼添加註釋,像個人話常常會放一些設計思路、設計文檔連接、做者等等:

/* * 功能:三連 * 思路:請參照文檔 xx.cn * 做者:狗魚皮 */
function sanLian() {
  console.log('感謝三連')
}
複製代碼

還能夠適當回顧下本身寫的爛代碼,說不定就有什麼優化靈感了呢?

除了註釋外,作項目必定要寫文檔,把項目背景、選型過程、設計思路、實現方案都寫清楚。不只能夠幫助本身總結工做,還能給其餘項目的參與者指引和幫助。

最好把產品說過的一些話也記錄上,防止往後產品改需求。

不得不背?

最後,雖說學編程不靠背代碼,但等到找工做的時候,一些面試的考點仍是必需要記住的。不過在背面經、背考點時也不要像背課文同樣死板,仍是要加上本身的理解,多實踐。

好比經典面試題:MySQL 如何性能優化?

死記硬背固然能夠,但有時間的話,更好的作法是本身實踐一下 MySQL 的優化手段,而且記錄優化的效果,好比性能提高了百分之幾等等,這樣天然就能記住,跟面試官聊的時候也更有底氣。


以上就是本期分享,但願你們能養成好習慣,多敲多練,別再強迫本身背代碼了!

最後再送你們一些 幫助我拿到大廠 offer 的學習資料

跑了,留下 6T 的資源!

我是如何從零開始經過自學,拿到騰訊、字節等大廠 offer 的,能夠看這篇文章,再也不迷茫!

我學計算機的四年,共勉!

我是魚皮,點贊 仍是要求一下的,祝你們都能心想事成、發大財、行大運。

相關文章
相關標籤/搜索