身為一個前(後)端工程師需要具備什麼樣的特質?

Kevin Hu
Oct 30, 2020

資訊產業, 這個產業主要是以網路服務舉凡網站, app 為主. 有以接案為主的公司(幫人架設官網, 活動網站..etc.), 有做自己產品的公司(ex: facebook, instagram 做自己的服務..etc.) 而這個產業中充滿工作機會與大量湧入人潮的工程師, 就是我們今天要聊的. 今天主要針對做自己產品的公司裡面的各種工程師(前端, 後端, devops, data 相關..etc.)來聊聊, 對於這樣的工程師需要具備什麼樣的特質呢? 我歸納出以下幾點.

  1. 持續主動學習的心
  2. 自己主動去尋找並解決問題答案的能力
  3. 快速的應變能力

且聽我娓娓道來, 這樣的工程師跟一般行業有什麼不同呢? 你可能會聽到大家說 “這個產業需要有一顆持續主動學習的心“ 然後心裡想說, 哪個行業不用? 沒錯, 這行確實就是特別需要! 沒有做到老學到老的覺悟, 可千萬不要輕易嘗試轉行過來.

為什麼會這麼說呢? 你可能會常常聽到有的行業做了 3.5 年變資深了成了主管, 因為他在工作上累積了夠多的經驗, 然而工程師卻不一定是這樣. 因為這個技術的東西變化實在太快, 別說 3, 5 年了, 1, 2 年可能就把過去你熟悉的東西淘汰掉了, 你如果不學習新的事物, 那你就只能找到或停留在技術停滯的公司, 而不願意在開發單位上進步與投入成本的公司通常也拿不到什麼好薪資. 於是, 這行業就有了一些做了 3, 5 年卻只在自己熟悉的事物上停滯的工程師, 他們在重視工程師的公司技術面試下很難過關.

既然一直都需要學習, 那到底是什麼時候學習呢? 你一定要知道”ㄧ份工作是請人來解決問題的, 不是來學習的.” 千萬不要抱著一顆來學習的心態找工作, 即使你是 junior, 即使公司願意用你跟你說來這邊我們有資深的同事能讓你學習, 你也要想著我要能快速上手提供戰力! 程式的世界太大太廣, 一個人很難什麼都接觸過, 換了一間公司他所需要的技能與 know how 可能都不同, 你必須要抱著一種”雖然我沒接觸過, 但我有信心在短時間內快速上手”的心態. 而這也是資深工程師所具備的能力之一. 有點像是絕世武功有千百種, 但當你的內功提升到一定程度時, 就能越快習的一項新的武功.

再來接著說, 有些工作他每天要做的事情就是固定的事情, 以我自身過去在星巴克打工的例子來說, 當你摸熟透每個環節後, 精進的方式可能像是更精準的抓物料, 更快速的關店流程, 面對短時間大量湧入的客人們如何兼顧快速又能讓他們滿意地得到飲料..等等. 精進這些日常的 routine. 那麼工程師呢? 資訊產業裡的工程師的日常其實並沒有什麼 routine , 每天主要的工作內容是開發功能與 debug (解決程式上的各種問題). 每天遇到的問題可能都不一樣.

一下說東西變化很快, 一下又需要解決各種程式問題, 那究竟怎麼解決呢? 答案就是”google”, 換句話說就是尋找並解決問題答案的能力. 寫程式是一種不同的程式碼都能達到一樣的成果的事情, 每個人寫出來都不一樣, 只有討論出來的最好, 沒有標準. 在這當中時常常會遇到各種未知的問題, 需要去抽絲剝繭確認真正問題的所在並解決他. 再強調一次這個能力就是”自己主動去尋找並解決問題答案的能力”, 這是要當一個工程師完全無法缺少的一個能力. 而這也是為什麼每當出問題問工程師發生什麼事時, 工程師總是會傾向保守的回答直到確認問題. 常常出現“可能” “好像” “應該” 等等措辭 (而這樣的行為反應與老闆對話回答時常常讓老闆覺得頭痛). 因為沒有標準答案, 累積足夠的經驗過去經驗法則不一定能讓你馬上面對求救的同事說”這個就是哪裡的問題”, 不過確實能夠更快速的幫助我們找出問題真正的錯誤原因.

