Loading...

全世界吹起一陣寫程式的風潮,鼓吹年輕人不管所學為何,一定要學寫程式。三不五時就會看到「軟體工程師是最有錢途的工作之一!」

相對之下,許多人認為自己目前工作很糟糕,包括老闆高壓統治、工作內容乏味、薪水僅能糊口等等,看到文章裡頭那些「高薪」、「出國工作」、「熱門職缺」的字眼,是否突然發現職場上的一塊淨土?筆者自己是轉職工程師,身旁也有許多同樣的人,工作一段時間以後,將一些心得整理一下,給那些想著要轉職的朋友一些建議。

轉職軟體工程師,3 分鐘小測驗,找到你的全新職涯起點

第一件事,工程師都在做什麼?

首先,工程師的領域有許多種,舉凡手機軟體、網站、資料庫維護、伺服器、大數據等等,每一個領域都是一門專業,不光只是我們平常看到「Google 工程師」、「Apple 工程師」那樣簡單的分類法。

端工程師

產品開發

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

產品需求討論與釐清

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

想瞭解更多前端工程師的日常,可再看看這篇文章:前端工程師要會什麼?工作上會遇到什麼挑戰

端工程師

由於後端工程師要確保後台、伺服器能正常運作,正確提供資料。所以後端工程師要處理資料、建置系統、維護平台。具體任務像是:

  • 定義資料串接的格式
  • 確認資料庫是否能夠滿足本次需求
  • 設計能滿足需求的演算法

參考 AC 學長、在「毛孩市集」擔任後端工程師的 Howard 的工作日常,他一週的工作內容比例分配,會像是下面這樣:

  • 50% - 60% 功能開發、測試、優化
  • 40% 需求確認及修改
  • 5% - 10% 除錯。

所以,當各大媒體都在鼓吹轉職成工程師的時候,大部分談的都是「軟體工程師」(software engineer),最主要還是因為「軟體」是我們日常生活最常接觸到的,包括桌機軟體、手機軟體、網站,都是這幾年如火如荼在發展的項目。

以下文章提到的工程師,指的皆是軟體工程師。

轉職工程師要學到什麼程度?該選什麼程式語言?7個案例校長一次解析!

