前端、後端、全端工程師 核心技能比一比
許多人想要學程式,希望未來能轉職為軟體工程師,但往往在琳瑯滿目的程式語言和工具中迷航,不知道從何開始。好不容易學會了一個語言,那接下來要學什麼呢?若因為沒有方向而消耗了學習熱忱,實在很可惜。
想成為前端、後端與全端工程師,需要的核心技能有何不同呢?你比較適合走哪條路呢?為了給更多有志成為軟體工程師的人們一條清楚的方向,我們請教從 ALPHA Camp 畢業、已成功轉職軟體工程師的學長姐們,以及業界老師和助教,列出在實務上會應用到的核心技能與工具。本文統整出前端、後端與全端工程師技能表,希望能成為大家在修習技能時的參考。
除了前端、後端與全端工程師,本文也會介紹 DevOps 工程師的技能與工作項目。雖然 DevOps 工程師需要一定的資歷才能勝任,但因為薪資待遇佳、工作挑戰大、也是一個不錯的職涯目標。
前端工程師
職務簡介
前端開發者的目標,是根據網頁設計師的設計圖,建立流暢、友善的使用者介面,讓使用者可以順利地與產品互動,找到並使用網站上的各種功能。同時,不斷優化產品的效能(例如:網頁載入時間)也是前端開發者重要的工作。
大致上,在一個網站或是 App 中面向使用者的功能、互動、以及介面呈現,都和前端工程師有關,例如但不限於:登入頁面、購物結帳頁面、網頁按鈕、下拉選單、留言板、圖文與影像呈現、網路廣告嵌入和呈現、私訊功能等。而前端工程師常常會因公司的產品開發方向以及使用者的需求,更新網站的介面和功能。
一個網站的視覺外觀通常由設計師負責畫出設計稿,再交由前端工程師用 HTML, CSS, JavaScript 把設計稿變成瀏覽器上的介面。以上圖的臉書介面為例,舉凡圖片大小、工具列的位置、字型設定等,都是前端工程師需要負責呈現的。
前端工程師也常常必須和 UI(使用者介面)、UX (使用者體驗)設計師合作,提升介面的美感和用戶體驗。當前跨螢體驗已是必備項目,網站介面要在不同的瀏覽器、不同載具上都能有良好的呈現,考驗著前端工程師的技術實力。
在網站的功能中,若有涉及資料庫,前端工程師就必須要和後端工程師合作。以臉書為例,前端工程師建立了個人資料頁面,讓用戶可以輸入姓名生日等個資並放上大頭貼,但需要串接到後端工程師建立的資料庫,讓用戶輸入的資料能夠被妥善儲存,此個人資料頁面才是一個完整的功能。
核心能力
除了以上核心能力,如果有基本的美感與設計概念,並且有同理心、能從使用者角度去想像產品該提供的互動與動線,會是加分項目。
另外,隨著實作經驗累積,搜尋引擎優化(Searhc Engine Optimization, SEO)、內容傳遞網路(Content delivery network, CDN)等前端網站優化的技巧也會越來越重要。
後端工程師
職務簡介
雖然有前端工程師打造網站的「門面」,但若要將網站上的各種功能付諸實現,例如儲存使用者帳戶資訊、購物紀錄、推薦商品、驗證帳號密碼、計算用戶點讚的內容,則需要後端工程師。
以購物網站為例,當你點選了購物車,想看看自己收藏了哪些商品,此時,你「點選購物車」的指令,將會經由伺服器進行邏輯分析,從資料庫中找出你儲存的商品名單,伺服器再將名單傳到前台,讓你看到商品。
以上述的例子而言,後端工程師的目標,就是處理資料,讓伺服器在茫茫資料海中,最快速地做出適合的運算,提供使用者想要的資料。為了達到這個目標,後端工程師必須要建立並優化伺服器的性能、程式碼邏輯、以及資料庫結構。
除了資料庫、伺服器,演算法也是後端工程師常要負責的項目。演算法與商業邏輯息息相關,例如當臉書決定要減少塗鴉牆上的商業廣告、或是電商希望增加某樣商品出現在推薦系統的頻率,後端工程師就需要調整演算法,讓網站上的應用程式能夠實現業主期望的商業邏輯。
核心能力
若要邁向資深工程師,除了以上核心能力之外,可繼續精進系統設計、資料庫設計、系統效能優化。
全端工程師
職務簡介
在實務上,前端與後端並不能算是兩個完全獨立的領域,即使是前端工程師多少也需要瞭解後端的專業知識,反之亦然。
兼有前端和後端技能的開發者,可以更快速地做出產品 prototype、也能夠機動性地支援和協調各開發部門,在變化快速的新創圈中更是一大賣點。而自從臉書與 Google 的工程師透露他們偏好雇用「全端工程師」後,全端工程師已經變得越來越搶手。
一個全端工程師需要瞭解一個網站的全貌,包含伺服器、主機環境、資料庫、網站維護、前端架構、使用者體驗、自動化測試、資訊安全等。因為近乎「通才」,當接受到新問題和需求,全端工程師更能夠知道可以從哪些方面去解決。
雖然需要懂的知識很多,但全端開發者並不需要每樣都精通,也不一定每個領域都要能夠獨立開發。通常他們會特別專精其中幾項技術,並且和網站設計師、前端、後端以及 DevOps 工程師分工合作。
在團隊中,全端工程師除了會依任務需求投入前端或後端的開發,也有機會從事網站功能與架構設計、協調開發流程、協助排除問題等。對全端開發者而言,除了持續累積技能,能夠善用跨領域的能力,讓網站滿足商業邏輯和使用者需求,才是真正發揮價值所在。
而如果想自己獨立接案,瞭解基本的 RESTful API、知道如何提升網路安全性、運用 CDN 優化網路性能、監測流量並及時排除狀況,也是全端工程師需要累積的實戰經驗。
DevOps 工程師
職務簡介
軟體開發的步驟可簡化為:開發(Development)、測試、營運維護(Operation),在較大的組織中通常會由不同團隊負責,而為了改善開發端與營運維護端的鴻溝和缺乏效率,DevOps 工程師這個職務便應運而生。
簡單來說,DevOps 工程師就是一位具有程式開發能力的系統營運工程師,主要工作目標是確保網站營運的可靠性和安全性,並同時兼顧軟體開發交付的效率。為了達成這個目標,DevOps 工程師的必須負責:建立自動化伺服器管理流程(包含自動化部署伺服器、自動化監控系統、自動化測試等等)來因應頻繁交付的需求,以提升開發與營運團隊的溝通效率。
舉例來說,開發者提交的軟體規格不符合部署環境,營運維護端就必須找出問題、並把軟體退回給開發者,如此將拖累產品交付速度。隨著軟體服務越來越龐大複雜,若能有效導入 DevOps 開發方法,將能夠減少退回率、人為錯誤,並加快上市時間。
許多軟體公司能夠快速推出服務改版的原因, DevOps 開發方法功不可沒。例如 Flickr 能夠在一天之內,因應功能需求推出十次小改版。因此,DevOps 雖然是相當新興的職涯領域,已經受到越來越多科技公司重視,除了 Google、Facebook、Amazon、LinkedIn 等互聯網公司,甚至連 Sony、星巴克也開始招募 DevOps 工程師。
核心能力
對於轉職者而言,不一定要每項技能都精通才能找工作,因為不同公司,對工程師的技能要求會有所不同。建議剛進入職場的工程師可以先在工作中邊做邊學,並自行補齊其他技能,未來有機會拿到更好的 offer。
瞭解了前端、後端、全端以及 DevOps 工程師所需的技能後,可參考這篇:前端、後端、全端工程師 就業市場有何不同
Originally published at tw.alphacamp.co on July 20, 2018.(本文轉載自 ALPHA Camp blog)
如果覺得這篇文章有幫助,請拍個 10 下 :) 想每週更新求職與自學攻略,追蹤 ALPHA Camp 粉絲團!