前端開發者的目標,是根據網頁設計師的設計圖,建立流暢、友善的使用者介面,讓使用者可以順利地與產品互動,找到並使用網站上的各種功能。同時,不斷優化產品的效能(例如:網頁載入時間)也是前端開發者重要的工作。
大致上,在一個網站或是 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 工程師。
https://www.google.com.tw/search?q=DevOps+開發方法
不同團隊或職能的人,都有權力為專案做某些改善,並為這些修改負責。這樣跨團隊或跨技能的緊密合作文化,即是 DevOps !
由於 Dev 和 Ops 合作上有障礙,才會有人提出應當要有 DevOps 的觀念。這時自動化將會是個很重要的要領,它是需求的潤滑劑,需求丟給開發人員開發完後,有了自動化測試,很快就會滑到準備上線;有了自動化佈暑,一不小心就滑到上線了。
另外,它也是團隊合作的潤滑劑。
比方說,原本的障礙:開發人員要上線時,丟了一包程式,然後維運人員丟上去沒多久,客戶就打來抱怨故障了。維運人員查了半天才發現原來是新程式有用到第三方 library 沒包進去,接著又繼續搞半天,只為了把 library 安裝至正式上線的機器上,想當然而,維運人員要抱怨了。不過開發人員這時出來講話了:程式裡有文件啊!
大多數的狀況下,管理層面的人會出面提議兩邊坐下來討論,接著就會出現 SOP 。比方說,開發上線前要測試,測試完要寫測試報告,然後填寫上線文件與表單送交維運,等待維運上線。這一類的 SOP 通常每次的內容都差不多,久了就會有人開始不想寫。然後,換開發人員抱怨了。
其實,每次上線的流程大同小異,有自動化能取代 SOP 的話,這一類的抱怨就能避免掉很多了。
詳細地探討這個議題,有一個方向是從 CALMS 的角度著手:Culture, Automation, Lean, Measurement, Sharing。



