轉職軟體工程師!百萬年薪不是夢(上)
軟體工程師職涯前景看好且薪資傲人,是求職或轉職的熱門目標,坊間也有許多相關補習班,但業內真相卻是薪資落差極大!同樣是寫程式,究竟能夠領高薪的佼佼者在職涯中,做對了哪些事?
文章目錄
軟體工程師是許多人夢寐以求的轉職熱門選項,任何調查排行榜幾乎都高居前三,許多人認為只要轉職軟體工程師,就能坐在電腦前,不用風吹雨打日曬雨淋,就能獲得一份能夠做到退休的高薪高福利工作…但想在這個行業中出類拔萃,獲得現在難以想像的高薪以及不被淘汰,那可不能只會「寫程式」喔!
寫程式只是基礎,軟體工程師日常在做什麼?
軟體工程師的工作內容,根據薪資公秤,所述,其工作型態會分為三大類:1.專案需求釐清 2.執行與完成專案 3. 自我持續成長,其細節分述如下:
專案需求釐清:
軟體工程師需要跟專案需求單位或相關窗口,進行跨部門的溝通,了解其需求,然後與主管以及團隊成員討論技術上的可行性,並定義各項作業的優先順序,再回報給需求單位,獲得同意後,才能進入執行階段。
執行與完成專案:
前置作業完成,進入專案程式撰寫階段,但在此過程中,也會遇到不少技術困難,這時可透過查閱相關技術文件、與團隊討論,上網到相關論壇研究等方式解決。
當程式終於順利完成,還必須撰寫相關的技術文件與教育訓練文件,才能交給使用單位複測,而如果使用單位在此階段測試上有什麼不順,甚至發現新bug,軟體工程師也必須儘速處理。在許多中小型公司,就算專案完成交付給使用單位,但使用單位在運作上或是操作上有什麼問題,甚至看不懂技術文件,軟體工程師也必須協助教育訓練,直到使用者能穩定運作為止。
自我持續成長:
程式撰寫沒有一定的公式,「會」與「精通」的差異,對於程式碼大小與執行效能可能相差甚大,加上軟硬體技術不斷發展,必須持續精進自己熟悉的程式語言,並且學習相關領域(如前端工程師去了解後端與資料庫)的知識。
軟體工程師的分類多,專長方向大不同
除了工作內容龐雜,軟體工程師的分類也開枝散葉,光是最熱門的Web相關類,就可分為前端工程師、後端工程師與網站可靠性工程師( Site Reliability Engineer , SRE )三類,簡述如下:
Web前端工程師:
網站或 APP 向使用者呈現的介面,是前端工程師主要的任務範圍 ,必須會的程式語言有 HTML、 CSS (熟悉 CSS 框架如 Bootstrap )、 JavaScript (能善用JavaScript框架如 React.js 或 Vue.js ),以及熟練 JQuery 函式庫,能串接來自後端的API,並且維護資訊安全。
除了程式語言的技術能力,前端工程師還要有一定的美感與使用者同理心,以及知道搜尋引擎優化( SEO )的基本概念,能夠靈活運用響應式網頁設計( RWD ),做出跨裝置、跨平台都能完善呈現的網頁。
Web後端工程師:
網站上的各種功能與資料處理,如何經由合適的程式語言撰寫成演算法,讓網站伺服器迅速運算與回應使用者需求,是後端工程師主要的任務範圍。
後端工程師必須至少精通一種後端常用程式語言,例如 PHP 、 Ruby 、 Python 、 Java 、 ASP.NET 等,並且能靈活運用後端開發框架,例如 Node.js 、 Rails 、 Django 等。也會撰寫 Web API 、以及了解 HTTP 、 TCP 等網路通訊協定以及前端程式語言的基礎。
資深的後端工程師通常也會涉獵部署網站、資料庫平台的軟體,例如 AWS 、 Azure 、 Google Cloud Platform ,使用資料庫開發工具如 MySQL 、 SQL Server 等,並持續精進系統、資料庫設計與系統效能優化的能力。
網站可靠性工程師:
通常稱為 SRE ( Site Reliability Engineer )或 DevOps ,工作任務為確保系統的伺服器與資料庫的運作,維護相關服務的穩定和性能。這項工作過去需要投入大量人力操作,但現代則是透過撰寫軟體來取代之前需人工才能完成的任務,所以也變成軟體工程師能發揮的領域。
SRE 的工作內容為:設計網站可靠性流程與策略與開發自動化流程與程式、建構系統架構、管理部署流程。對系統進行容量規劃,管理相關設定,效能調校,分析系統效能瓶頸並改善,以及針對異常事件警示與回報、處理。
SRE 工程師需要至少懂得 C、 Node.js 、 Python 、 Java 、 Ruby 等其中一個程式語言,並有編寫腳本語言的能力,深入了解Linux系統與相關指令,熟悉各種自動化工具,例如 Docker 、 Chef 、 Puppet 、 Shell Scripts 等。由於雲端服務已經是主流,所以 SRE 工程師也需要熟悉各大廠商的雲端服務工具,例如 AWS 、 Azure 、 Google Cloud Platform 等。以及相關的資安軟體,熟悉各種網路攻擊手法與防禦方式。
出社會之後應該如何轉職成軟體工程師
軟體工程師在職涯的優勢有:工作機會多,基本上是事求人。專業技能不受產業限制。累積的經驗對未來工作有幫助,工作環境通常相對單純、未來可預期的加薪幅度、甚至跳槽可談的價碼,通常都比一般上班族高。只要轉職者是真的有心、有熱情、有毅力,在一年內學會特定的程式語言,成功轉職通常不是太難的事情,可參考下列各點:
選擇培訓機構:
例如職訓局、資策會,民間補習班等,通常能夠有系統的讓學生習得目標程式語言。而且類似學校的環境,有老師教,有機會能發問,能夠跟同學討論,甚至有競爭感,比較有動力繼續學習下去。
此外,這類補習班的課程學費較為昂貴,通常一次約6~10多萬,並且還沒算上舟車勞頓的費用,也必須在固定的時間上課,時間上較沒有彈性。
線上課程平台:
線上課程為講師在網路上授課,除了影片教學外,通常學員可以連絡上講師本人,詢問課程內相關的問題,學習時間比較自由,課程內容也可以無限次數重複觀看。
線上課程需要付費,但通常遠小於實體培訓機構,由於線上課程平台之間競爭激烈,有時會有優惠價或包套特餐,但如果想完整的學完一套軟體課程,通常還是得付出上萬元的學費。
買書或以網路免費教學輔助自學:
網路上有許多的軟體工程師的教學資源、如論壇、教學影片等,如果能夠利用這些資源,幾乎都可以自學,也確實有人靠自學就順利轉職成為軟體工程師。
網路自學的最大優勢是有許多免費的資源,以及論壇上有很多熱心的網友幫忙回答問題,而且能夠培養出強大的自學能力,對未來職涯遇到問題,尋求解決方案時,也能事半功倍。
大量的實作練習與培養專案能力:
無論是選擇自學還是機構培訓,都要想辦法不斷的練習與實作,甚至想辦法找課外練習的機會,例如參加「黑客松」( Hackathon )競賽!
從這些練習甚至比賽的淬鍊中,不斷掌握撰寫程式的「熟悉度」、「細膩度」、「速度」等功力程度,也能以是否能完成比賽為標準,以及是否有與需求方、團隊成員的溝通能力,評估自己的程度,未來才能把寫程式從「學會」變成真正在職場有用的「技能」。
參加相關程式語言的社群:
轉職者雖可以透過各種學習方式,習得如何撰寫程式,但對於軟體工程師的思維模式,或是業內的行事風格,則未必能很快地融入,對求職或工作都可能有影響,因為「思考模式不轉變,對於主管及同事的觀感,轉職者還是像軟體工程師界的局外人」。
故建議從開始學習程式撰寫時,就積極參加一些同樣程式語言的開發者社群,甚至相關的實體聚會,除了能觀察軟體工程師的思維模式,還能找到前輩討論、指點迷津、吸收經驗,甚至成為在業界的人脈,增加因推薦而獲得的工作機會,這對於非科班出身的轉職者,相當重要!