學習coding最好的方式是什麼?#195

Spread the love

ruby

我覺得答案就是一個字「用」

更確切一點說應該是:

學習最快的方式應該是直接解決自己的問題,然後不斷的犯錯、修正、學習、重新打造,而不是按部就班地照別人給你的進度學習。

不久前看到5倍紅寶石要招募實習生,讓我非常心動,為了有機會雀屏中選,所以我打算利用目前所學到的前端(一些HTML/CSS/jQuery)還有後端的知識(Ruby/psql/Sinatra),還做出一份吸引人的履歷。(template

在製作履歷的過程中,為了要表達出和template相近的效果,所以我在目前為止的七天內,學習到了簡單的jQuery、如何使用Bootstrap和許多HTML/CSS的眉眉角角。雖然我不敢說在這段時間近步很多,但是我得說在這個過程中,我學習的比以往更加「深刻」。因為很顯然地在這個過程當中,我所做的都是為了解決我「自己」所遇到的問題,而不「別人」為我定義的問題。

我一直不斷的在反思甚麼才是更好的學習方式,經過這一段時間的學習歷程後,我開始思考過去幾個月的自學是不是效率並沒有我想像中的高?(但是不可否認的,過去幾個月透過LS打底,慢慢的讓我有了更好的自學能力)。

為什麼要學習coding?

每個人學coding都有自己的理由,但每個理由的背後都是為了解決某個問題而存在。而我也認為一個好的工程師絕對不是坐等問題上門,而是願意不停地主動尋找、解決自己或其他人的問題。

而我早期的困境是-雖然知道該學coding,但卻不知道更具體的該解決什麼問題,所以只能乖乖地跟著學。但是現在我已經慢慢找到我可以解決的問題。

關於線上/線下課程

其實後來我發現所謂的線上/線下課程,無法就是一套教材搭配及時解答還有code review。但是其實好的教材到處都有,只要你花錢跟花時間搜尋就找得到,而及時解答和code review也不是只有透過課程才能得到解答。

學習一定得透過線上課程嗎?

經過這次做履歷的過程中我發現,要學習coding的知識(或是任何一個領域),其實就找一個你想解決的問題,接著經過1.複製作品2.搞懂細解3.自己做出來4.解說(optional)這幾個過程。以我的例子來說,就是我要解決製作履歷的問題,所以我就找一個template來參考修改、理解細節、接著自己做出來,甚至能不斷的快速做出不同的樣式,基本上就代表很熟練了(但我目前還在修改跟理解的階段)。

我相信很多教材都是經過琢磨和不斷的修正,所以大多數都有良好的品質,但是即使這些產品再好,其實都會落入一個情況,那就是-教得太深、太廣,而且是「別人」為你定義的問題。教得太深太廣其實並不是壞處,但是人腦的作用從來都是用進廢退,今天你學了一大堆的東西你不複習、不用,一定馬上就忘記。

這種感覺就像是從小到大學了那麼多英文,老師總是跟我們說會用到,但是我們不是沒用到,不然就是等要用的時候想不起來;但是當外國人跟我們說一句我們不會的英語,不論是當下請教他或是回去自己查資料,我們都能了解哪句話的意思,當外國人再次說了同一句話我們就可以很快的做出反應。

而我猜這就是解決「自己」的問題和解決「別人」的問題的差異。

自學會不會走火入魔?

自學過程中很容易出現的問題就是學到錯的知識、養成壞習慣,或是自己亂寫code寫得很開心。而透過線上/線上課程的TA,就是幫助你培養聊好習慣和解決問題的好夥伴。

但是,其實不必透過TA也能讓自己學會用正確的方式寫code,因為現在網路上有太多的好的教材/文章/問答能夠幫你解決問題,甚至現在各地的meetup都會有很熱情的前輩願意跟你分享資訊或是解答你的問題,而我想這些前輩的能力可能也不亞於課程中的TA。如果真的覺得一直問前輩問題不好意思,那就找機會請他吃個飯、喝個飲料,總之用適當的方式回報對方就對了(你甚至可以請家教)。

教材的正確使用方式

我們當然可以花時間把一份幾百頁的教材細細讀過、每個範例都一一敲過並且理解,但我並不認為按部就班、一字一句的詳讀是個好的學習方法,更有可能是看過就忘。我覺得更好的方法是先看過官方的文檔和一些文章掌握基礎觀念後,就可以開始實作一些“真實世界”的問題。而教材的作用就是當作查詢使用的工具書,或是每天閒暇之餘吸收的知識。當你有需要時你必然會不斷地查詢、回顧裡面的知識,雖然你不是按部就班地把它全部看完,但是在不斷回頭閱讀的情況下,總有一天我們會把它讀完、甚至讀過好幾遍。

所以到底有誰是“背完”辭典、把整本文法書看到“熟透”,才開始「用」英文,然後熟練掌握的?

直接解決自己的問題

雖然這些都是後話,但現在想想我當初應該就直接用實作的方式學習可能更有效率(當然,如果沒有先接觸一些LS教材,我可能會花更多時間鬼打牆)。像是我自己有在寫部落格,那我就應該直接學習如何架部落格,學習如何寫出好看的頁面,還有後台如何架設,而這些東西就更我搞上好久、學習大量的知識;又或者我可以自己寫個爬蟲軟體,抓抓網頁上的資料;幫自己家裡,或是其他有架站需求的朋友架網站。總之,我其實有太多太多的選項。

結論

不管之後有沒有順利錄取5倍紅寶石的實習,我應該都會暫時停止LS的課程一段時間,用解決自己問題的方式學習,而且這似乎才是一名工程師自我養成的方式。

我好想快點學會更多前後端開發的東西啊啊啊啊啊啊。

P.S. LS的課程依舊很有價值,只是我想透過改變學習方式解決我對學習方式的疑惑。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *