Nic Lin's Blog

喜歡在地上滾的工程師

Junior Rails 兩個月實戰心得

關於我

我是Nic,自從xdite的Rails即戰力畢業後,工作至今也即將滿兩個月,其中的收穫與成長,讓我感覺就像是一場冒險,希望能夠透過文字記錄下來,同時希望能幫助更多在這條路上,亦或是想踏進來的人一點方向。

上課之前的背景

從小學時期就對電腦情有獨鍾,喜歡玩電腦,「想要」寫程式,但「不會」寫程式。 大學就讀私立科大於2014/6月畢業的學士,修習的系別是資訊工程系,就學期間學習的科目如大家所知的資料結構、演算法、計算機概論等等,皆是拼拼到課率,然後背背題目低空飛過。 大學四年的實力僅有寫個簡單網頁(如asp.net實作身分證驗證)以及對linux Centos 指令熟悉。

在這之前,我從未做出一個完整的網站,或是值得一提的程式,更別說連聽都沒聽過Ruby on Rails。

學習動機

我的學習動機,原本要在這邊寫一段,但就像Rails簡潔的風格(Don’t Repeat Yourself),不想寫重複的東西(根本是懶鬼!!),所以在實戰班心得有寫到,也許可以到這裡看

課程影響

上完xdite的Rails即戰力課程,其實我很後悔,很且深深地後悔。

後悔為什麼不在早個幾梯報名!!後悔為什麼那麼晚才知道這相消息!!

這無庸置疑是真的超後悔啊啊啊啊!

然而這堂課,學習到的東西,以及能學習的東西,遠超乎我所想像,那種感覺就像百貨公司限時大搶購,你有能力拿走多少東西,都是你的。

一開始,還對於Ruby這個語法陌生,對Rails這個框架完全摸不著頭緒的時候,我硬逼自己去報名上課,在課前瘋狂練習所謂Rails101,因為我對一件事情在短時間重複做會感到厭煩,就像你不會一個禮拜五天都吃魯肉飯(大多數不會,不要說你是例外XD),所以xdite的提醒,我分了兩週才做完所謂三遍的101。

其實做完三遍當下,我覺得不過就如此,好像知道該把code打在哪裡,卻又無法了解其中奧義,只是有個模糊的概念知道,何者與何者之間的關聯,如果你要我即刻開發一個網站,當時的我完全不知從何做起!

上課時,xdite老師講的很快,我的手速完全無法超越他的口速,但我發現也許是我做了Rails101三遍的緣故,在教材的指引和老師的講解下,我可以大約知道這樣的code會做出什麼功能,如何替自己解決bug。

然而課程中出現了在練習Rails101時不曾碰過的bug,我利用舉手求救的機會,讓助教為我解bug時,能夠藉此學習解決陌生的bug,久而久之就不在對滿滿的錯誤訊息感到害怕。

很快的,上完四堂課,有種意猶未盡的感覺,但卻對課程的內容無法完全掌握感到不安,於是我利用空閒時間,把不懂的地方試著靠自己的方式寫一遍,並思索其中道理,不懂的地方找meetup問助教或是上網查資料,然而在這過程中,依舊會遇到你似曾相似的錯誤,這時沒有助教在身邊,你能第一時間找到答案的地方就是Google,在這個時候,你必須學會將問題粒度切小和如何下對關鍵字,最後找到適合你的答案。

在課程結束後,最需要培養的,是「自學能力」,你如何能夠遇到問題時,靠著自學能力解決,縱使這個課程就像坐火箭,把你快速拉到另一個層次,但當推力消失了,如何靠自己在進入下一個層次呢?

這堂課程對我而言,xdite讓我大幅降低自我摸索的時間,減少重複撞牆與原地踏步的時間,盡可能的避開起步的冤路,快速的送我到一個登山口,告訴我技巧跟經驗,至於能爬多高,就得靠自己了。

在實戰之前

課程結束後,我邊投履歷,邊練習Rails,面試的過程可以看這篇[文章]( “http://niclin-blog.logdown.com/posts/413505-interview-experience")。 在面試遇到瓶頸的時候,我利用Meetup的機會,詢問xdite的意見以及履歷的建議,xdite不會拐彎抹角的跟妳說你寫的怎麼怎麼,而是直搗黃龍的告訴你,你寫的某個部分有著何種缺點,如何去改善,甚至不介意你在給他看第二次第三次,這部份讓我覺得,除了課程以外,竟然還有含金量如此高的課後服務,根本值回票價且超乎我所想像。

說也奇怪,我還真的就是那個你們現在課程看到的投影片上那句「改完履歷就上了」的學長,「我完全沒有Rails經驗」,只憑著一個月的課程,跟除了三餐外的時間努力寫code,還真讓我找到了工作,我花了一個月的時間面試,總共十間公司,獲得兩間聘書。

這堂課我從其中獲得了這些資源:

  1. 業界不見得有人跟你說的心法(思考架構)
  2. 強大的助教群(可以從中學習)
  3. 健全的Rails meetup可以交流
  4. 專業的履歷修改建議
  5. Rails的特殊用法以及整理心法

進入實戰

開始上班的兩天後,主管交付我一個目前以Rails為架構的旅遊網站,其中的商業邏輯與主要架構,主管在我來之前已經完成,我必須著手進行維護以及新增未來需要的功能

我滿懷期待的打開專案,發現整包code是我上課所學的三倍以上,我心想慘了,要是寫不出主管要求的功能,試用期之前肯定掰掰了。

但是樂於接受挑戰的我怎麼能就此放棄,我先是與主管討論我需要立即修復的是哪個區塊的功能,以及在未來幾天需要完成什麼項目,很快的我掌握了接下來的目標。

在維護及改善的過程中,除了大量閱讀前人所寫的code,我利用了之前xdite上課所學到的如何整理程式碼,藉此邊整理,邊了解整個邏輯跟架構,慢慢的我可以寫出一些簡單的東西了、可以從模仿變成創造。

經過第一個月的熟悉後,我實作第二個主管交付的項目,我漸漸發現在實作的過程中,像是有一股內力一直湧出,我腦袋的邏輯能夠在MVC架構內穿梭自如的感覺,對於實作不出來的功能,能夠把粒度切到最小進行詢問或是上網查詢,進而解決每個難題。

對於完成自己從來沒作過的項目,感到不可思議,我差點以為是天生神力,但其實這一切都是更多的自我努力與xdite課程的推力,讓我能夠在短時間內快速進步。

很快的,Rails的正式工作也滿兩個月,回頭看看第一個月寫的code,還真是超級沒有羞恥心的啊XD,不過也很開心能夠清楚看見自己的進步,並回頭整理不乾淨的code。

實戰兩個月提升的技能: 1. 可以利用Sass編寫成css進行前端排版 2. Git更熟悉各種用法 3. 能夠導入JavaScript Plugin並且能夠利用ajax送參數後經由controller處理且進行資料庫操作。 4. 能夠銜接API並且處理資料 5. 能夠解決網站N+1 query問題

接下來,可能是工作滿半年考慮會在寫一篇XD。

謝謝觀看。

comments powered by Disqus