非本科系轉職工程師者,常擔心履歷缺乏亮眼經歷,難以獲得企業青睞,甚至進一步選擇一流公司。但真是如此嗎?
9 月 Coding+ 職涯探索活動,邀請全球最大 LGBTQ 交友平台 Grindr 的工程師 Wesley,分享他從硬體背景跨領域到自學軟體開發,加入世界級工程團隊的職涯之路,過程中又如何透過策略性求職,面試進一流軟體公司。
此外,Wesley 將根據一路上的自學心得與職場觀察,分享在工程師職涯不同階段,應培養哪些能力:
電機系畢業轉職軟體工程師,如何面試進一流公司
大學念電機系的 Wesley,在學時就確定自己畢業後不做硬體相關工作,因學校 APP 開發工讀機會,開啟他對軟體開發、Android 開發的興趣,自學轉職軟體工程師,最後與夥伴一起創業,共同創立 Blink,開發過商城系統、客製化 App 等。
相關工作經歷不足,如何面試時火力展示自己
後來 Wesley 離開 Blink,尋求其他工作機會。但剛轉職者在找工作時,常面臨一個痛點:缺乏相關或亮眼的工作經歷,以獲得面試官青睞。對此,Welsey 分享他的面試秘訣:
面試時使用客製化履歷,展現經歷、作品集、對公司的研究及想法,提升公司對自己的興趣!
以下節錄 Wesley 部分面試投影片作為範例:
- 事先對公司產品做研究,在面試時闡述自己如何幫到公司
Wesley 說明,當他接獲面試通知時,會事先打聽公司需求,和對方 HR 或 Headhunter 接洽,了解公司業務及該職位的工作內容。
他以面試「交易平台 App 開發工程師」為例,他會依照對方需求,去研究「如果要從零開始做一個交易平台 App 」 需要做哪些事、用什麼架構、如何確保平台的交易安全性等,在面試時使用自製投影片列舉並解釋。
這樣做的目的,主要是讓面試官知道自己很用心,還沒加入公司,就已經先研究公司的產品,幫公司想他進去後可以做什麼。
- 附上 Side Project,展現自己對軟體開發的興趣與積極度
Wesley 建議,在工作經驗還不足時,可以在履歷放 Side Project。用意是讓面試官了解,跟其他沒有工作經驗的人相比,自己更積極、願意在下班後持續學習。
例如,他曾經跟想轉職 UI Design 的朋友一起合作做 Side Project。當他向面試官介紹作品時,面試官想聽他講述的重點為:為什麼做?花了多少時間做?有多少人用?App 的 Crash Rate 又是多少?等問題。因此,當履歷有附 Side Project,要注意作品內容本身不是重點,而是要用數字說明作品的表現及影響力。
綜上所述,轉職者如果有夢寐以求的工作,想要在面試時凸顯自己,Wesley 建議去研究該公司的 Job Description,把他們需要的能力學起來,再寫到履歷上。透過事先對公司的調查研究,自製客製化履歷完整呈現想法,能有效展現自己的用心與積極度,更有機會打動面試官。
想順利轉職工程師,如何準備面試、評估職缺:工程師面試該準備的問題與答案
世界級工程團隊的用人標準與開發文化
最後,Wesley 進入 Grindr 擔任 Android 工程師。而跟一般公司相比,到底世界級工程團隊在選才、面試及開發文化,有哪些差異?Wesley 逐一分享:
選才標準
Wesley 指出,Grindr 每個部門都有自己的一套選才標準,會找有同樣氣質的人進來一起合作。加入工程團隊,會需要有以下特質及能力:
- 積極主動:擁有主動找問題並改善的能力。Wesley 說明,由於部門沒有 Standup Meeting,當沒有人交代你做事時,你是否能主動找事情做、找出程式效能或架構可以進一步改進之處。至於如何判斷一個人是否積極,Wesley 舉例,一個積極的人,當他遇到問題去 Stack Overflow 查解法時,會願意主動給解答者按讚,就是積極的一種展現。
- 擁有分享力及影響力:是否能對團隊產生正面影響。每個禮拜部門有 Meeting,會分享自己做了什麼、發現哪些更好的做法,對同儕、團隊或產品發揮哪些影響力,主管也會在這時觀察部門成員的分享狀況。Wesley 建議,分享力及影響力的培養,可以從一些方法做起,比如在 Stack Overflow 進行討論、互動或解答問題,在 Medium 撰寫技術部落格、做 Side Project 等。
- 良好的程式撰寫品質:寫程式的品質很重要,這部分只能靠練習跟累積。比如程式寫好放上去,同事發現寫錯,要再改一次,這就是品質減一。或是部門有做 CI/CD 系統,每次一個 push 就會去 build,而一次失敗的 push 就會占用二、三十分鐘 build 的時間,所以每次失敗都是有成本的,因此會需要有良好的程式撰寫品質。
技術面試流程
Wesley 簡單介紹 Grindr 的軟體工程師面試流程,主要分為初試一關,與複試三關。
演算法分別在初試及複試各有一關,考試方式很明確,就是把演算把寫出來,需要複習資料結構,如 Tree、List、Array、Graph 等。複試另外一關會考 System Design,這部分較抽象,比如會問說「如果要做停車場閘門,要怎麼做?」想練習類似的題目,Wesley 推薦可以去閱讀一本知名書籍 Cracking the Coding Interview。複試最後一關則是請面試者實作 Android 功能。
以數據為導向的團隊決策文化
Wesley 認為進入世界級工程團隊工作,與一般公司的最大差異在於「數據規模」,能夠憑藉大量數據去做數據導向的決策。他談到,過往所在的新創團隊,因使用者不多,只能憑感覺去開發覺得重要的功能。但在 Grindr 每天上線的用戶有 4、500 萬,大部分的功能在上線前,都可以做 A/B Testing 去測試成效,不會遇到 PM 覺得要做什麼,工程師就要直接去做的狀況。
但假設工程團隊真的遇到覺得不合理的需求,他們會採用以下方式,去說服需求方或規避後續風險:
- A/B Testing:若覺得需求不合理,會與對方達成共識,先用一半的使用者去測試功能,假設數據表現很差,就可以擋掉該需求。
- Feature 開關:所謂 Feature 開關,是指做一個一鍵開關 Feature 的設計,當從網頁上把某個功能改成 False 之後,所有人的 App 都不會出現該功能。因此當遇到不合理的需求,但又被強制要求要做,團隊就會把這個功能放進開關裡,假設之後出了問題,就可以直接關掉該功能。
從新手到成為資深工程師,不同職涯階段應培養的能力
從非本科系路自學轉職工程師、加入新創團隊,最後成為世界級 App 開發團隊工程師,一路上 Wesley 如何磨練技能?他將工程師職涯拆分為不同階段,分享各階段應培養哪些能力:
菜鳥工程師時期:成長遇到瓶頸時,透過面試直接上戰場學習
在菜鳥工程師時期,屬於純學習階段,可以將學習到的技能做成作品集,並準備能證明自己的履歷。但假設覺得自己學得差不多時,可以怎麼做?
Wesley 建議可以「透過面試,直接上戰場學習」。他分享當初自學時,把 Android 官網上的資料全學完後,陷入了成長瓶頸。結果去其他公司面試時,反而被面試官問得答不出來。他才知道,原來還有好多知識跟技能可以學習。因此他建議,可以先去看一流工作的 Job Description,往對方需求的方向進行學習。
另外他也建議,可以趁這個時期,開始做一些需要長期累積的事,比如寫 Medium 技術文、或 Stack Overflow 回答問題等。
Junior 工程師時期:熟練技能為主,平常可以練習刷題
成為 Junior 工程師後,這個時期的目標是熟練技能,把工作上分派到的任務做好。
當熟練技能後,平常可以開始培養習慣,練習刷簡單的題目,如果要去面試公司,再去找難的題目練習,另外也可以付費拿到一流公司最新的面試考題。
Junior ~ Senior 工程師過渡期:拿出硬實力,了解自己在工作中的影響力
在 Junior ~ Senior 工程師過渡期,如果覺得自己可以往下一個階段邁進,但調薪不如預期,想要一流的 Package,可能就需要換工作。
在這個階段的面試,就會需要拿出硬實力,不要再用投影片,而是直接說明自己在工作中所累積的經驗、技能與產生的影響力為何,能有數據佐證最好。
Senior 工程師時期:在特定領域擁有高度專業
一個好的 Senior 應該具備什麼特質?Wesley 以 Grindr 的標準說明,Senior 工程師需要在特定領域有高度專業,比如熟 CI/CD 流程、寫程式很快且品質又好等。
不同公司對於 Senior 工程師的認定標準會有差異,大公司對 Senior 工程師的要求,可能是:App 產品品質更好、穩定性變高、速度變快,或能夠弄新的架構,讓所有人開發速度都變快等技能。
工程主管:領域知識深且廣,能夠幫助其他同事
最後,當工程師晉升為工程主管,除了具備高度專業、擁有延伸領域知識外,更重要的是能將影響力擴及他人,幫助其他同事。
Wesley 以他部門主管為例,分享主管會做的事情有:幫團隊解掉存在已久的 Bug,或是導入新系統,以修正第三方 Library 的程式錯誤等。
結語
對於正準備轉職軟體工程師者,Wesley 的職涯發展歷程是一個良好的示範。非資工系畢業的他,透過自學轉職、在工作中累積經驗,並透過策略性求職,最後加入了世界級工程團隊。不僅如此,他對不同職涯階段,都擁有清楚的目標,才能促使他不斷學習成長,發揮更大的影響力。