2016年6月17日 星期五

If you want something new, you have to stop doing something old. --Peter. Drucker

    因為工作上的需要,所以我自學Ruby on Rails已經將近半年多,這半年多來只要是相關的Blog跟書,像是xdite大大的Rails101跟ihower大大的Ruby on Rails實戰聖經都是我參考閱讀的對象,也加入了一些像是Rails newbie這類的社群,靠著大神跟前輩的幫助,我拼拼湊湊的完成了公司給予的任務,用RoR搭配Grape gem建構的Web API Server (撒花),但是我對整個Rails的了解滿破碎的,知道自己不足後一直很想去上課補足這個部份,這邊就要稍微Complain一下,查了Rails相關的課程大多以臺北居多,台灣普遍重北輕南忘台中,所以都在臺北是可以理解的,但是課程時間安排也都是排在非假日的下班時段,這對在台中工作的人來說可是要有很大的魄力跟毅力才有辦法上。

契機-重要的Rails101練三次


    在四月的某一天FB上xdite突然宣佈要來資訊沙漠台中開Rails商務網站x即戰力班,天啊!這不就是我一直盼望的課程,當然手刀報名,報名後沒多久助教就傳來了上課前準備事項跟課前作業(疑~距離上課不是還有一個月),特別叮嚀Rails101要練習三遍以上,否則上課會跟不上進度(壓力有沒有這麼大),因為我在自學階段就曾經看過Rails101並實際做過一次,老實說當時沒太大的感覺,這次在將信將疑下依然照著練習了三次,Rails101並不像常見的教學網站,會先有一段詳細的功能或理論描述,而是簡單說明後就直接上陣coding,不需要懂太多,只要照著做就會有一個會動的網站,這對從小接受填鴨教育的我(or 我們)來說,在不知道理由與原因之下就瞎做,一開始滿難接受的,但是管理學教父Peter.Drucker曾說"If you want something new, you have to stop doing something old."在過往自學其他程式語言的經驗,一開始就鑽進理論去探究原因,最後學習的成果總是迷失了自我,不了了之。所以為了真正學好Rails,我也相信xdite的教學方法下,就照著要求練習了Rails 101三次。

  • Rails101第一次練習:根據後來同學的說法,第一次是花最長時間的,但是因為我已經自學Rails一段時間的關係,我是滿順利的在4天左右就完成所有的內容,雖然我對裡面的有些部份還是不知道原因,照著coding還是完成了。
  • Rails101第二次練習:這次練習速度更快了,只花了3天多一點就練完了,這次我除了更熟練之外,神奇的是對MVC之間的觀念的概念感覺又更了解了一點,明明內容是一模模一樣樣,但是就是可以隱隱約約知道我現在寫的這段程式碼是承襲自哪裡,又會對哪個部份做出影響。
  • Rails101第三次練習:在完全手寫不貼code下,只花了我1天多將近2天的時間完成,第二次練習的那種隱約的感覺更強烈,對Controller中基礎Action與對應的Views頁面基本上完全了解,感覺rails整個架構已經有個模糊的影子在我的腦子裡建構起來。
    這整個過程看來好像是在觀落陰或是通靈,我不否認半年自學rails的經驗幫我省了很多功夫,但是Rails101從無到有一整個脈絡承襲的教學,則是讓我重新開始認識Ruby on Rails。

開始上課


    「Rails商務網站x即戰力」這門課共分四次上課,每次上課3個小時,嗯,沒錯就是3個小時,共12個小時要學一門程式語言,跟市面上動輒數十小時的班差滿多的,只是我也曾經上過4、50個小時JAVA程式設計,上完後還考了一張SCJP,然後就沒有然後了...除了了解一點JAVA皮毛外,沒寫出什麼像樣的東西過。
    上課的內容是
  1. 第1週:主要會先從軟體規劃技巧開始,如何從無到有建立起一個網站,一開始的內容其實還滿輕鬆的,在有充份練習Rails101的前提下,要跟上不是太大問題。
  2. 第2週:課程內容進入了重點,在短短3個小時內,被xdite狂塞rails的想法與作法到我的腦子裡,而且在短短的實作時間內就要跟上進度,這除了直接貼code真沒其他方法,也許這堂課會被有些人稱為"貼code班"的原因在這。
  3. 第3週:重點從上週內部的網站建置與開發轉換到對外部系統的串接,像是金流、寄信等Web API的串接跟系統的Deploy,這部份對我來說深知這部份的重要性,我可以在自己的開發環境裡寫的很爽很高興,但是畢竟網站是要給其他人用的,就會有一些外部系統的介接需求。
  4. 第4週:再寫這篇心得前,其實只上到第3週的課程,但基本上完前3次的課程,網站就已經接近完成了,所以第4週主要是把能夠work,但是卻較為凌亂,可讀性較差的程式做個整理。並且xdite也會針對一些求職或是日後RoR功力要更精進時,提供一些意見與作法。
    除了四次的正規上課外,也會有安排課後輔導的時間,課後輔導的時間是自由參加的,助教固定會到場,可以把課後作業拿去寫,不懂的就可以直接問助教或是xdite(如果他有空也有到場的話)。

課後心得與建議


    「Rails商務網站x即戰力」課程其實並不是從上課xdite開始講話的那一刻才開始,而是從完成報名的那一剎那就開始了,從rails bridge、rails101...到最後完成一個可以對外販售商品並收款的網站成品,我花在練習的時間是上課時間的好幾倍,時間的分配大約是自我練習80%,上課時數20%。我給想要報名這課程的人一點建議,這門課主要包含了
  1. 課前練習:rails bridge與rails101,其中rails101至少要練習3次以上,這很重要。
  2. 上課:課程時間只有3個小時,而xdite會用這3個小時拼命往你腦子裡塞東西,至於上課實作來不及就貼code吧,先可以work並銜接下一個階段就好。
  3. 課後輔導:通常會在上完課的隔天舉辦,通常會把課後作業拿去寫,遇到一些不知所以然的問題,當場也會有人幫忙處理,如果順利的話,能做完回家作業第一次會更好。
  4. 課後作業
    • 回家作業:完成回家作業是銜接下一次課程的關鍵,包含上課內容(來不及貼code)的部份,至少手動寫code練習2~3次,3次以上會比較好。
    • 上課心得:這部份其實我覺得很重要,只是我看很多同學都沒有寫,實在滿可惜的,這部份透過回答問題,一方面訓練自己尋找答案的能力,一方面也是把xdite在上課中塞進你腦子裡的東西透過文字轉化成自己的知識,我常常在作回家作業時想不通為什麼要這樣做,回頭在整理上課心得時恍然大悟原來是這個原因。
    • 下次預習:下次預習能夠先了解將面對的課程內容,在去接受xdite轟炸前會有比較清楚的了解他講的是什麼。
    • 上述的3個部份,我自己的時間安排大概是回家作業60%、上課心得30%、下次預習10%。

總結


    以往在面對一個新的技術或學問時,我常會帶入自身的求學與工作經驗,通常效果並不好,因此上完這課程除了學到了rails外,我也對這種顛覆舊觀念的肌肉學習法也頗有感觸,學習新知識時,是否應該放下自身的堅持與成見,學習的效果與速度將會更加顯著。「If you want something new, you have to stop doing something old.」共勉之~

沒有留言: