軟體工程師的工作內容是什麼?真的要懂這麼多嗎?而薪水真的很高嗎?又從技術面試、白板題、還有行為面試,為什麼面試有那麼多關?想轉職軟體工程師,怎麼開始準備?本文從 AC 校友分享軟體工程師工作內容,薪水行情、帶你認識軟體工程師的工作樣貌;再從面試分析背後反應的專業與素養要求、拆解雇主為什麼這樣問,幫你建立開始準備的方向。
軟體工程師都在做什麼?
軟體工程師分成前端、後端與全端,任務大不相同。前端是使用者和電腦直接互動的地方,例如網站首頁。故前端工程師的任務,是打造吸引人、操作體驗順暢的介面。後端則是電腦處理資料,如後台、伺服器等地方。故後端工程師的任務,是要確保能正確提供資料。
前端工程師
在外商軟體公司當前端工程師的 AC 學長 Mike,分享他的工作日常主要有 3 大塊,依所花時間排序是:產品開發、產品需求討論與釐清、個人學習、成長。
產品開發
- 與主管、工程團隊討論規格與技術可行的實作方式
- 寫程式
- 透過討論、翻查技術文件、自我研究去解決各種技術困難
- 測試與抓蟲 (debug)
- 撰寫文件
產品需求討論與釐清
- 跨部門溝通、釐清需求以及討論技術上的可行性
- 定義開發策略與優先順序
個人學習、成長
- 個人職涯與工作規劃、討論
- 讀書會 (study group) — 學習新技術與其他領域(後端、資料科學)的知識
想瞭解更多前端工程師的日常,可再看看這篇文章:前端工程師要會什麼?工作上會遇到什麼挑戰。
後端工程師
由於後端工程師要確保後台、伺服器能正常運作,正確提供資料。所以後端工程師要處理資料、建置系統、維護平台。具體任務像是:
- 定義資料串接的格式
- 確認資料庫是否能夠滿足本次需求
- 設計能滿足需求的演算法
參考 AC 學長、在「毛孩市集」擔任後端工程師的 Howard 的工作日常,他一週的工作內容比例分配,會像是下面這樣:
- 50% – 60% 功能開發、測試、優化
- 40% 需求確認及修改
- 5% – 10% 除錯。
想瞭解更多後端工程師的日常,可再看看這篇文章,再更深入了解:如何成為後端工程師?後端工程師都在做什麼?
轉職軟體工程師,如何開始?
想要轉職成為具有專業素養的工程師,但是還沒有建立相應的技能?你需要能有效地和業界接軌的專業訓練。ALPHA Camp 的課程,就是設計來幫助學生,完整有系統地養成工程師必備的能力。課程內容與體驗包含:
大量的動手實作:
- 要真正掌握一個新技能,唯一的方法就是大量實作練習。AC課程中我們安排了一定數量的個人與團體練習機會,但你也必須試著自己尋找課外練習方向,不能止步於教材提供的題目。而在八週課程的尾聲,我們都會舉辦期末黑客松,讓同學們體驗「接到需求–>在時限內跟隊友腦力激盪–>完成功能開發」的過程。
反覆的刻意練習:
- 我們會持續挑戰你在「速度」、「細膩度」的表現。作為新手,很難立刻就掌握所有技能,但你必須要求自己:一定要十足把握自己能迅速精準地完成已經學會的事物。
說明專案內容與過程:
- 在完成每個稍有規模的專案後,我們會要求你錄製一小段影片或是撰寫部落格,解釋你的專案過程、遇到的困難、做了哪些新嘗試,這麼做也能幫助別人認識你的作品!
專業素養:
- 不論是個人專案或是團隊協作,都要養成撰寫說明文件的習慣。在小組協作專案中, ALPHA Camp 的技術顧問與助教們會審查你的技術文件與開發流程。技術文件包括 Git commit comments、 GitHub Readme 以及程式碼的組織架構和註解。
能力評估:
- 期末時,我們會提供完整的技術測驗,幫助你了解自己對基礎能力的掌握是否到位、哪些部分需要努力。
軟體工程師的工具、學習與技術精進資源
Stack Overflow:工程師程式技術問答網站(Stack Overflow 教學:找到程式問題的解答)
Github:版本控制工具 (Git與GitHub介紹,軟體版本控制基本教學)
Postman: API 測試工具 (API測試工具Postman 新手教學)
Docker: 開源平台讓你建立與測試部署應用程式 (Docker 是什麼?實戰手札帶你認識Docker)
Leetcode: 工程師面試題目網站 (Leetcode 是什麼?誰需要刷題?工程師面試要刷到什麼程度)
軟體工程師要會什麼?如何準備面試?
整合前面分享的前後端工程師的工作,這部分以求職者角度切入,幫你分析雇主會期待的工程師能力與特質;再整理在面試中可能會遇到的題目,提供你準備的方法、在面試中呈現自己是有所準備。
工程師的日常 1:跨部門與技術討論,釐清需求、定義規格與實作方向
要在面試中呈現你能勝任跨部門討論與技術討論,你可以用下面這些方式準備與練習
口試練習:
- 撰寫並練習一個清楚、流暢的「自我介紹」,讓面試官能在短時間認識你
- 在每一份作業或專案之後,透過文字或影片,練習介紹專案內容、遇到的技術困難,並如何解決
- 跟同學一起練習白板題,練習如何作有效的討論,包括聆聽題目、拆解問題、表達想法
專案實作:
- 打造個人專案,挑戰課程教材以外的技術
工程師的日常 2:開發產品-寫程式、團隊協作、解決技術問題
要具有團隊協作開發產品,解決技術問題的能力,你可以用下面這些方法來養成
練習線上程式測驗:(如 HackerRank)
- 針對網路上找到的技術考題作練習(AC 有提供),並定期複習基礎概念與使用情境,建立紮實基礎
研究資工觀念:
- 如演算法、時間跟空間複雜度等,並練習打造小程式
口試與文字練習:
- 透過跟同學模擬面試及撰寫學習筆記與技術文章等文字產出練習,深化對程式語言、開發概念的認知,並加強針對技術觀念的溝通技巧
專案實作:
- 打造小專案,要求自己在有限時間內完成
- 思考該如何測試自己寫的程式碼,不斷地重構優化
- 找有技術背景的朋友/同學幫忙 code review
好的軟體工程師要具備什麼條件
- 技術知識: 軟體工程師必須精通至少一種程式語言(如Java、Python、JavaScript等)以及相關的開發工具和框架。他們應該瞭解軟體開發的基本原則和最佳實踐。
- 問題解決能力: 軟體工程師應該擁有優秀的問題解決能力,能夠分析複雜的問題,提出有效的解決方案並實現它們。
- 編碼和程式設計技能: 他們需要良好的編碼和程式設計技能,包括撰寫可讀性高、效能良好的代碼。
- 算法和數據結構: 了解基本的算法和數據結構對於解決複雜的問題至關重要。
- 版本控制: 應該熟悉版本控制工具,如Git,以便有效地協作和管理代碼庫。
- 測試和調試: 優秀的軟體工程師會優先考慮測試和調試,確保代碼的品質和穩定性。
- 學習能力: 技術領域不斷變化,軟體工程師需要具備不斷學習的能力,跟上新技術和趨勢。
- 團隊合作: 在大多數情況下,軟體工程師需要與其他團隊成員協作,因此良好的團隊合作能力至關重要。
- 溝通技巧: 良好的溝通能力有助於將技術概念清晰地傳達給非技術人員,並與團隊成員進行有效的溝通。
- 專業精神: 應該具備對工作的專業態度,包括準時交付、尊重客戶和同事,以及保持高度的道德標準。
- 解決問題的熱情: 優秀的工程師通常具有解決難題的熱情和動力,並不斷尋求改進和優化。
- 專業發展: 不斷追求專業發展機會,例如參加研討會、課程和認證考試。
軟體工程師薪水多高?
而從市場面來看,軟體工程師是個在浪頭上的工作,薪資不但相對高、也具成長性。
從就業市場來看,目前對軟體工程師的人力需求高、供不應求。平均每個尋找軟體工程師工作的求職者,有 4.8 個工作機會。而從資歷與年薪中位數來看,初階軟體工程師為 120 萬,資深工程師為 160 萬,到開發主管或經理則高達 240 萬。
而在〈軟體工程師薪水多高?台灣網路 IT 業薪資行情〉這篇文章裡,則分析與說明各大求職網站的資料,帶你進一步一窺市場端倪與風向。
軟體工程師職缺
除了一般台灣常用的104以外,有不少網路科技新創相關的求職網站也有很多軟體工程師的職缺,這邊分享給大家包含像是Cake Resume、Yourator,或是Indeed等求職網站,能看到非常豐富多元的公司有在徵軟體工程師的機會,大家可以在自己有興趣的地方去搜尋職缺。
軟體工程師:前端工程師
軟體工程師:後端工程師
軟體工程師:全端工程師