菜鳥問題以下:
我最近遇到了一些學習上的方法,想向您請教一下。
進公司實習後我發現,仍是有太多太多的技術須要學習,我一直記得你曾經告訴咱們的,爲了要找工做,咱們必須得對一個方向夠熟練,夠精通,我一直都是朝JAVA這個方向發展的。最近我在拼命的學習一些之前沒接觸的技術,好比EJB,extjs,JSF等,雖然這些沒SSH火爆,可學習一下我想之後總會有用的,但是漸漸的我發現一個問題,就是一門技術只要我過一兩個月不用,而後人家在問起時,頭腦裏就是一頭霧水,這種遺忘性很是嚴重,好比Hibernate的validatiion,search 雖然我沒將其用於實際的項目中,可是在八月份的時候,我已經好好的學習了,並且還本身動手寫了一些demo的,但是如今讓我想的話,我徹底就忘了,我看到張老師講課時說的不少技術問題很是熟悉,我想請你指導我一下,要經過哪些方法來避免我這種「遺忘性」,我知道的除了常常寫這方面的代碼和在博客上寫寫外,其它沒什麼方法了,可是若是常常這樣作,勢必又會耽誤學習其它新技術的時間,謝謝張老師在閒暇之餘花時間來看個人郵件。
老鳥的回覆以下:
你問的這個問題很典型,我相信不少人都碰見過。事實上,我也沒有你想象的那麼厲害,不少技術我之前掌握的也會忘記。這與人類大腦的遺忘曲線有關,符合科學規律,因此沒必要爲此煩惱。
怎麼解決這個問題呢?我想有如下幾條:
一、一門技術必須多用才能掌握,最好的辦法是在項目中運用。若是你在真實的項目中使用了某一項技術,那麼印象就會很是深入。即便忘記,也能很快撿起來。
二、若是要學新的技術,僅僅是爲了拓寬本身的知識結構,那確定沒有時間對這些技術作大量的練習了。這時候,就要對技術進行分類。看你掌握這門技術的目的。若是技術僅僅是一種工具,我認爲只須要了解它能作什麼,就OK了。由於即便你把它的整個使用方法搞懂,久了不用也會忘記。若是你知道這個技術能作什麼,當作項目時須要用到,再去查閱相關的文檔和資料,徹底足以應付。若是這門技術很是重要,甚至有許多可借鑑之處,那麼在搞清楚它能作什麼的同時,還應該理解它的原理、思想以及實現的方法。
三、養成隨時記錄心得和教訓的習慣。不論是項目中,仍是學習過程當中,凡是認爲有價值之處,都有必要記錄下來。不必定要發到博客上,只要保存起來就好。不過,在保存的時候,要作好合理的分類,以便於從此查閱。不要以爲這個耽誤時間,它是很是有用的。我之前就沒有充分認識到,致使以前作的項目碰到的不少問題,當時解決了就完了。到如今都沒法回憶起來了。如今的我就告誡本身,必定要作到這一點。所謂「磨刀不誤砍柴工」,耽誤的這點時間是徹底值得的。若是你只是不停地學,殊不知道積累,那就和猴子掰包穀沒有什麼區別了。此外,這樣的作法還有利於磨練你的文檔編寫能力、分類和總結的能力。從新整理這些內容,也有助於你再一次理清本身的思路。真的是很是有價值的作法。我記得之前在課堂上也給大家說過。事實上,Martin Fowler的《重構》一書,之因此能寫成,就在於他遵循了這一作法。最近,我剛剛完成《重構》一書的點評,其中大量的點評內容也是我採起這種方式日積月累得到的。
四、最後一點,是學會選擇。軟件技術實在太多。要弄清楚你本身的目標。最重要的是要肯定本身的職業發展,專業的說法叫「職業生涯規劃」。是技術,管理,仍是兩者兼顧。而後,再有目的性的去學習知識。即便是技術領域,也有不少發展方向:網絡、數據庫、底層算法、框架、架構、UI設計,性能優化,系統集成,太多太多。不要漫無目的地學,這樣也好,那樣也好,因此都去學,結果學了又沒用上。因此,要先肯定目標,而後作出選擇,再製定計劃,包括短時間計劃和長期計劃。