實習日誌:在 5xRuby 我學到如何超越標準答案,思考「更好」
我是台大資工系的學生,在大三暑假以實習生的身份加入 5xRuby,實習至今大約7個月,在此寫一篇文章分享實習的心得。
在實習過程中我接觸到了軟體開發中大部分的流程,工作內容主要是做前後端網頁的開發還有 CI/CD 設定,網頁開發的部份主要是使用 Ruby on Rails 撰寫網站管理功能,CI/CD 則是修改設定部署特定的服務,開發時會根據 PM 在議題追蹤系統中指派的功能去做開發。
5xRuby 對程式碼品質的要求很高,我剛加入就深有體會,公司內部在提交程式碼以前都要經過縝密的 Code review,而且同事之間每個月都會開讀書會討論開發程式碼、部署服務的技巧。
Code review 是檢查程式碼漏洞和品質的一種測試,剛進公司時我因為不熟 Rails 的標準寫法和公司對程式風格的要求,導致寫的程式經多次修改後依然無法通過 Code review,當時修改程式比撰寫程式的時間還要多,讓我感到很挫折,後來透過不斷在提交前多看幾次改動的程式碼,修改可能會有問題或寫得很冗長的地方,加上翻閱過去專案的寫法並和同事討論尋找靈感,多花時間在尋找好解法上,終於讓提交的程式碼可以符合公司的要求,我在 Code review 裡被提出的問題就慢慢變少了。
剛開始在設計產品規格時,我的想法會被標準解法限制,無法設計出擴充性高、使用上有效率的架構,在和同事交流以後,了解到在開發產品時思考需要保持靈活,在學校一般都會要求我很嚴謹的尋求一個標準答案,但在產品開發時標準答案不一定存在,開發者應該多花時間揣摩產品內容,確保設計是在方便而不是限制使用者; 舉例來說,線上遊戲中常會限制玩家之間不能有一樣的名稱,雖然方便系統判斷,卻讓玩家無法取自己喜歡的名字,這種設計就比較死板,可以用一些權變措施 (ex: 每個玩家發一個唯一的序號) 來解決。
以前對於不熟悉的技術,我有時候會為了追求產值不花時間理解內容,直接使用網路上看似能用的解答;舉例來說: 一項安全更新讓 CI 會在建立 Docker Image 時偵測到含有 ”.pem” 結尾的檔案時失敗,這個更新導致專案無法建立 Docker image,這時網路上找到一個解法將所有 ”.pem” 的結尾的檔案都排除檢查,這種逃避更新的解法看似簡單卻降低了安全性!事實上一種正確的做法是先了解被誤刪的 ”.pem” 檔是測試用檔案以後,不要將測試檔案放進 Image 裡面;專案開發過程中常遇到不熟悉的新技術或不會解的問題,這時網路上通常可以找到類似問題的解法,我在一次次的 Code review 中學到不要直接套用,而是要確認解法的原理才去使用,必要時要翻閱 Source code 和文件確認正確的用法,避免解決問題以後造成更多問題。
在 5xRuby 實習是一件很愉快的事,公司內部工作氣氛融洽,同事間也很積極的在分享知識,讓我在努力工作的同時也能毫無負擔的學習,透過這次實習也讓我對出社會後工作的模式有更多了解,大大幫助我在畢業前決定未來的道路,在念研究所、出社會工作這兩種選擇中,了解哪種更適合我,非常感謝 5xRuby 給我這個實習的機會!