Loading...

軟體工程師的真實生活

「軟體工程師真的要懂這麼多嗎?」技術面試、白板題、還有行為面試等等,為什麼會有這麼多關卡?軟體工程師到底在做什麼?ALPHA Camp的校長Bernard在這篇文章會帶你了解,軟體工程師面試背後代表的專業要求,以及要如何建立業界軟體工程師的專業素養。

我們除了事先預演過面試的問題、準備好答案之外,更重要的,就是要知道「為什麼」雇主會提出這些問題,以及面試內容與軟體工程師實際工作內容之間的關聯又是什麼。

讓我們來聽聽 Mike 學長分享他在外商軟體公司當「前端工程師」的生活:

延伸閱讀:商院出身跨出舒適圈,他花9個月線上自學,成功轉職網頁開發工程師

雖然這是位前端工程師的分享,但其實後端、全端、甚至 iOS 工程師的工作職責並沒有很大的不同。在延伸閱讀,你可以參考幾個國外的例子。我們找的都屬於帶有新創風格的公司:

先來總結一下 Mike 分享的工作內容與所佔時間:

而這三大類工作內容,也可以分成以下的細項:

產品需求討論、釐清

  • 跨部門溝通、釐清需求以及討論技術上的可行性
  • 定義開發策略與優先順序

產品開發

  • 跟主管、工程團隊討論規格與技術可行的實作方式
  • 寫程式
  • 透過討論、翻查技術文件、自我研究去解決各種技術困難
  • 測試與抓蟲 (debug)
  • 撰寫文件

個人學習、成長

  • 個人職涯與工作規劃、討論
  • 讀書會 (study group) -- 學習新技術與其他領域(後端、資料科學)的知識

不同項目所需的能力與人格特質有所不同,因此雇主便會設計多樣的面試方式與考題,驗證面試者在各方面的表現。

想轉職軟體工程師?找工作前你需要這份「求職清單」這篇文章裡,我們提過當工程師的必備能力有:

接下來,我們會針對工程師的每一項工作內容,分析所需要的技能與人格特質,列出對應的面試題目,並提供你練習方式。

讓 ALPHA Camp 成為你的科技職涯加速器

從技能、面試、到該如何準備

ALPHA Camp 和業界緊密的聯繫,了解實務界對工程師技能和工作方式有哪些要求。因此我們透過工程師的工作日常切入,分析雇主期待具有專業素養的工程師,應該具備哪些能力與特質,並從中給予你該如何準備,讓你能在面試中呈現自己具備這些條件的練習方法。

工程師的日常1:跨部門與技術討論-釐清需求,定義規格與實作方向

要具備技能
與人格特質

溝通能力:聆聽力、勇於表達想法、主動參與討論

勇於面對新挑戰、陌生任務的態度

解決問題 (problem solving):有清晰的思維與邏輯,能拆解問題,一步步尋找可行的解決方案

面試方式 面對面口試:自我介紹、個人專案討論、白板題

在工程師面試的情境中,除了某些技術問題之外,大部分的問題其實並沒有標準答案。面試官提出問題的最主要目的,是去認識你的能力、思考模式、以及人格特質。

要在面試中呈現你能勝任跨部門討論與技術討論,你可以用下面這些方式準備與練習

口試練習:

  • 撰寫並練習一個清楚、流暢的「自我介紹」,讓面試官能在短時間認識你
  • 在每一份作業或專案之後,透過文字或影片,練習介紹專案內容、遇到的技術困難,並如何解決
  • 跟同學一起練習白板題,練習如何作有效的討論,包括聆聽題目、拆解問題、表達想法

專案實作:打造個人專案,挑戰課程教材以外的技術

工程師的日常2:開發產品-寫程式、團隊協作、解決技術問題

要具備技能
與人格特質
技術力:
  • 熟悉語法工具,有一定的開發速度
  • 瞭解程式碼該有的架構,能寫出結構清楚、容易維護的程式碼
  • 對資料結構、軟體框架與設計模型有正確的概念並嚴謹遵守
  • 注重細節與測試,能有效率地 debug

技術溝通與尋找答案:能清楚提問,能跟資深工程師討論技術概念,並擅於查找及應用線上資源

團隊協作的專業素養:每一份專案有清楚的版本控制以及技術文件

面試方式 線上技術測驗

任務測試:在有限時間內完成一個技術任務/作品

面對面口試:技術概念、情境題、白板題、個人專案討論

