2021 年自 ASTRO Camp 全端工程訓練營第八屆結訓後,在一個月內順利找到第一份軟體工程師的工作!當我剛進入公司時,和大多數新手一樣,公司希望我能廣泛涉獵前後端,以便更全面地理解專案。因此,我的工作任務從一開始就由淺入深,從處理簡單問題開始,逐漸轉向更全面的專案內容,同時適應團隊的開發節奏
隨著時間的推移,我逐漸挑戰更為複雜的任務,例如完整功能的開發(前端:刻頁面,後端:出 API)。這時,我必須深入了解資料庫和前端框架,而幸運的是,在 ASTRO Camp 的培訓中,我已經建立了對這些工具的基本理解,才讓我在初期菜鳥的開發生涯中,不會因為徬徨而亂了陣腳。
在這一兩年的開發過程中,處理這些「票」的過程充滿了挑戰。因為我當時缺乏經驗,常常無法想到更有效率的解決方式,只是盡力讓功能運作(汗)。
當時我的想法是「能做出來就好」,然而,透過公司的 mentor 在 code review 中提供的建議,我逐漸看到了自己的盲點,隨著工作年資與經驗的增長,開始掌握了更多的開發技巧,對專案的理解和掌控能力也越來越強!
成為工程師後的第二年探索
在第二年,我進入了一家新的軟體開發公司,而這間公司的業務量非常龐大,讓我面臨到更多挑戰。我將這些挑戰分為四項:
Write More Code
專案開發上因為某些功能需要全面翻新,這需要非常小心地檢視整個專案的架構和邏輯,否則沒有思考的改動可能讓網站炸掉。
此外,我也會需要撰寫全新的功能,這時候我就像是該功能的創始者一般。我必須深入思考應該有哪些欄位,如何設計以便其他人使用。
因此當我越寫越多,開發的經驗越來越豐富,也就越來越了解好的程式碼可以節省後期的維護時間!
Debug
我的主管曾告訴我,工程師寫程式不難,但真正厲害的是能夠解決問題和 debug 的工程師(笑)。
在這裡所指的 debug 不僅僅包括解決自己的問題,有時候你可能會碰到需要解決別人的問題。由於公司有輪班制度,值班時需要直接面對客戶端收到的問題,其中有些需求非常緊急,但並非你所熟悉的功能,因此能夠快速但又能精準地解決問題,是我在第二年工程師中所面對到的一大挑戰!
CodeReview
我也會花時間閱讀 mentor 對其他同事 code review 的留言,透過這樣的觀察,我不僅能瞭解我自己在 code review 中可能忽略的地方,更能從別人的經驗中學到一課。
由於公司人手有限,有時我也需要進行對同事程式碼的 code review,這和自己撰寫程式碼是完全不同的兩件事。因為你必須先理解別人的程式碼,才能知道應該留下什麼樣的評論與建議。
這需要豐富的經驗去發現潛在的 n+1 問題或邏輯錯誤,而我自己也在這方面不斷積累經驗和成長。
Metrics
由於專案迅速成長,我碰巧遇到了一些效能方面的問題。在我的經驗中,這時候需要處理如: query 的優化、table 切割 partition、刪除舊資料、調整 redis 的架構,或是撰寫測試兩個資料庫的效能等等的功能,這都是相當深奧的領域,更要花很多時間在閱讀相關文件!
另外,看 metrics 也是一種挑戰。例如,當大量客戶無法登入時,我必須透過 grafana 查看問題所在,這需要檢視整個架構。我接觸的部分主要涉及 AWS 的功能,但由於 AWS 功能繁多,我僅接觸到了一小部分,如 rds、elb、cloudwatch、elasticache 等,還有每個 nginx 設定接收多少個 request、資料庫多少 pool 與 worker 等。我認為 metrics 是最難且最需要豐富經驗的(汗),而我也持續不斷學習中。
持續點滿技能
在這兩年的轉職旅程中,我經歷了從菜鳥到面對龐大業務挑戰的成長過程。這段時間,我學會了如何思考、設計並寫出更好的程式碼,每一行程式的背後都是我成長的腳步。
這段轉職之旅開啟了我全新職涯大門,也讓我更加瞭解軟體開發領域的無窮可能。感謝這兩年的奮鬥,讓我在每個挑戰中都找到成長的機會。未來,我將繼續保持學習的態度,迎接更多的專業挑戰。
謝謝收看我轉職成為 Rails 工程師兩年的心得,如果你對於轉職也有些期待或想法,你也可以報名 ASTRO Camp 的說明會,相信在說明會的討論和分享,一定能幫你的職涯找到更多方向!