4466482623_6aea29d90a_b

從去年開始自學 Web Development 以來,靠著免費的 Codecademy 和付費的 Treehouse 等線上學習資源,慢慢地循著 HTML–> CSS –> Bootstrap –> jQuery –> Rails 的路前進,一直到學 Rails 之前都還不算太難,但當我嗑完 Ruby 基礎打算直攻 Rails 的時候,才發現事情不是憨人所想的這麼簡單!

非資工資管科系出身的我,對 Web 的技術基礎觀念很薄弱,這讓我進入瘋狂的撞牆期,線上的教學指南通常做沒多久就會卡關,這樣的情形持續一兩個月之後,我偶然發現 Rails 社群知名開發者 XDite 的這篇文章強烈推薦去 Tealeaf Academy 學 Rails。Tealeaf Academy 標榜是線上版的 Rails Bootcamp (速成實戰營) ,以教學觀念紮實著稱,在對岸的 Rails 開發社群評價也很高,但坦白說價格並不便宜,課程動輒上萬元,幾番衡量後,我索性把心一橫跟親友借錢上課(報 Xdite 的名子有優惠),以金錢換取時間和紮實的觀念,我認為是很值得的投資。

 

同樣是線上教學,Tealeaf Academy 之所以能賣這麼貴,主要有兩個原因:

(1) 堅強陣容  Tealeaf Academy 的創辦人是 Rails 顧問公司出身,已培育接近上百位 Rails Developer,觀念拆解清楚,實戰經驗豐富,教學實力無庸置疑。

(2) 全程實作   一般線上課程是錄影片給同學看,不懂再問老師,但 Tealeaf Academy 採用線上互動教學模式,所有的範例學生都必須親自完成並上傳到 Github , 老師可以追蹤學生的進度,同時檢查有無錯誤,這是一般的線上教學平台無法做到的。

這篇文章是個引子,之後我會每個禮拜記錄自己在 Tealeaf Academy 學習 Rails 的筆記,也順便寫寫自己在學 Rails 的想法 XD

(以下是給想學網站開發的外行人的小指南)

外行人想學網站開發,必須先問問自己兩個問題:

(一) 學習的目的是什麼?

學程式設計現在是一件很潮的事情,但做任何事前都要先想想目的,你學習是為了什麼? 是想當個懂技術的共同創辦人? 還是想轉行當工程師? 或是想當個懂 coding 的數位行銷專家? 你的目的會決定你該投入的時間和努力的程度,也會比較有個明確的願景。如果只是覺得很好玩想學點新的東西,熱情很快就會被消磨殆盡,我建議一開始就要設定好目標,才不容易半途而廢。

 

(二) 你有多少時間 / 預算?

學任何東西都有免費的管道,但效率絕對不會比花錢學來得好,若只透過免費的管道學習,到了某 Level 你就上不去了。線下的程式課程價格通常都是以萬元起跳,線上的課程雖然便宜,但深度往往不足,且需要有強大的毅力才不容易缺課。天下沒有白吃的午餐,你得到的東西跟你付出的努力/時間/金錢絕對是成正比的。如果你的目標定的很高,卻沒有多少錢,那你可以用時間彌補,把學習的時間拉長到以半年為單位;如果你沒時間,那你可以花錢去上類似 Bootcamp 的實戰營快速成長。千萬不要在社群問這種蠢問題:「我是新手,預算只有幾千塊,我想在三個月內學 Rails 並做出一個XX平台,有什麼方法嗎?」那只會顯得你一點決心也沒有。

 

問完自己這兩個問題,接下來就是要學什麼的問題了,就學 Rails 而言,我會建議這樣點技能樹:

 

skill tree3

綠色部分是一定要學的(必修),紅色部分是建議學習(選修),如果跳過紅色部分,那學習過程會蠻痛苦的,因為大部分的教學者都會把選修部分當成是你應該要會的 background 知識。

以下一一解釋專有名詞:

HTML –>全名 Hyper Text Markup Language,是用來建構網頁元素的基本語言,當你載入某些網站過慢的時候,有時候會看到醜醜光禿禿的原始架構,這就是單純只有載入 HTML 的狀況。

CSS –>全名 Cascading Style Sheets ,是用來修飾 HTML 元素的語言,網頁元素的位置、大小、顏色、排版基本上都靠 CSS ,可以把它想作是網頁的化妝師。

Bootstrap–>由 Twitter 員工開發出來的網站前端架構,完整支援 responsive design (隨著螢幕大小自動調整網頁) ,內含已經做好的表格、按鈕、導覽列等網頁元素,善用此架構可以大幅度縮短架站的時間。 (網站前端架構有很多,Bootstrap算是最多人使用的一種)

Javascript–> 用來幫 HTML 增加動態功能的語言,透過這個語言,網站不需要重新載入就能有一些動態互動功能,譬如 light box、警示標語或者是拖曳網站元件等等。Javascript 主要被用來增進 user experience。

jQuery–> Javascript 的函式庫( library ),你可以把它想成被整理過後的 Javascript 語法,jQuery 讓 Javascript 應用在網站開發上更快更方便。

Ruby –> Ruby 是一種物件導向、動態的程式語言,以人性化、直觀著稱,發明目的是為了讓工程師能更快樂的寫 code 。

Rails –> 全名 Ruby on Rails,建構在 Ruby 之上的 Web 應用框架,嚴格依照 MVC 理論設計。由於近年來網站需要越來越多的邏輯和動態功能,造成前後端的整合開發變得相當不容易,Web 應用框架解決了這個問題,所謂的框架就是一套已經被制定好的規範和慣例,讓開發者在該架構下來進行開發,減輕開發者負擔。

Git –> 一個版本管理控制軟體,讓你在開發的過程中可以使用 S/L 大法,開發新功能不小心爆炸的時候可以時光倒流 XD

Github –>一個雲端平台,用於存放使用 Git 版本控制的軟體代碼和內容計畫,簡單來說就是把你寫的 coding 分享在網路上,供人家下載並開發新功能,也可以用來給程式教學的老師檢查學生的作業。( Github 常常被開發者用來做開源計畫 )

Heroku- -> 一個支持多種程式語言的雲端平台,讓開發者快速在雲端上佈署自己開發的應用,主要用來測試開發的產品有沒有問題。

Command Line –> 其實就是醜醜的命令提示字元啦~(以前在 Windows 叫做 DOS ),到了學 Rails 的階段,你必須要會一些 Command Line 指令才能順利安裝並運行 Rails。

Mac / Linux –> 因為 Rails 在 Windows 上執行的效能很差,常常出現一堆有的沒的 bug ,所以建議如果想愉快的學 Rails,最好是換台蘋果電腦,或者是用 Virtual Box 裝 Linux 的作業系統,不然光安裝 Rails就會搞死人了 XD

 

至於透過什麼管道學習,筆者會建議 HTML + CSS 可以先在免費的 Codecademy 打好基礎,進階的觀念可以到 Treehouse 學(有免費七天試用),Bootstrap可以到 mokoversity 的這門課學。至於 Javascript 和  jQuery 我也是在 Treehouse 上學的,Git & Github 可以到 Code School 免費學。

 

Rails 有人帶著你學會比較好,不適合透過線上預錄的課程影帶學習,建議上實體課程或報名 Tealeaf Academy ,行有餘力可以多多做線上的 Tutorial 和跑 Rails 開發者社群舉辦的活動。

 

筆者還是 Rails 新手,若內容有誤還請各方高手不吝指正,如果有想到會再更新,希望這篇能幫助到更多想學 coding 的新手。

cover photo via Michael Himbeault