-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Jia-Jun Yeh
committed
Nov 18, 2023
1 parent
079058a
commit b35578b
Showing
1 changed file
with
23 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
--- | ||
layout: post | ||
title: 今年撰寫的軟體工程師入職指南 | ||
categories: [dev] | ||
description: 提供給大家參考 | ||
--- | ||
|
||
身為一個軟體工程師,撰寫程式碼來實現功能只佔了工作的一小部分,除此之外您還會經歷軟體開發生命週期的每個階段。要順利在職涯持續成長,您更需要同時兼顧工程面的可行性和產品思維。請時時提醒自己:寫程式的目的是為了解決問題。 | ||
|
||
對於工作中可能出現的任務,這邊有幾點建議: | ||
|
||
- 分析需求:思考客戶需要的是什麼,而不是等待客戶說他想要的是什麼。和客戶討論如果怎麼做可以更好的滿足他,而不是僅止於他的想像。 | ||
- 軟體設計:相信你在職涯旅途將會碰到或已經碰到Design Pattern、SOLID原則、OOAD、軟體架構。請記住設計並不是一道是非題或選擇題,而是一道申論題。以客觀的角度提出至少三種可行的選項,並列舉其中每個選項的優缺點,最後才說明你認為哪個選項最好。 | ||
- 實作:這會是你最擅長的部分,不要忘了開發會伴隨測試和重構,當你忽略他們,未來都會以技術債的形式回來要求你加倍償還。 | ||
- 撰寫單元測試和整合測試:作為你自己程式碼的第一個用戶,如果連測試時你都覺得難以使用,或是需要大量的測試程式碼來進行各種前置準備,那程式品質是可想而知的。 | ||
- 你會和code reviewer共同討論這個變更是否能夠變得更好:系統設計、元件職責、可讀性、可測試性、程式碼風格一致性、後續影響、API易用度、git commit message...等等。code reviewer就是你的第一個程式碼閱讀者,如果他不能順暢的閱讀,那很有可能三個月後的你會不小心git blame到自己。 | ||
- 在這個階段有可能反覆進行以上的作業,直到你們都覺得這是一份品質良好的變更,才送交進程式碼庫。如果他已經成為一種討厭亟欲避免的步驟,請讓你的主管知道這個回饋。 | ||
- 實際使用:雖然你已經寫了單元測試,也可能具備整合測試和系統測試,在部署到staging後,至少使用幾次自己開發的功能。畢竟等到別人使用發生問題,那可是相當尷尬。另外也記得提供一些QA用的功能,例如登出、解除綁定、清除資料,並且設定只有在staging才能呼叫。QA測試時就可以自助式的反覆進行,而不用一直找你重置資料庫。 | ||
- 部署:建立和加快自動化流程永遠是你可以主動做的事,嘗試把所有檢查和構建都放進CI流程中,並讓整個回饋循環發生的越快越好。 | ||
- 錯誤處理:針對錯誤永遠多想一步。當你撰寫程式碼時,試著思考如果在這邊發生錯誤,我還需要印出哪些關鍵資訊來判斷問題成因。試著讓log裡面擁有5W1H資訊。 | ||
- 溝通:當你寫了一段很漂亮的程式碼、實現了一個很精妙的設計、學習了某個新技術,試著用文件、簡報、口頭分享的方式讓同事們理解。當你不清楚某個任務內容、優先順序,試著用問題、用你的話再說一次,來確認彼此的理解沒有落差。 | ||
|
||
作為一名軟體工程師,你的工作遠遠超出了單純的程式碼撰寫。從需求分析到設計、實作、測試、部署,再到最終的維護和溝通,每一步都是創造出高品質軟體的重要組成部分。在這個過程中,你不僅是技術的實踐者,更是問題解決者和創新的推動者。記住,持續學習和適應變化是這個行業不變的規則,而你的熱情和創造力將是你職業生涯中最強大的資產。 |