軟體開發初學者如何順利完成自己的練習專案?

這是我看到 XDite 為了 INTERMEDIATE RAILS 這個課程寫的投影片後決定寫的文章。這份投影片裡面提到初學者常常發生一個狀況「把想要做的功能列出來、打開編輯器後,接著就不知道該如何繼續了」,但回想個人自學 Ruby on Rails 的經歷,發現自己並沒有遇到這樣的狀況,整理思緒後,決定寫文章分享給大家。

按部就班,不要幻想做過大的專案

回想自己之前都有辦法順利完成練習專案很大的原因是:我設計的專案都很小,而且功能都很簡單。試想如果當初我規劃要做第二個 Facebook 的話,想必沒寫幾行 Code 就放棄了。

個人建議軟體開發初學者在設計自己的練習專案時,用以下的思路規劃:

第一個練習專案:設計目前所學的知識足夠完成的專案

當你看完整本書具備基本開發能力後,第一個練習專案對你而言重要的不是功能多寡或是否酷炫,你應該做的是:運用目前已具備的知識,完成一份這個知識範圍足夠完成的專案。

以學習 Ruby on Rails 為例,假設書本教你做一個論壇,基本上你已經具備基本的 CRUD 、權限管理、 Model Relationship 的知識,那麼第一個練習專案可以嘗試做一個非常 Simple 的 Todo List,只有以下的功能:

  1. 具備會員機制。(註冊/登入)
  2. 使用者可以「新增」、「修改」、「刪除」自己的待辦事項。
  3. 在後台,使用者可以看到所有自己新增的待辦事項,按照新增時間排序,越晚新增位置在越前面。
  4. 使用者可以「新增」、「修改」、「刪除」自己的分類。
  5. 使用者可以幫每一待辦事項「分類」,每一待辦事項只能有一個分類。
  6. 在個別分類頁面,使用者可以看到所有自己新增且為此分類底下的所有待辦事項。

雖然這個專案功能很少而且很簡單,但當初因為對於 Form 會傳送什麼樣的 params 以及 Controller 要怎麼 handle 這些 params 的觀念不清楚,卡在「待辦事項選擇分類,在 Controller 要怎麼處理」這部分超久,因此千萬不要嫌功能少,對於觀念不清楚的初學者而言,很簡單的觀念可能就可以讓他花費非常浩大的時間。

第二個練習專案開始:在目前已具備的知識範圍上,挑戰一至兩項沒有嘗試過的功能

完成第一個練習專案後,從第二個專案開始,可以嘗試每一個專案都挑戰加一、兩個之前的專案沒有嘗試過的功能。例如第一個練習專案做的是上面提到的 Simple Todo-List ,那麼第二個專案可以嘗試新增讓使用者直接使用 Facebook 帳號登入以及搜尋待辦事項的功能。

API Documents 翻了很久,卻還是駐足不前的原因

根據自身經驗,初學者為了實現某些功能而翻 API 的文件時,經常會發生讀了很久卻還是無法清晰理解該如何套在專案上的窘況,我發現會發生這樣的狀況大多是因為:初學者對於自己使用的 Programming Language 、Framework 不夠熟悉、了解。

為了解決這個問題,建議您:

  1. 檢視目前對於自己使用的 Programming Language 、Framework 熟悉度是否足夠,若不足便再更深入了解一些。
  2. 除了官方文件,也可嘗試 Google 尋找使用此 API 的範例,只要不是太冷門的 API 應該都可以找到 Blog Posts。

遇到問題的提問方式

  1. 盡可能詳細描述自己的專案以及遇到的狀況。
  2. 把所有錯誤訊息貼出來。
  3. 把跟錯誤訊息相關的 Code 貼出來,越完整越好。

Stack Overflow 這種論壇本身就可以讓你貼 Code 所以沒什麼問題,但如果你是在不具備貼 Code 功能的論壇上發問,請先貼到 Gist 再把網址複製下來,這樣可以增加回答者在閱讀上的舒適度。

結語

雖然目前寫的專案都不大,但事實上我發現:寫小專案反而可以幫助你更 focus 在一、兩個沒有實作過的功能,帶來的學習成效不一定會比寫大專案差。

在設計練習專案的時候,我堅持每個專案不能重複而且都要能夠解決生活上遇到的問題,這樣才不會花一堆時間寫同樣的東西,而且不會僅止於把專案完成而是能夠持續使用它,或許你也可以朝這樣的方向思考。

希望這篇文章可以幫助到所有初學軟體開發而且剛好卡關在「不知道該如何實現自己的想法」的人,如果您有更完善的建議也歡迎分享給大家。

comments powered by Disqus
分享至 Facebook 分享至 Google +