ADZ 學習筆記

Ruby/Rails, Startup, Life

有效率學習一門技術的訣竅 - 避開學習障礙

| Comments

知道了練習比知識的重要、和讓需求引導學習之後,再來的就是一些小技巧能夠讓你在學習的過程中減少挫折感。

設定學習範圍

通常跑馬拉松放棄失敗的人都是一直盯著目標,最後被自己的挫折感打敗的,而能夠堅持到終點的人往往都是幫自己重複設定短又容易達成的目標。對我身邊想學好 rails 的人,我都建議他們直接開始挑個小項目開始動手。小項目指的不一定是專案,而是小到不要讓一堆你不熟悉的東西 同時 混入阻礙你的練習。

訂好一個小項目後,這個東西對你而言可能還是有點模糊的階段,所以還需要縮成多個更小項目來練習、增加經驗上的知識。

有一點概念的新手

好像知道怎麼做、又很模糊,說直接一點其實就是不會,會停留在這個時期的原因就是缺少大量實作,這時候可以幫自己設計一些情境 (學習範圍) 讓自己大量去接觸某個 rails 的功能,例如:「商品管理功能」,並拆成以下項目:

  1. 做一個 product 的 CRUD
  2. 在 create/update 時檢查 product 的 title, description 必填
  3. 在 create/update 時檢查 product 的 qty, price 必須 > 0
  4. 清單頁填入 title 模糊搜尋出 product title
  5. 清單頁有 tab 可以顯示上架中、下架中、已刪除選項

對原本不熟悉 SQL 和 db schema design 的人來說,做完這五條需求可能會用掉超級多時間,不過千萬不要因為這樣就氣餒,會慢是因為同時在學習好幾個不同的技術。

如果真的感到很挫折,可以去社群尋求協助。問前輩:「我在 db 要怎麼儲存產品上架/下架/刪除的狀態」,絕對好過問:「購物車要怎麼做?」還要實際、別人也比較願意回答。換言之,如果別人不願意回答你,或無法一次回答你,很有可能是你設定的項目還是太大以至於問題太模糊分散。

最後花了很多時間把這五個項目用最低標準完成後,至少可以學到 model 的 scope, validation 怎麼使用,就離開了 有一點點概念 的階段了。

心理建設

另外 把大項目切細 這件事情也是需要學習,它是一種歸納的過程,會讓 執行路徑問題 就浮現出來,你也會比較清楚知道怎麼問問題,問題的關鍵點在哪? 所以千萬不要誤以為這樣可以輕易 解決問題,它只是個讓 問題突顯 的手段。

既然把項目切細是一項需要學習的事情,我想幫大家做一樣心理建設就是,這不容易,而且就跟學習其他技術一樣,需要改變習慣。對熟悉的人來說也需要花時間,這就是計畫的成本。所以千萬不要因為卡在這裡很久就放棄,這裏花的時間絕對會在後面賺回來。

系列文章

  1. 有效率學習一門技術的訣竅 - 閱讀:練習 (1:9)
  2. 有效率學習一門技術的訣竅 - 讓需求引導學習
  3. 有效率學習一門技術的訣竅 - 避開學習障礙
  4. 有效率學習一門技術的訣竅 - 當個容易被幫助的人
  5. 有效率學習一門技術的訣竅 - 突破靠想像力

Comments

comments powered by Disqus