Photo created by freepik
數位科技以驚人的成長速度改變了大家的生活習慣,包括已與大家密不可分的手機、筆電等 3C 產品,隨著後疫情時代的來臨,企業也紛紛開始進行數位轉型,像是 AI (人工智慧)、大數據等應用紛紛在各大產業普及,驅動了軟體產業對軟體工程師的需求提升。
也因為軟體工程師的薪資與自由的工作環境,掀起一波轉職熱潮,使得非本科系的程式新手對於工程師職位趨之若鶩。但是!你問過自己以下幾個問題嗎?
- 轉職前,你思考過自己是否適合當軟體工程師嗎?
- 軟體工程師的內容是什麼,你了解嗎?
- 想成為軟體工程師又該怎麼開始?
如果你也懷抱著轉職成工程師的夢,跟著五倍紅寶石課程團隊這篇文章,帶你認識軟體工程師的工作樣貌,在你成為工程師之前,可以怎麼準備的方向。
一、軟體工程師的種類
許多人仍然對於「軟體工程師」的職務感到陌生,其實他的工作主要為精通一個程式語言或以上,專門寫程式打造平台,包含修改、維護及安裝,且依據不同的工作內容又可以分成不同的類型。以下介紹四種類型的軟體工程師。
- 種類一:前端工程師 Front-end Developer
- 種類二:後端工程師 Back-end Developer
- 種類三:全端工程師 Full-stack Developer
- 種類四:開發維運工程師 DevOps Developer
二、工程師的核心能力與工作日常
1、前端工程師 Front-end Developer
主要職責是負責網站介面的呈現,任何瀏覽器開啟網頁時,所呈現的畫面皆為前端工程師所處理,因此工作不僅需要串接後端的 API 並同時處理網頁介面的 UI,建立出流暢的使用者介面,讓使用者與產品互動,增進使用者體驗,讓使用者可以快速找到自己需要的功能。
前端工程師需要的技能為:
- HTML
- CSS
- JavaScript
除了以上三個主要技術外,前端框架也是必備的技能,目前業界普遍在使用的前端框架為 Angular、React 和 Vue ,另外還需掌握 API 串接,RWD 響應式網頁、Git 版本控制等技能。在工作上必須和後端工程師溝通,修補前端與後端銜接的程式錯誤,想出可行的實作方法。
2、後端工程師 Back-end Developer
主要職責是負責伺服器端的程式碼,包含建立或維護資料庫、定義資料 API 串接的形式開發和程式碼邏輯處理。後端工程師需要專注於程式碼之串接且符合伺服器的穩定性及效能,開發出符合專案需求的應用功能。
然而,後端程式語言有許多種,不過每個後端程式語言皆有自己的特性與特色,雖然是統稱為後端工程師,但工程師所擅長的後端語言會因為公司開發的產品而不太相同。
後端常見的程式語言有:
- Python
- PHP
- Ruby
- Java
- C++
3、全端工程師 Full-stack Developer
顧名思義就是涉略前端與後端的開發者,稱之為全端工程師,大多會由單一領域延伸學習至全端。相較於單一領域,全端工程師的工作內容涵蓋面向更廣。
許多科技新創公司在創業初期由於資源及工作靈活度的考量,尋找能夠善用前後端技術及溝通能力,來提升產品開發效率的全端工程師,因為擁有跨領域的技術能力,所以新創企業喜愛雇用全端工程師。
在大企業中,前、後端在工作上經常存在著許多銜接與溝通上的問題,這便是全端工程師發揮其跨領域能力的舞台。
4、開發維運工程師 DevOps Developer
DevOps 是 Development 與 Operations 的縮寫,也就是開發者與維運人員的溝通角色。與前端、後端工程師相比,DevOps 工程師結合開發與營運維護,他們的工作上需要熟悉不同領域的環境建構與部署,以及熟悉各種雲服務的知識,並且不斷的優化,確保網頁正常營運,並建立自動化的伺服器管理流程,讓軟體服務營運更加有效率。
DevOps 工程師是為了應對越來越龐大的應用服務而設置的職務,許多中小企業並沒有招聘 DevOps 工程師,工作內容由後端工程師所負責,因此 DevOps 領域較難入門,也較難以培養。
DevOps 工程師需要的技能為:
- 掌握一項後端程式語言,例:JavaScript、Python、Ruby、Go
- 了解容器化技術,例:Docker
- 了解容器編排工具,例:Kubernetes
- 有建置 CI/CD pipeline 經驗,例:GitLab CI/CD、Jenkins、Argo CD
5、工程師日常
參考五倍紅寶石工程師團隊的工作日常,大致如下列內容:
每週會有專案會議,提出這週的執行方式,例如:這週有兩個功能要開發,又可以拆解成幾個小功能,在評估各個小功能需花費多少時間,再分配給參與專案的工程師。
而團隊也會每天搭配站立 (Stand up meeting) 會議來檢視進度,確保大家對於專案的共識是在同一個水平,讓問題都能得到適當的處理。
三、工程師的思維
軟體工程師除了要具備精實的技術能力外,若還想在職場上持續精進與成長,還需具備下列四大軟實力。
1、技術解決能力
「20 分鐘前,它還可以動的....」
這句話,相信是許多軟體工程師在開發時,心中曾浮現的 OS。Debug 能力往往是影響工程師是否能順利在時間內完成專案的重要因素。解決能力包含分析與判斷及擬定解決策略兩個要素。
(1) 分析與判斷
判斷問題的輕重緩急,例如:工程師在解決問題時,有時候會陷入思考的漩渦中,依照問題的複雜度,所花費的時間也不同,快一點找到癥結點也許能在一、二小時內解決,久一點甚至會卡關一、兩天。
當工程師在解決問題時,也要有意識的察覺自己目前正在解決的方向,是否真的有解決根本問題嗎?當發現自己在原地卡關太久,要不要找尋求救與其他工程師技術交流?在開發的時程上,是否還有可以繼續思考的時間嗎?透過自我反覆問答越能做出正確的判斷。
(2) 擬定解決策略
卡關時,先判斷問題點,是程式碼的固有問題?或單純是自己打錯字?如果是程式碼原有的問題,再判斷專案時程上是否有時間可解決,如無法就必須另尋解決方式或是暫停解決根本問題,並針對問題搜尋關鍵字,閱讀前輩的技術文章或是官方文件等來解決並檢討,如時間有餘裕的話,再進行程式碼的優化。
2、溝通力
一個專案的開發,往往都是由多位團隊成員各司其職,共同打造出來的,因此具備跨部門的合作與溝通的能力也是相當重要的一環。
(1) 溝通表達
在開發產品時,軟體工程師首要目標需要先釐清需求邏輯與產品規格,在開發過程時才不會迷失製作方向。特別是專案複雜程度越高,溝通技巧就越是重要,甚至,在遇到問題卡關的情況下,需要將自己所遇到的困境,或需求技術上的阻礙,傳達給夥伴知道,讓彼此的理解能有一定程度的同步,不僅大大提升開發效能,也能節省大量繞道的時間。
如果公司層級分層明顯,越會接觸不同領域的同事,像是需要與 PM 或是網頁設計師溝通,也許他們對於程式概念不清楚,工程師越需要具備這樣的能力,才可以有效傳達自己的想法給不同職務的人員。
(2) 需求理解
有能力判斷產品需求背後的涵義,像是第一線人員需要這個功能才能改善工作效率,或是開發這功能後使用者體驗會更順暢等,客戶的需求可能會與原先討論的架構不同,不過需求並不會憑空而來,會是經過多次的使用而增加。
雖然釐清需求是 PM 的工作,但工程師也是需要知道該需求的使用情境為何,才能判斷及決定比較適合的解決方案,才能開發出真正的需求。
3、團隊力
通常每個專案都有一定的規模,為了加速開發的時程,更講求團隊合作能力,所以一個專案會由團隊成員共同開發。在團隊協作上,每個工程師會分配到需要處理的功能,通常功能細分的恰當,在組裝時較不容易發生錯誤。
不只團隊溝通重要,在寫程式上也需要理解並遵循團隊的開發習慣,寫出有結構且易讀性高的程式碼,並花時間將複雜的程式邏輯文件化,可以提高溝通的效率。當臨時有事情要請假時,也能安排交接給代理人員,是重視團隊的協作及尊重合作夥伴的表現。
4、學習力
軟體產業每天都有新發展或是新工具的誕生,如果不能時常接觸新技術、新概念的話,在這資訊爆炸的時代,很快就會被更高效、更好用的『工具』所取代。
(1) 學習內化
沒有經過內化並輸出的學習,並不會學到,而是看過或是聽過而已。如何將新技術輸出?方式有很多種,像是寫技術部落格,或是用新技術自己實作做一個 side project 等,都是幫助自己內化學習的知識。
(2) 好奇心
擁有好奇心的工程師,會願意搜尋更好的解決方式,以及學習更新穎的技術,更能產生「知道自己無知」的良性壓力,良性壓力能促使你學習更多東西,並不斷挑戰更好的自己。
四、小結
成為軟體工程師,寫出可以運行的程式碼不難,難的是培養寫程式以外的軟實力,而當軟實力培養起來後,其實還是會回饋給自己並優化自己的技術能力。
看完文章,如果你還是焦慮不確定自己適不適合成為軟體工程師,那麼可以來顆定心丸,看看 ASTRO Camp 學員的心路歷程,他們是如何成功翻轉自己的職涯,也許可以讓你對於跨出舒適圈更有信心!
如果你想要更了解軟體工程師的職涯規劃與發展,更想往軟體工程師邁進,歡迎預約 ASTRO Camp 有免費説明會,讓最專業的程式教育機構,在轉職的路上助你一臂之力。