在資訊產業程式的領域中跟其他世界不太一樣, 所有東西都是透明的. 基本上你想得到的 best practice 都在網路上找得到. 想要轉職當工程師? 可以, 網路上有滿滿的資源等著你學習. 程式究竟怎麼寫才是最好? 直接與厲害的同事們一同討論或者參考外面的大神都怎麼做的吧! 程式的世界中有個東西叫做”開源”, 厲害的人們會樂於分享他們所寫出來的任何東西, 而每個東西都有其解決的事情. 這個概念有點像是各個三星米其林的大廚都樂於赤裸裸的分享他是怎麼去準備食材烹飪這道菜的概念. 你可能會覺得那不是什麼都可以抄襲了嗎? 沒錯, 就是這麼容易. 你寫的東西只有一種東西不會被大家知道, 就是商業邏輯的秘密. (想像一下能做到 foodpanda 外送服務的公司應有盡有, 但她究竟怎麼去設計她的叫車邏輯, 業務邏輯, 他的 business model 每間公司都不一樣.), 所以請不要吝嗇的分享你的程式碼, 你的邏輯思維, 更不要吝嗇地去討論去改善程式碼.

至於為什麼說需要快速的應變能力呢? 對應客戶不也需要快速地應對能力? 寫程式跟對應客戶很不一樣的是, 你面對的是電腦, 一個由邏輯組成的世界, 沒有任何妥協. 不論是在開發過程中還是突然發現 bug(程式邏輯上的錯誤), 我們都得快速的反應與持續改進. 想想客戶出問題時你們可能可以互相妥協說服客戶找到最好的合作解決方式, 但程式出問題時, 電腦是不會給你任何機會與轉圜餘地的(電腦是個只有邏輯的世界, 電腦就是看不懂才會報 error 啊), 不能時常處在”怎麼可能”, “明明就沒問題” 的狀態, 必須要快速轉換調適心情解決問題.

綜合上勉所述的種種, 為了找出所謂資深的工程師, 技術環節的面試就尤其重要! 不論你的學經歷多漂亮, 如果你沒辦法讓面試官覺得你的技術能力有到達期標準, 你很難拿到這份 offer (大多時候, 學經歷基本上只是讓你過了人資這關的條件). 為了確認團隊成員都有一定的 common sense, 常常一個面試需要先電訪 (電訪時就開問) 有些需要先做作業, 甚至到了現場還需要 2.3 個小時來做技術面試而這個時間可能都還不夠.

“當考到他知道的東西時, 我們想知道他到底是不是真的了解, 並且有能力實作出來.”

“當考到他不知道的東西時, 我們想知道他有沒有辦法與我們產生良好的溝通討論與互動, 正向的嘗試去解決它.”

反過來想, 如果一間公司的面試很隨意很輕鬆就希望你立刻去上班, 要馬不是你是個大神你夠厲害公開呈現的資訊(過去戰績, 軟硬實力)已經足夠讓人信賴, 要馬就是他們只是需要有個人進來補這個螺絲釘.

我想看到這有些人應該還是會覺得我講的很抽象, 畢竟隔行如隔山, 但一個資深的工程師他能做到的可能並不一定是更快速的開發出一個產品, 而是做出一個更完整更不容易出問題更能擴展架構的產品. 一個資深的工程師在了解全貌前不會輕易的說“這個簡單我只需要一個禮拜”, 更不會輕易的說”不會”, “做不到”.

就我個人過去面試人的經驗看下來, 大小公司, 主管階級的, 自己創業的人都面試過. 我只能說, 即使是頂著漂亮的學經歷的知名公司主管, 沒有持續在進步的人真的不少, 這一行很現實的就是 “有能力的人喊價”. 高端的工作真的很缺, 而每間公司願意給這樣的人的薪資上下限都不一樣. 今天並沒有要去探討一個工程師應該有什麼樣的能力, 因為個人這麼多場面試看下來, 常常我們會覺得能力是必備是一回事, 然而真的在面臨抉擇時, 又覺得特質更為重要. 這也是為什麼一間公司有著好的文化如此重要. 大家能夠知道最後最重要的原則是什麼.

“持續保持好的人格特質能夠帶你走得更遠”

最後來講講在這樣的產業中當一個工程師有什麼好處吧!

  1. 薪水 (能力決定薪水, 即使是 junior 的職缺, 對一些產業來說可能都比較高了)
  2. 不受空間限制 (無論到哪個國家哪間公司, 都需要一樣的技能, WFH 正夯)
  3. 工作機會, 接案機會多 (不管什麼產業什麼領域, 都會需要一個網站一個 app)
  4. 生態圈 (所有東西都在網路上, 可以看到各種免費資源, 技術討論, 社群以及技術文章. 就看你自己的自律與熱誠程度)

在進入這個圈子之前, 或者在這個圈子之中, 可以試著多關注並長期觀察自身的領域. 轉職工程師的現象持續很久了(尤其是前端), 外面的課程動輒 10 幾萬, 然而成功轉職的人個人估計頂多 10, 20% 實在是很辛苦. 希望今天大家在看完這篇文章後, 能先有一個心態上的認識, 希望這篇文章有幫助到大家!

--

--

Kevin Hu

— — Frontend Developer —— my personal website: https://sky790312-v2.web.app — — — — — — — — — — — my consultation site: https://f2e-camp.web.app/