2018暑期五倍紅寶石實習心得

When you arrive at a fork in the road, take it.

年過30.踏入過往完全陌生的程式開發領域,需要一些衝動、更多的固執決心與熱情。但在決擇的當下,並沒有太多猶豫及徬徨,而較像是 “ When you arrive at a fork in the road, take whichever direction your heart leads you to.”。

{ Hello World }

邁入社會職場至今,大多從事網路行銷領域工作,覺得「寫程式」既是件很酷的事,但又彷彿是個遙不可及的專業。當時對於網路應用程式的認知,只有HTML、 CSS、 JavaScript等前端語言名稱,可說是個程式麻瓜。

在行銷專業領域服務的最後一間公司是新創公司, 於尋求建置官網的合作廠商過程裡,第一次接觸到五倍紅寶石(以下簡稱五倍)。

在眾多接觸其他網站建置廠商的過程中發現,首次接洽的廠商會不離推銷自家服務,以及僅盡暸解客戶需求的基本義務範圍,而五倍負責人龍哥,則花了較多時間從中去暸解規劃使用Rails建置官網的原因,與分享網站規劃的方式。雖然最終沒有合作成功(爆預算 ),但對五倍與龍哥的專業態度,留下深刻印象。

為了提高官網網頁樣式調整與搜尋引擎行銷操作彈性,加上自己對網站開發領域有其極大興趣,便開始自學HTML與CSS,並且開發官網內容頁面;而在一次與合作廠商討論後端修改需求時,萌生了「自己網站自己改」的念頭。

嘗試過幾個國外線上Rails教學後,總覺得吸收的知識破碎而不踏實。爾後在看了五倍的Rails課程內容,和憑藉著對龍哥樂於教學、分享的印象,當下自言自語的內容是:

shut up and take my money

而再真正開始上課後的整體感受是:

mind blow learning ruby on rails

在沒有任何程式基礎的狀況下,課程初期雖然相當吃力,但學習程式設計的過程,則像是踏上一個未知卻充滿驚奇的新大陸;而mind blown的狀態,是在過程中因為不解而感到燒腦、進而理解後領略驚奇的過程,這樣無限循環下的產物。

除了利用課後、下班時間大量練習外,總有遇到問題而嘗試在網路上自行找答案,卻找了兩天只能盯著銀幕拔頭髮的時候。

五倍在為學員解惑這方面,提供了相當完善的協助,相信也是多數線上Rails程式教學課程較難提供的資源。除了課程期間有講師、助教即時回覆問題外,Ruby默默會成了我每週二晚間帶著疑問,前往請教五倍工程師或自習的固定行程。

經過了許多下班寫code的夜晚以及五倍提供的協助,課程結束半年左右時間,陸續完成了幾個從小型個人部落格到多語系品牌網站大小規模不同的Rails網站。除了成就感get,也讓自己思考著下一步…

You never know what future holds for you.

“下一步”在看到五倍公告徵求暑期實習生訊息的那一刻,大概花了8.7秒就做出決定,於是轉頭跟當時公司的老闆說I quit!我要去寫code了,謝謝照顧。

選擇挑戰五倍實習機會作為轉職第一站,除了因為想延續在五倍學習Rails的開發經驗,也相當喜歡五倍的文化與環境。

得知自己獲得實習機會的那天,大概可以用one of the best days of my life來形容當下喜悅的心情;然而,同時也告訴自己:開心,一天就夠了。非本科出身、起步也較晚,需要更積極地補強技術空缺。

Warm Up: Ruby On Rails 教材實做

實習開始的第一個挑戰是,按照指定規格與步驟實作,並部署一個Rails任務管理app。憑藉過去半年的練習所累積的經驗, 教材中以規格面來說,對自己而言整體不算太難,而在這階段收穫最大的則是開發流程、撰寫測試、與code review。

過去開發網站的經驗,比較偏向使用者思維並以頁面為單位的方式規劃功能與資料庫,對於小網站來說或許還行得通,但對於資料關聯複雜的專案,常發生需要回頭修改資料庫結構與資料關係的狀況。在這個區塊的學習領悟是,無論專案的大小,從規劃初期就要以全面性的角度思考、規劃資料結構與關聯。

至於測試,恩,就是個過去在龍哥的Rails課程學過、但總有千萬個理由沒有動手實做過的東西。過去也因為沒有撰寫測試,常發生越補越大洞的情況發生,就算沒有立即發現新的洞,也是債留子孫。但是等一下…子孫不就還是自己嗎?!

Code review,可說是提升程式開發能力最有效率的方式。透過前輩的經驗學習,好處顯而易見。這個階段,五倍將這好處加倍,每一次的pull request,都要通過兩位內部工程師的review,除了學習撰寫出更精進的程式碼邏輯與風格外,一些與程式碼無直接關聯的細節,也在這個階段中有了潛移默化的助長。

Lock & Load: 內部系統 + 商業案

通過了第一階段教材考驗後,有幸獲得參與五倍內部系統與一個商業案的開發機會,也可說是場震撼教育。

過往接觸過的所有專案,從建立專案到完成都是獨立作業。接觸到五倍內部系統與商案時,第一時間感受到的都是「我真的寫過Rails嗎?」。相較之下,自己的作品就像是躺在游泳池裡寫出來的,不只是潮到出水的程度而已。(註:”潮到出水“是Don’t Repeat Yourself (DRY)的反義,是個你不會想收到的評價。)

除了需要花大量的時間理解前輩寫的程式碼與邏輯,因為專案都是已上線服務,code review也更加嚴謹。想當然爾兩個專案內Rspec測試都是標配,其中一個專案更追加了RuboCop、ES-Lint以及SCSS-Lint規範與自動化檢查 coding style。

吃了這碗加班三寶飯,不會每次考試都得100分,但的確幫助自己開始培養一致性與良好程式碼撰寫風格的習慣。

Stay hungry, stay foolish

回頭看這一年,從第一次打開編輯器到寫出第一個前端網頁、從第一次打開終端機到寫出第一個Rails網站、從一個程式麻瓜到成為五倍後端實習生,覺得有點不可思議,但卻又是如此真實。

當初做出轉職決定後,周遭親友大多不能理解為什麼會在這時間點放棄過去的工作經歷;或是,已經到這年紀才開始學習,不會太晚嗎?…等疑問。

對於種種外來投射的問號,在回覆時,我總是用「堆積木」來形容寫程式:"用一塊一塊的小元件、在沒有任何既定模式和固定方式的情況下,組合出自己想要的東西,是一件快樂而有趣的事。"

在走到下個交叉路之前,先經驗一場對自己未來有益,且能持續帶以熱忱的那一條路,no?