所以工程師到底都在做什麼?就工作來說,不超脫以下五件事情:

  • 跟其他工程師討論
  • 撰寫程式
  • 除錯
  • 跟使用者溝通
  • 被老闆罵
  • 對火候不夠的新手來說,「除錯」(debug)這個步驟會佔掉絕大部分的時間,而且過程是非常無聊且漫長的。找一位工程師問他處理過最愚蠢的錯誤,一定回答是「為了找一個錯字耗了一整天」,聽起來有沒有很浪費時間?沒錯,就是這麼浪費時間!甚至,各種錯誤都是「屋漏偏逢連夜雨」,每當你最需要專心做其他事的時候,錯誤就出現了,然後手邊原本規劃要做的事情就延宕了,進度來不及,最後就被老闆罵。這絕對是新手工程師的常態。

    當然,在這些錯誤當中,我們去學著如何寫出更好的程式,避開那些給自己埋下的地雷,減少錯誤發生的機率。隨著時間演進,我們就鮮少再犯愚蠢的錯誤。

    但難道高手就不用除錯嗎?很遺憾,資深的工程師不只要處理自己的錯誤,還要處理別人的錯誤,越資深遇到的問題越棘手。相信大家都知道不少企業會捧著大筆鈔票去找資深工程師,而這之中除了要寫新軟體以外,許多職缺都是要請人來擦屁股的。就像創業家面對各種經濟、心理、社會的壓力一樣,工程師就是在面對各種程式上的問題,有可能是針對複雜程式當中產生的一個 bug,也可能是公司服務採用的技術發生了問題。

    因此,在工程師生活中,其中一大要務就是要解決問題。如果每天都在面對這些情況,自己是否還能樂在其中?

    新手工程師,如何提升程式碼品質?

    第二件事,媒體宣揚的好處不過是種迷思

    工程師薪水超高?

    行行出狀元,所有領域都有辦法賺取高薪,但對工程師來說,情況比較符合「80/20法則」,就像許多人說的:「工程師餓不死,但也存不了什麼錢。」不管是能力普通、只會聽命行事的工程師,或是遇人不淑、老闆吝嗇的工程師,大概都無法取得高薪。

    若是轉職的工程師,剛開始必然無法期待有超高的薪水,不像資工本科系的學生許多有底子、有作品, 找工作較為容易。要談高薪,還是得拿實力來談,若是無法針對中型的軟體專案設計出良好的架構、或是對自己擅長的技術還不完全了解,那對於薪水還是不要有太高的期待,而這些都是需要經驗累積的。

    軟體工程師薪水市場行情是?2022 台灣網路 IT 業薪資大公開

    工程師一定能出國工作?

    許多媒體有提到,程式語言是全球通用的技能,因此要找到國外的工作相對容易。但在台灣土生土長,要實際跟全世界接軌以後,才會知道難度不低。尤其是簽證問題就可以搞死人,例如美國很有名的 H1B (美國工作簽證),必須是先得到對方公司的錄取,再進行抽籤,中籤的機率是33%左右,也就是說你千辛萬苦得到工作,很有可能因為抽籤沒過就必須延後一年。其他國家例如澳洲和歐洲則是有薪水的限制,必須以超過當地薪資的水準進行錄用,才能申請工作簽證。

    其實說穿了,除了運氣、市場需求之外,就是要看自己是否有能力解決一家公司的軟體問題,讓老闆覺得是一位有價值的員工。簡單來說,因為相較於其他工作產業來說,軟體工程師的確比較容易找到國外工作,但其門檻卻不如媒體形容的那樣低。

    海外工作攻略:沒留學過的台灣人,如何找到英國軟體工程師工作?

    另外補充,目前在德國、英國、澳洲都還是新創事業非常蓬勃的階段,對軟體人才的需求較多,如果未來有累積到一定實力,建議可再參考,例如先前擔任 Rails 資深工程師的 Manic 有分享自己到澳洲找工作的經歷。

    曾是工地主任的他 現在在澳洲擔任工程師!

    第三件事,你對寫程式真的有愛嗎?

    對於熱情這件事,不得不再次提到「80/20法則」,因為有80%的熱門技術是由20%的人所架構出來。不管你未來所鑽研的是哪種技術,總會在領域中有一些「神人」,他們可以1個人就超越10個工程師的產值,對該技術有非常完整且深奧的了解,並且針對難懂的問題有非常優雅的解法。這些人決定了未來技術的走向,例如目前市面上的大型商業軟體,許多都是由少數人將架構完成,後續才是由許多工程師進行維護、更新。

    你想成為那些「神人」嗎?雖然許多工程師做了一輩子也沒辦法,但仍然要保有那「想要成為神人」的熱情,才能得到擔任工程師的快樂。在生活中工程師不只會遇到系統錯誤,更常會遇到使用者給予的意見,包括常在 Google Play 或 App Store 上看到的評論:「這軟體超爛」、「一分都嫌太高」等等,沒有重點卻嚴重打擊士氣,也是生活中的一部分。

    反之,尤其在大型專案上線,陸續收到使用者說回饋說:「使用上變得更方便了,謝謝你們!」這類溫馨的評論讓人非常有成就感。抑或是在鑽研特別技術,而成功讓專案有大幅成長的時候,也是工作上很大的滿足。

    當我們只想著要每天安安穩穩的寫程式、維護專案,以上那些情況就絕對不會發生,我們整天只會自怨自艾,對現況感到不滿卻不改善,把所有的錯都推給使用者、推給主管、推給別人。那不如連轉職都不用談了,不妨待在自己目前的位子上,好好過生活即可。一定要充滿熱情,想要成為「80/20法則」中的領導者,跳進工程師這個圈子才有意義。

    成為軟體工程師,免費申請 5 天試讀,瞭解自己適不適合

    小結

    本文以一個過來人的身分,為那些思考是否要轉職的朋友提供一些想法,當然工程師領域的心得,要講是可以花上三天兩夜還講不完的,各位不妨可以到「靠北工程師」 看一下各位水深火熱當中的工程師有哪些「趣事」分享。但最大的重點,仍然在於你要對自己做的事情有熱情、想要不斷學習、發掘新知、研究新技術,否則轉職一點意義都沒有,如果想安穩過生活,不如就找一個無聊的工作,專心研究股市吧,這樣的生活品質會比工程師好多了!

    Photo Credit: kaboompics