實習日誌:在5xRuby 實習,堅定了我走全端的決心
確定錄取研究所後,我開始尋找升碩一暑假的實習。
因為畢業專題使用的是網站架構做呈現,先前也有前端實習經驗,找工作時基本上目標都放在前後端的實習職位。最後因為與五倍的老闆相談甚歡,也被公司活潑的氣氛所吸引,同時一直以來都想嘗試全端的實習,所以最後選擇五倍。過去我只有做過 Django 跟 Laravel 的專案,不過在面試完後就收到一份作業,目標是要用 Ruby on Rails 獨立做完一份任務管理系統。雖然看起來有點複雜,不過作業的指示寫得非常清楚,最後花了約莫一個月的時間來把作業完成,並且在七月時順利入職。
在開始實習之後發現,作業裡面用到的工具都是正式上工之後會用到的基礎,而且在進行作業期間也有主管幫我的進度進行 code review,讓我先熟悉正式上工之後的工作模式,也讓我更清楚了解正式上線的程式應該要滿足什麼樣的效能與需求。在目前為期半年多以來的實習,我就接觸到五個公司的專案。四個專案的面向都不相同,有醫療相關、硬體相關、公司官網、也有做 3D 列印等的專案,每個專案都有各自不同的環境設定。
就前端而言,我在第一個專案上就學到了 Stimulus 跟 ViewComponent 的使用方法,後續專案也都大量用到這兩個工具,學會使用這兩個工具後,讓我可以在 rails 的專案裡開發前端功能。除了這兩個專做給 rails 的前端工具外,因為幾乎每個專案都有使用 webpacker 來進行前端的開發,我也學會了如何將 JavaScript 的套件加到 rails 上等與 webpacker 相關的操作,像是將 wysiwyg editor(TinyMCE), flatpickr, select2 等套件新增到專案上。在新增與設定這些套件的環境時,讓我更了解整個 rails 專案要如何與 JavaScript 做互動,以及 Webpacker 是怎麼提升在後端框架中開發前端細部功能的效率。
後端的部分我也學到不少好用的工具,像是 rails 的 form object,雖然初期上手花了點時間,不過也因為 code review 的機制還有主管的協助,讓我可以更明確的定義表單的內容與運作方式。另外,為了要滿足即時更新留言的需求,我也接觸了 rails 的 ActionCable 來實作即時通訊的功能,同時也更了解專案中的 request 如何傳遞。此外,許多專案基本上也都會用到 ActionMailer 的功能,不僅 view 的設定方式與 application 上不相同,在測試時需要設定專案的 host,因此我去瞭解了 puma-dev 這個工具,才知道原來在開發時也可以使用特定 domain 來連到本機上的伺服器。還有之前就聽過,但一直沒有機會實作的 Cron Jobs 也有在最近的專案出現,雖然這個功能才剛開始實作而已,不過也很感謝老闆和 PM 很願意給予接觸進階功能的機會、讓我能精進自己的能力。除了上述的基本功能以外,還有一些專案會用到神奇的工具,像是某個專案裡就用到了 ElasticSearch 這種超大的框架,雖然我也只有把這個功能移除而已,但在移除過程裡改寫了很多 query 的邏輯,也因為是搜尋功能而改了很多表單的設定,在修改過程中不只可以實際應用資料庫理論與 SQL 指令,同時更增進我對於 rails 表單設計的理解。
在經過一兩個月的訓練後,我收到的 issue 不再只限於前後端的設置,還有一些環境部署相關的設置。我過去的開發經驗都僅限於本地端,這對我來說又是另一個新的挑戰。
先就本地端開發而言,有些專案的 ruby 版本比較舊,我開發的電腦會遇到不支援情況,於是我使用 docker-compose 把環境隔開進行開發,這也讓我更加熟悉容器的概念,終於能將之前學校所學到的技術應用在實際場域上。而在部署方面,我也曾經接過幾張設置 Terraform/Sentry/AWS 的 issue,從沒把專案上過雲端的我又再次大開眼界,第一次了解到原來 AWS 的上百種服務,每個服務都有它存在的意義,以及這些服務可以達到什麼樣的目的、為何需要這些服務同時使用等。後期也曾經收過設置某個專案測試站的任務,也讓我重新了解部署的完整步驟,不只專案的環境本身要設置好,連 CI 工具的設定、裡面的 pipeline 要怎麼跑、需要用到哪些容器,還有金鑰的設定等等;為了完成這些設定研究許多文件,主要都是 Nomad 與 Terraform 的設定,這也是新一波知識衝擊,之前在學校根本不會碰到這種等級的工具,只能從頭開始。公司也給予不少協助與參考,才順利建出專案測試站。
不僅在技術面獲益良多,我也很喜歡公司不會太過嚴肅的氣氛。三級警戒後,每週五下午的 tea time 讓同事們對彼此更加熟悉,大家每天中午也幾乎都會一起外出用餐,同事之間也都會互相請教問題,我很喜歡這種共同進步的感覺。在這半年多以來的實習,不只讓我學到非常多實用的技術,也讓我真正了解工程師實際上的工作內容、工作模式,還有在職場上應該要面對的問題。
我學到最重要的一點,終究還是有問題一定要立即反應,其實和組員或者 PM 間都有很多的討論空間,而且在共同討論後對彼此在做的東西也會更有共識;實習期間也需要參加站會與各項專案的例會,讓我體會到會議能讓全體組員對專案的理解一致,並節省不少額外溝通成本(突然發現學校教得是真的)。實習期間也讓我更確定未來會繼續往全端工程師的方向發展,我自己很喜歡用程式解決問題的感覺、與成功解決問題的成就感,也很喜歡接收新的知識與技術等,確保自己有時刻都在進步的感覺;因此我覺得像五倍這樣的接案公司非常適合我、與喜歡接受挑戰的人,可以同時接觸到好幾個不同的案子,見識創新的技術及應用場域。