例如,面試官會刻意問一些他明知你不會的演算法,或沒碰過的技術工具。對方並不是真正要難倒你,而是要看看你會以什麼態度面對你沒有遇過的難題,以及你拆解問題時所展現的思維。因為,一位工程師的工作日常,大多都是在解決從沒遇過的問題

要具有團隊協作開發產品,解決技術問題的能力,你可以用下面這些方法來養成

1. 練習線上程式測驗(如 HackerRank),針對網路上找到的技術考題作練習(AC 有提供),並定期複習基礎概念與使用情境,建立紮實基礎

2. 研究資工觀念,如演算法、時間跟空間複雜度等,並練習打造小程式

3. 口試與文字練習:透過跟同學模擬面試及撰寫學習筆記與技術文章等文字產出練習,深化對程式語言、開發概念的認知,並加強針對技術觀念的溝通技巧

4. 專案實作:

  • 打造小專案,要求自己在有限時間內完成
  • 思考該如何測試自己寫的程式碼,不斷地重構優化
  • 找有技術背景的朋友/同學幫忙 code review

延伸閱讀:工程師面試QA,該準備的問題與答案

想成為業界接軌的軟體工程師,如何準備

若你想要成為具有專業素養的工程師,但是還沒有建立相應的技能,你需要有和業界接軌的專業訓練。ALPHA Camp 的課程就是設計來幫助學生,完整有系統地養成工程師必備的能力。其中就包含了:

  1. 大量的動手實作:要真正掌握一個新技能,唯一的方法就是大量實作練習。AC課程中我們安排了一定數量的個人與團體練習機會,但你也必須試著自己尋找課外練習方向,不能止步於教材提供的題目。而在八週課程的尾聲,我們都會舉辦期末黑客松,讓同學們體驗「接到需求-->在時限內跟隊友腦力激盪-->完成功能開發」的過程。
  2. 反覆的刻意練習:我們會持續挑戰你在「速度」、「細膩度」的表現。作為新手,很難立刻就掌握所有技能,但你必須要求自己:一定要十足把握自己能迅速精準地完成已經學會的事物。
  3. 說明專案內容與過程:在完成每個稍有規模的專案後,我們會要求你錄製一小段影片或是撰寫部落格,解釋你的專案過程、遇到的困難、做了哪些新嘗試,這麼做也能幫助別人認識你的作品!
  4. 專業素養:不論是個人專案或是團隊協作,都要養成撰寫說明文件的習慣。在小組協作專案中, ALPHA Camp 的技術顧問與助教們會審查你的技術文件與開發流程。技術文件包括 Git commit comments、 GitHub Readme 以及程式碼的組織架構和註解。
  5. 能力評估:期末時,我們會提供完整的技術測驗,幫助你了解自己對基礎能力的掌握是否到位、哪些部分需要努力。

在ALPHA Camp的軟體工程師養成課程中,我們會分為前端 (front-end) 與全端 (full-stack) 工程師兩條不同的專修路徑,以最接近業界實踐的課程,有效完成技能與求職準備。

若你還不知道該學些什麼技術,可以參考 ALPHA Camp 整理的 全端開發技能樹 23週軟體工程師養成攻略

除了技術內容,課程也包括軟體開發流程、專案管理等專業知識,更有模擬實際問題的團隊協作專案,學習工程師的工作模式與成功要訣。有系統地學習和練習,才能更有效率地養成軟體工程師的專業素養,成為與業界接軌的專業開發者。

三分鐘小測驗,找到你學程式轉職工程師的起點

成為企業渴求的程式人才!

在家學會 JavaScript 網路開發

全新「全端 Web App 開發」課程,給你看得見的學習成效!
超過 90% 轉職成功,400 位來自亞洲各國的 ALPHA Camp 校友,畢業後達成轉職、創業、出國工作的夢想!

3 分鐘選課指南

給期待創新改變的你

前端x後端x全端 完整工程師技能樹

90% 學生轉職成功,職涯競爭力更上層樓
最專業的「全端 Web App 開發」課程,上班族邊工作也能同時培養第二專長!

3 分鐘選課指南

學期一|程式設計入門

零基礎也學得會的程式入門課!

開始學帶得走的技能,為自己未來的成長鋪路

學期二|掌握網頁開發

系統化學習 JavaScript

實作打好前後端基礎,成為扎實的網頁開發者

學期三|軟體工程師養成

養成業界接軌的實戰能力

前端/全端工程師專修路徑,完成技能與求職準備,成為業界即戰力