專欄文章
RD養成術之Java 學習路徑
Java學習關卡
撰文者:Jarey
學習程式設計與體育選手做訓練一樣,都會有所謂的撞牆期。如下圖所示一般人的學習曲線通常都會遇到數次的學習瓶頸,而這些瓶頸便是某一些重要的概念你還沒想通,所以導致寫不出理想的程式,看別人的程式有時也似懂非懂。以下我們將針對這些瓶頸做深入的探討。
1.撞牆期症狀
看著別人的程式碼感覺到自己好像有點懂了,但又好像不太懂。
程式是寫的出來,但自己看起來感覺好像又缺少了什麼。
看到一段別人寫的感覺很不錯的函式或Lib,想拿來用時卻又想不出要在那裡用它?或是怎麼用它。
有時整天對著電腦看著程式碼一遍又一遍,卻發現自己看了一整天下來加入的新程式碼沒幾行,產能大幅下滑,常找不到自己要從何下手去寫程式。
程式發生很奇怪的Bug,有時解了1個Bug卻又帶出了其它2個bug,就此進入bug愈解愈多的狀況,最後終於都解完了。卻發現程式中處理預防bug的程式碼佔據了整個應用程式的一大半。
2.低潮期症狀
由於每一次突破後面對的下一次的撞牆期難度通常更高,你需要花費更多的時間去突破它,當難度高一定程度時,你的撞牆期會拖的很久,拖的太久的結果就是會進入低潮期。當你有以下症狀時你可能己進入了低潮期。
開始討厭看到程式碼,每次當你下定決心今天要坐下來寫程式時,心裡總會為自己找一些藉口開始東摸摸西摸摸,最後發現時間又過了一天,但卻什麼都還沒開始寫。
開始雞蛋裡挑骨頭,常常把自己寫到一半的程式碼覺得不太順眼就整個砍掉重練。
對自己開始失去信心,還沒開始寫就先開始思考這程式有多難會遇到多少問題,這些問題有解法嗎,該怎麼去解? 我真的寫的出來嗎?思考出一堆狀況來嚇自己,但是其實一切根本都還沒開始。
開始到書局去大量的買書,但買來的每一本書回家後可能只有翻不到十項就放在書櫃上封起來了。同時開始害怕覺得怎麼還有那麼多領域我不會的,感覺寫程式是永無止境的學習,開始覺得自己會的應該只有0.1/100不到的程度。並開始惡性循環變的害怕學習。
開始懷疑自己是否適合做程式設計師,開始對寫程式失去熱情,思考是否來去擺個攤賣Java雞排比較實在。
3.領悟(開竅)期症狀
當你突破了幾次的撞牆期與低潮期後,即會進入一段高度領悟期,這就像是你突然開竅了一般。
一般領悟期的症狀如下
拿起以前翻了好幾次都看不懂的書,突然這次翻一下就懂了,你開始回想為什麼以前會想不通,但你還是不太了解為什麼這次你就突然看懂了。
寫程式經常會有第六感的聲音傳來,而第六感的方向幾乎七八成是正確的,例如拿到了一個lib函式庫來利用,在還沒有完全看完該函式庫的使用說明或手冊時。有些功能在你撰寫時就突然會直覺的猜到這函式庫的呼叫方式應該是如此,這個函式的功能應該是做什麼用的,大概只有三成的機率會猜錯或想不到而去翻手冊,其它七成都像是有如神助一般的總是在需要的時後神來一筆就猜到要怎麼用了。
一本書拿來時,你開始會挑從程式碼直接去看這章在講怎麼,看完程式碼後你只需花極少的時間看一下書中文字說明的部份驗證是否自己的看法相同。相對於以往你可能是先從書中對該程式的說明解釋開始看起之後在去看程式碼在寫什麼。
你開始會注重程式的注解、變數命名、函式命名、類別命名。並開始使用package為你的程式做分類。
你開始會懂得為自己建造可重覆利用的函式庫,當一個類別寫到一個程度時,你會開始想要去拆解它,並同時思考要拆解成什麼形狀才會容易被拿來重新組裝應用。
你會開始使用到一些物件導向中抽像層級的概念,例如abstract(抽像)、interface(介面)、Polymorphism(多形)。
你的電腦開始變成24小時運作不關機,同時會有許多個程式碼為開啟編寫狀態(因改以物件思維在設計程式),你不想因為關機下次思緒被打斷重來,因而幾乎電腦都會是保持在Eclipse啟動的狀態。
最後這時你不在會想要去賣雞排,反而是偶爾會在午夜夢迴中,因突然到一個絕妙解法而驚醒,並馬上到電腦桌前進行驗證。如果驗證正確,那麼妳將整夜無法入睡,因為一此時期的你會興奮的馬上前往下一個挑戰,直到下一個挑戰出現了短時間無法解決,你才會帶著不甘心入睡。