這是我看到 XDite 為了 INTERMEDIATE RAILS 這個課程寫的投影片後決定寫的文章。這份投影片裡面提到初學者常常發生一個狀況「把想要做的功能列出來、打開編輯器後,接著就不知道該如何繼續了」,但回想個人自學 Ruby on Rails 的經歷,發現自己並沒有遇到這樣的狀況,整理思緒後,決定寫文章分享給大家。
按部就班,不要幻想做過大的專案
回想自己之前都有辦法順利完成練習專案很大的原因是:我設計的專案都很小,而且功能都很簡單。試想如果當初我規劃要做第二個 Facebook 的話,想必沒寫幾行 Code 就放棄了。
個人建議軟體開發初學者在設計自己的練習專案時,用以下的思路規劃:
第一個練習專案:設計目前所學的知識足夠完成的專案
當你看完整本書具備基本開發能力後,第一個練習專案對你而言重要的不是功能多寡或是否酷炫,你應該做的是:運用目前已具備的知識,完成一份這個知識範圍足夠完成的專案。
以學習 Ruby on Rails 為例,假設書本教你做一個論壇,基本上你已經具備基本的 CRUD 、權限管理、 Model Relationship 的知識,那麼第一個練習專案可以嘗試做一個非常 Simple 的 Todo List,只有以下的功能:
- 具備會員機制。(註冊/登入)
- 使用者可以「新增」、「修改」、「刪除」自己的待辦事項。
- 在後台,使用者可以看到所有自己新增的待辦事項,按照新增時間排序,越晚新增位置在越前面。
- 使用者可以「新增」、「修改」、「刪除」自己的分類。
- 使用者可以幫每一待辦事項「分類」,每一待辦事項只能有一個分類。
- 在個別分類頁面,使用者可以看到所有自己新增且為此分類底下的所有待辦事項。
雖然這個專案功能很少而且很簡單,但當初因為對於 Form 會傳送什麼樣的 params 以及 Controller 要怎麼 handle 這些 params 的觀念不清楚,卡在「待辦事項選擇分類,在 Controller 要怎麼處理」這部分超久,因此千萬不要嫌功能少,對於觀念不清楚的初學者而言,很簡單的觀念可能就可以讓他花費非常浩大的時間。
第二個練習專案開始:在目前已具備的知識範圍上,挑戰一至兩項沒有嘗試過的功能
完成第一個練習專案後,從第二個專案開始,可以嘗試每一個專案都挑戰加一、兩個之前的專案沒有嘗試過的功能。例如第一個練習專案做的是上面提到的 Simple Todo-List ,那麼第二個專案可以嘗試新增讓使用者直接使用 Facebook 帳號登入以及搜尋待辦事項的功能。
API Documents 翻了很久,卻還是駐足不前的原因
根據自身經驗,初學者為了實現某些功能而翻 API 的文件時,經常會發生讀了很久卻還是無法清晰理解該如何套在專案上的窘況,我發現會發生這樣的狀況大多是因為:初學者對於自己使用的 Programming Language 、Framework 不夠熟悉、了解。
為了解決這個問題,建議您:
- 檢視目前對於自己使用的 Programming Language 、Framework 熟悉度是否足夠,若不足便再更深入了解一些。
- 除了官方文件,也可嘗試 Google 尋找使用此 API 的範例,只要不是太冷門的 API 應該都可以找到 Blog Posts。
遇到問題的提問方式
- 盡可能詳細描述自己的專案以及遇到的狀況。
- 把所有錯誤訊息貼出來。
- 把跟錯誤訊息相關的 Code 貼出來,越完整越好。
像 Stack Overflow 這種論壇本身就可以讓你貼 Code 所以沒什麼問題,但如果你是在不具備貼 Code 功能的論壇上發問,請先貼到 Gist 再把網址複製下來,這樣可以增加回答者在閱讀上的舒適度。
結語
雖然目前寫的專案都不大,但事實上我發現:寫小專案反而可以幫助你更 focus 在一、兩個沒有實作過的功能,帶來的學習成效不一定會比寫大專案差。
在設計練習專案的時候,我堅持每個專案不能重複而且都要能夠解決生活上遇到的問題,這樣才不會花一堆時間寫同樣的東西,而且不會僅止於把專案完成而是能夠持續使用它,或許你也可以朝這樣的方向思考。
希望這篇文章可以幫助到所有初學軟體開發而且剛好卡關在「不知道該如何實現自己的想法」的人,如果您有更完善的建議也歡迎分享給大家。