我在 2017 年 1 月 6 日看到 Facebook 跳出一年前的貼文,這貼文是發佈用 Ruby on Rails 做出的易經創業卜卦網站(因只是練習作品故已關閉)。而在這卜卦網站發布後的一年,我和共同創辦人 Joanne (負責產品設計和規格制定)打造的譯者雲端服務網站 Termsoup.com 已經公布兩個個月了,這網站從訪談、功能規劃到陸續改版也花了五個月時間,目前已有數千人註冊,而且越來越多譯者已經完全從 Word 轉移到 Termsoup 工作了,因為在這裡可以節省 50% 以上的查詢詞彙和資料時間,飛快地完成翻譯文件,而不需要開啟 Word 和一堆瀏覽器頁面辛苦的查詢資料。
一年前貼文:
一年後的譯者雲端服務:
由於網路學習資源非常豐富,尤其是線上付費課程已經越來越流行(尤其是歐美國家),許多厲害的線上課程老師已獲得好幾萬名學生且獲得極高分數評價,現在要學習新技術的門檻和時間已經比以前降低很多。
我自己之前在美國唸博士班最大的收穫,就是學到如何更有效率的學習新事物,關鍵有兩個:
第一,要找到最好的學習材料。
第二,根據程度和學習進度依序使用這些學習材料。
如果有極佳的老師提點,可以明顯加快學習速度,減少摸索時間。但如果沒有好老師就寧可自學,不要浪費任何時間在二流的學習教材和課程上。學到錯誤觀念或一知半解的觀念比沒學更糟,因為要花額外的力氣移除錯誤觀念並塞進正確觀念,等於要重整自己的腦袋。
我自己在建置 Termsoup 之前,主要會的是 HTML5、CSS3、非常簡單的 jQuery 和 javascript,以及部落格等級的 Ruby on Rails 技術。我花了約半年到一年時間陸續在線上學習 Ruby on Rails,也在五倍紅寶石上過幾次免費課和付費課(這裏也有每週定期聚會可以參加)。我花在線上課程的時間不少,但自己做一個「認真的專案」才能極大化進步幅度,因為碰到問題會被強迫要去解決它、在網路上找答案,甚至有三次在 Codementor 上付費找厲害的工程師協助,節省我一堆找答案時間。在這種較為痛苦的過程才能真正提升等級。如果只是做一個練習作品,很容易碰到問題就繞過去用簡單的方式解決,進步會相當有限。
以下列出我的自學清單,而且是從基礎和進階的學習材料,希望可以幫助到想要學習建立網站卻不知從何開始的人。但這裡講的網站建立技術主要以 Ruby 材料為主,不包含像是 Python 或 PHP 等網站技術。大部份都是英文學習材料,但不用害怕英文閱讀和英文聽力,逐漸習慣就好,而且功力要提升,勢必要一直接觸英文內容。
從零開始:HTML5 & CSS3
要學習網站技術,就一定要先了解 HTML5 和 CSS3,嚴格來說 HTML 和 CSS 算是語法,而不是程式。學會這兩種語法,至少也能做出漂亮的自適應的靜態網頁(responsive webpage),嵌入一些簡單的第三方服務,就能自製 landing page。
- Web design | Treehouse:Treehouse 是一個付費的學習程式的平台,是很適合初學者的地方,每個月$25美金,可以下載課程影音供日後複習。Web design 的 track 包括 CSS、HTML的課,還有 Adobe Photoshop 和 Illustrator 的基礎課程。
- HTML & CSS | Codecademy:Codecademy 是國外知名免費學習程式的網站,主要以非常基礎的知識為主,也有線上練習機制,每講一段就會出一個練習題。雖然很基礎,有時候練習題不一定很好做,但不必覺得受挫,被練習題難倒是很正常的事情。出有難度的考題重點不是要考倒學生,而是強迫學生去思考背後的邏輯。
- HTML/CSS | CodeSchool:Code School 也是付費學習程式平台,每個月 $29 美金,看可以下載課程影音供日後複習。Code School 有些課程難度偏進階,但 HTML/CSS 這門課還好,如果上述兩個還不夠,可以考慮這門課。
- 鬍子科技學院:這是一個在香港的程式教學服務,他們提供了簡單上手又易懂的 HTML 教學、CSS 教學和 Javascript 教學。他們特別的地方在很多說明都精心設計容易了解的圖案解說,讓學習者很快了解哪些語法會是什麼效果。非常推薦初學者可以看這些免費資源。
前端基礎:jQuery、Bootstrap框架
在學會 HTML/CSS 後,可以開始了解簡單的 jQuery。jQuery 可以做出不錯的網頁動態效果,例如一個區塊或文字的淡出、淡入等,有一些適當的動態效果會讓網站的質感提升,強化使用者體驗,尤其使用者體驗在製作網站時是很核心的元素,是一定要掌握的技巧。jQuery 其實是 Javascript 的框架,但 Javascript 較難,可以先直接用 jQuery 操作。React.js 和 Vue.js 也是竄起相當快速的 Javascript 框架,但我自己還沒深入了解,而目前 jQuery 也仍是最多數人使用的框架,免費第三方資源也最豐富,所以我覺得仍是必學的前台技術。
Bootstrap 是相當好用的前台 HTML/CSS/jQuery 框架,由 Twitter 製作和分享。由於製作 responsive webpage 非常耗時,例如製作各種狀態和情境的表單(form)、按鈕等,使用 Bootstrap 可以快速做出這些元素而且介面優雅,要變更顏色等屬性也非常方便。另一個好用的框架是 Foundation,但我自己沒用過。
- jQuery | Codecademy:在 Codecademy 可以學習基礎 jQuery,也可以了解到他的效果和威力。
- Try jQuery | Code School:Code School 這門課可以了解初階 jQuery,但它的下一門課 jQuery:the Return Flight 可以先不要上,等先學了 Javascript 再上這門課。
- Frontend Web Development | Treehouse:Treehouse 這門系列課程可以學到完整的前台網頁建置。這門課程系列也包括簡單的串接第三方資料,在這個階段學習起來也不會有太大障礙。
- Learn Bootstrap Development By Building 10 Projects| Udemy:這是在知名學習平台 Udemy 上的課程,有了 jQuery 的基礎概念後,可以先在這裡學習 Bootstrap。我學了這門課之後,建立大部份前台網頁架構就很快了。提醒一下,要購買任何 Udemy 上的課程之前,都先 Google 課程名稱加 “coupon”,因為有很多 coupon 可直接使用,找打折數最多的就對了,打折後一門課現在大約台幣三百元左右。
- Projects In JavaScript & JQuery:這也是 Udemy 的課程,雖然名稱有 Javascript,但實際上仍以 jQuery為主,其中的 Section 6 Ajax PHP Shoutbox 可以先跳過沒關係。
後端基礎:Ruby、Ruby on Rails
要學 Ruby on Rails,還是要先對 Ruby 有一定程度的了解,畢竟 Rails 是從 Ruby 延伸出來的框架,而且在寫 ROR 時也還是經常用到 Ruby 語法和功能。
Ruby
- Ruby | Codecademy:在 Codecademy 可以先初步了解 Ruby 的功能和語法。
- Try Ruby | Code School:Code School 上的這門 Ruby 基礎課是免費的。
- Ruby | Treehouse:Treehouse 上的 Ruby 課程有完整的基礎知識和技巧,上面的習題大部份是選擇題,較為簡單,挫折感會較低。
- Ruby Bits | Code School:這門 Code School 課程也很不錯。下一堂 Ruby Bits 2 可以接著上,但是難度會提升一些,若是覺得都不太懂,就留著以後對 Ruby 有更多了解後再看也可以。
Ruby on Rails
- Rails Development | Treehouse:學 ROR 可以先從 Treehouse 這門課開始,裡面也會講到基礎的資料庫和版本控制(Git)觀念,非常不錯,但這裡講的 Rails 非常淺,是很好的起步但不夠。
- Rails for Zombies Redux | Code School:這門課也是免費的,把 Rails 的觀念講得很清楚,尤其是把 ROR 的一些核心觀念用圖解說是很友善也易懂的方式。但內容會比較硬,有時需要來回看或是看其他材料再回來看才能吸收得好,這算是很重要的教材。
- Rails for Zombies Redux 2 | Code School:從上一門課接下來上這門課,其實難度會有一點跳耀,所以若覺得很挫折是很正常的。但建議把它先啃完,以後做一些練習或看其他教材後,可再回頭參考。我自己的經驗是 ROR 需要一直來回練習和學習才能逐漸消化。
- Ruby on Rails 實戰聖經:這是由 ihower 撰寫的很豐富的 ROR 知識和技巧,但建議當作工具書查詢,如果當成教科書唸會很累。
資料庫基礎:
雖然要做 Ruby on Rails 網站,很多資料庫工作都可透過 ROR 的方法處理,而不需要自己撰寫資料庫語法,但是了解資料庫原理還是非常有幫助。而且未來開發較複雜的網站也很容易碰到自己撰寫一些 SQL 語法。在非關連資料庫(NoSQL)如 MongoDB 的部分我比較沒辦法提供學習素材,因為自己目前還沒有用到,但這是需要學習的部分,NoSQL 很強大也越來越受歡迎。
- Beginner SQL | Treehouse:介紹基礎的關聯式資料庫觀念和語法。
- Learn Database Design with MySQL:了解如何設計資料庫,這對建置 ROR 網站也很有幫助。最後 Section 8 PHP & MySQL 的部分可以跳過。
版本控制基礎:
版本控制(version control)雖然不是程式語言,但不論是個人或團隊撰寫程式,都是很重要的工具,可以避免版本混亂,或是當程式出錯可以回復到之前版本,降低各種開發時的不確定性。
- Learn Git | Codecademy:了解版本控制基礎技巧和觀念的免費課。
- Try Git | Code School:這是免費課程,可以了解版本控制的基礎做法。
- Git Real | Code School:學完上門課程可以繼續學這門課。下一門 Git Real 2 較難,可以視需求學習。
前端進階:Javascript
- Full Stack Javascript | Treehouse:Treehouse 上完整的 Javascript 課程。如果只要用 JS 處理網站前台,並且只和 ROR 和關聯式資料庫搭配,那後面關於 Node.js、Express、Mongo 的部分可略過,或視需求學習。
- Javascript Road Trip Part 1 | Code School:了解 JS 基礎語法和觀念。
- Javascript Road Trip Part 2 | Code School:了解 JS 基礎語法和觀念。
- Javascript Road Trip Part 3 | Code School:了解 JS 進階語法和觀念。
- JQuery:the Return Flight | Code School:了解進階 jQuery 和 AJAX 技巧,AJAX 對串接內部或外部資料都很重要。
- JavaScript: Understanding the Weird Parts | Udemy:這門課知名度極高,是 Udemy 所有課程的 Top 10,也是學 Javascript 的必備教材,把 Javascript 觀念講得非常清楚。我自己上這門課收穫也非常大。
- ES6 for Everyone:這門課主要針對最新的 ES6 語法做清楚的講解。我原本對像是 Promise 這種方法有些模糊,在網路上找各種資料還是不太了解,看這門課後才學會怎麼用,也是很推薦的課程。
後端進階:Ruby on Rails、AWS
- Ruby on Rails Tutorial:這本由 Michael Hartl 寫的免費的線上電子書,是非常有名的 ROR 教材,現在最新版是講最新的 Rails 5。需要耐心一面看一面手動練習,看完且有做實際練習之後收穫會非常大,我會列為必要教材。
- The Professional Ruby on Rails Developer:這是 Udemy 上的課程,包含完整的 ROR 網站程式撰寫和串接AWS雲端伺服器資源,裡面有些部分如 AWS 若還不了解,也都還可以依樣畫葫蘆,並有初步了解。這門課的好處是除了練習建置完整的 ROR 網站,也可以先學到如何部署程式到雲端伺服器 Heroku ,以及如何使用 Github 做版本控制和備份程式。
- AWS Certified Solutions Architect – Associate 2017 | Udemy:這門課有完整的 AWS 服務教學,比較全面。但若需要深入使用個別服務,需另外 google 找資料。AWS 的官方文件很豐富,但有些處理方式也沒辦法寫得很完整。我很推薦使用 AWS 上的 Elastic Beanstalk,它非常方便的整合 S3 儲存、EC2 運算、RDS 資料庫等資源,部署程式也很容易。這服務可以降低非常多管理伺服器成本,對於不熟悉伺服器管理的工程師是非常棒的工具。但也因為這些方便性,使得一些管理彈性較低,因為 Amazon 擔心工程師有太大權限會搞亂系統重要設定。但我覺得初期都不用太擔心這個,重點是驗證產品和營收模式,日後有錢再找工程師升級、搬遷、優化都不是問題。
- Rails 4:Zombie Outlaws | Code School:進階 Rails 技巧,較深入。
- Surviving APIs with Rails | Code School:進階 Rails 技巧,主要以串接 API 的技巧為主。
- Rails 4 Patterns | Code School:進階 Rails 技巧,較深入。
繼續升級
學完這些教學之後,要繼續升級寫出更強大的程式,我覺得有幾個重點:
親手製作專案
最重要的還是自己做專案才能進步,否則只是上課練習或甚至只有聽課,幫助極為有限。可以從簡單的開始做起,例如 to-do list、部落格,之後再自己想一些服務試著做做看,做出來會很有成就感。也有的 Ruby 學習網站就是讓學習者做出一些知名網站的功能,例如 AirnBnB、Twitter 這些,一方面學得快,二方面從練習成果也比較容易獲得信心。
Google 技巧其實是很重要的部分。我曾碰到某些難題,知道非得找高手幫助不可,就在 Code Mentor 上找人協助,用遠端協作看到他們如何 google 問題找答案,而且能只看前面幾筆結果就能判斷答案是否在那,如果前幾筆沒有就轉換搜尋策略。從觀察高手 google 我才學到更多技巧。
Stackoverflow
Stackoverflow 也是非常重要的網站,這裡有很多工程師回答問題。其實大部份基礎問題幾乎都已經可以在這找到了,也可以張貼問題,但這網站是有等級制度的,也就是要多發問、點擊 upvote 到一定數量才能評論、回答問題,這也才能累積出有公信力和實力的答案。
善用第三方資源
現在外部資源非常豐富,就算是免費的幾乎都用不完了,包括 API、Ruby gem、Javascript library,不需要每個功能都自己重新寫,這樣開發速度才快。
AWS
AWS 的服務種類增加非常快,現在甚至有 AI 的平台,讓開發者不必自己開發 AI 程式就能分析數據或做出有機器學習能力的功能。所以多利用和熟悉 AWS 資源也非常有幫助。


你必須登入才能發表留言。