要具備怎樣的特質
我覺得最重要的特質是以下三點:
- 學習: 這邊的學習除了指學習新事物的效率之外,還要可以享受這樣有學不完的新知識。軟體業是變化快速的行業,新的技術會不斷出來,要能夠適應這樣的快速變化,而且有辦法快速 pick up 新知識。在很多軟體公司,工程師們也都會自發地籌辦讀書會,來交流與學習新的技術。如果你很嚮往能夠一直學習,那工程師或許是一條不錯的路。
- 溝通: 這可能是最多人會沒想到的一點。普遍大家不會特別覺得一位工程師要很會溝通,或甚至覺得工程師都宅宅的,好像不擅與人交流,但其實工程師必須要有好的溝通能力才能發揮更大的影響力。一位工程師的力量有限,要開發一個大型的專案是需要多位工程師,還有 PM (Project Manager) 與 Designer 一起合作。這時候溝通能力就非常重要了,如果沒有辦法有效地傳遞資訊,就會影響到開發的速度,甚至導致組員或組與組之間的摩擦。關於溝通的故事可以在另一篇文章與大家分享。
- 邏輯: 其實程式本身就是由一堆邏輯所組成,因此邏輯對於工程師來說特別重要。不只影響到自己開發的速度,也會影響到分析與解決問題的能力。比如說今天程式出 bug 了,能不能有方法地去找到問題在哪裡,逐一排除每個可能性。
要怎麼知道有沒有興趣
這邊提供大家幾個方式去探索自己有沒有興趣:
- 線上教學: 蠻推薦大家可以去網路上找學習 coding 的資源來試試看,有很多不用錢的平台,在上面試著寫寫看程式,可以挑選自己有興趣的主題或者程式語言去學習。初學者建議大家可以挑 Python 來熟悉基本的程式設計概念。推一個我自己用過的教學平台 Codecademy,裡面用遊戲化闖關的方式來帶大家學習。
- 上課: 如果你還是學生的話,快去看看你們學校有沒有程式設計相關的課程。已經畢業了或學校沒有開課的話也沒關係,現在市面上也有很多實體課程可以上。適合自制力比較不夠,線上課程永遠看不完的朋友們。這邊特別推薦大家可以去報名 App Work School 的課程,它們是免費的課程,因此對於學員的篩選十分嚴格,相對地教學品質也非常良好,還有就業媒合的服務! (這不是業配,但聽到身邊朋友有太多好評了)
- 找實習: 如果你已經有一些程式基礎的話,就直接去找實習機會吧! 可以實際體驗工程師的日常工作,也可以與工程師們合作交流。這應該是最直接可以探索的方式了。不過要注意的是,大部分的公司並不會給實習生真的很重要的工作,也因此對實習生的包容度也比較高,所以體感上壓力也會比起正職小很多。
- 找工程師聊天: 要認識一個行業,除了自己下去做之外,就是直接去找那個行業的人聊聊。了解他們日常工作都在做什麼,看看他們會遇到怎麼樣的困難與挑戰。已經在這個行業的人也可以給你一些很實際的建議 (像是我現在正在做的事),或者幫助你找到資源或甚至找到工作。如果有認識的工程師朋友,立馬去聯絡吧!
常見領域
不是所有會寫程式的軟體工程師,他們的技能樹都相同,即便都身為工程師,還是有不同的領域可以發展。以下我介紹幾個比較常見的工程師領域:
- 前端: 負責 UI 的開發工作,從基本的排版 (比如說哪個按鈕放在哪) 到處理與後端資料傳輸的邏輯。通常會與 designer 配合,designer 負責設計出頁面,前端工程師負責把頁面寫出來,並實踐上面的功能。前端又會分成網頁前端與 App 前端工程師,這兩者所用的語言跟技術不太相同,所以可以想成是不同職業。網頁前端語言: JavaScript, CSS, HTML;App 前端語言:Java (Android), Swift (IOS)。
- 後端: 負責伺服器端的應用程式或服務邏輯,還有與資料庫溝通的邏輯。後端所負責的內容可能比較不好理解一些,這邊稍微舉一些例子。比如說我要在 Instagram 上發了一篇文,我先打了一些字加了 hash tag,預覽一下我的文章,到目前為止都是前端的工作。當我按下送出後,接下來文章要被儲存到後台的資料庫,並散布到其他人的動態牆上,這部份的邏輯就會是後端要處理的了。後端就比較沒有網頁與 App 之分,因為寫的程式都是在伺服器上運行。幾乎所有語言都可以寫後端,比較常見的語言有Java, Python, JavaScript 等。
- 資料: 負責資料庫的架構,建構自動化的資料 pipeline,處理大數據或運用雲端運算等。網路發達的同時製造了大量的數據資料,這時候就需要資料工程師來設計資料庫,與運用大數據的工具來管理資料。
- AI: 這類型的工程師也算是這幾年才崛起,不過相對地入行的門檻較高,需要去理解 AI 的技術與模型或甚至要有自己的研究成果。講 AI 工程師可能有點籠統,具體一點是 Machine Learning Engineer 或 Researcher。前者主要著重在將 AI 模型落地開發為產品或開發建構 AI 模型需要使用的工具,後者則是做 AI 相關的研究,研發新的模型架構與演算法。目前訓練 AI 模型所使用的語言主要是 Python。
迷思破除
來破解一下幾個大家常見對於工程師的迷思:
- 很好賺: 其實如果大家認真去看一下求職網站就會發現,月薪不到 5 萬的工程師職缺比比皆是。不過以整個行業平均薪資來看確實相較很多其他行業來得高一些,工程師要能夠賺得很多還是得要看實力有多少。如果願意充實自己,持續學習,那相信工程師這個職業的錢途還是很不錯的!
- 軟體公司福利好: 大家好像會覺得工程師的福利都不錯,不用打卡可以睡到飽,辦公室都有零食,還可以在家工作,又有比起勞基法更多的年假。這不完全正確! 外商公司或一些新創公司的福利確實很不錯,但一些本土企業不見得會給出這樣好的福利,有些甚至上面我列的一點都沒有。另外,許多軟體公司採責任制,雖然不用打卡,但可能加班會沒有加班費。如果很在意公司福利的話,在挑選公司時還是要多留意。
- 很穩定: 工程師的工作環境是相對單純,但不代表工作本身很穩定。正如前文所說,工程師需要不斷地學習成長,才能適應新的技術與科技。軟體業的變動也是很大,又尤其是外商公司裁員不手軟。因此如果追求的是穩定的鐵飯碗,工程師可能不如你想像的那樣,只要拿到工作機會就可以躺平享受生活了。必須能夠持續精進自己才會有穩定的工作與更好的待遇。
結語
最後想說的是,成為一個工程師,你其實是有能力透過程式去創造各種不同的產品。比如說當你看不順眼目前存在的記帳軟體,你大可以自己寫一個。這樣充滿無限可能的創造力,還同時可以讓程式結合你的興趣,或許是成為一位工程師最大的價值吧!
如果對於工程師或職涯發展還有什麼有興趣的話題,歡迎留言與我交流!