前端與後端,有時還有其他
這篇文章我以現在求職網上常出現的名詞做為分類,稍微用我的觀點說明一下網站工程師的概況。
註:工程師的範圍非常大,本文的討論範圍僅止於『網站工程師』,再加上一點點『 App 工程師』。
註二:首圖跟這篇文章沒關係,那是一個設計師。
網站工程師的演進
在很早很早以前,只有網站工程師這個職位,只要是跟網站有沾上邊的都是這個人要去處理的,不過這個時期的網站功能也相對簡單,可能就只是單純的頁面展示,有點像螢幕上看雜誌的感覺。
隨著時代演進,網站上面要做的功能越來越多,除了網站本身要開始與資料庫溝通紀錄,網站在瀏覽器的呈現方式也因為 HTML + CSS + JavaScript 三位一體越來越複雜,網站工程師們也開始著手整理日益龐大的網站架構,像是 MVC (Model, View, Controller) 架構便開始流行,遵守一些架構原則讓網站變得更容易理解跟重複使用。
再經過幾年後隨著 JavaScript 日漸增長,使用者端也就是 View 層的需求開始增多,UI/UX 的要求也越來越明確,工程師也持續的修改網站的架構,到了近代,使用者端跟伺服器端的複雜度已經不可同日而語,所以便產生了『前端工程師』與『後端工程師』,前端工程師負責使用者端,後端工程師負責伺服器端。
打個岔,這邊出現另一個名詞叫做『全端工程師 (Full Stack developer)』,泛指前後端都懂的工程師,也是公司一人當兩人用的好範例。
最後提到 App 工程師,在賈伯斯拿出 iPhone 之後, App 開始席捲全球,產生了 iOS/Android 兩個手機 App 的開發職位,雖然跟網站好像沒什麼關係。
就介紹一下每個職位:
前端工程師
前端工程師簡單來說就是處理網站上『使用者會看到的東西』,守備範圍就是畫面呈現、 RWD 還有接後端 API 等等。
使用的語言基本上繞著 HTML, CSS, JavaScript 這三個打轉(沒辦法戰場就在瀏覽器上),然後熟練某種 JavaScript 框架像是 jQuery, React, AngularJS, Vue.js ,然後隨時隨地做好自己使用的技術明天就被淘汰的心裡準備。
因為定位就是在工程師與設計師的交界,所以可能會需要懂一點點設計師用的工具,如果 Marketing 的人找你也別意外,因為 SEO 也是你負責的。
常用到的關鍵字還有 SASS, LESS, Mocha, Jest, ES6, ES7, Chrome DevTools, [anything].js
後端工程師
後端工程師主要的工作當然就是處理那些『使用者看不到的東西』,守備範圍就是伺服器、資料庫、 API 等等。
使用的語言跟框架有很多,像是 PHP/Laravel, C#/.NET, Ruby on Rails, Node.js, Python/Django, Elixir/Phoenix 等,除了這些外還有資料庫的選擇 MySQL, PostgreSQL, Redis,再來還有 server 的選擇 Nginx, Apache 還是乾脆用 HEROKU 就好, API 除了之前的 RESTful 還有現在很紅 GraphQL 。
另外如果你們公司沒有 DevOps 工程師的話,通常 CI/CD 的部署維護工作也會落在後端工程師上,所以應該要用 Jenkins 還是 TravisCI / CircleCI 呢?
常用到的關鍵字還有 AWS, GCP, NoSQL, OAuth, JWT, Microservice, Monolithic, ElasticSearch
全端工程師
全端工程師其實就是上面兩個的綜合體,可以從資料庫一路做到 UI 的工程師,不過我覺得現在不管是前後端其實都有全端的概念,只是你的技能點數比較多點在哪一側而已,只有學一側的知識是不夠的。
iOS 工程師
如同職位所示, iOS 工程師要面對的就是 iOS 系統(大部分指的是 iPhone/iPad )上面各種大小事,但是據說 watchOS 和 tvOS 的開發都歸他管。
使用的語言是 Swift 跟 Objective-C ,也因為開發環境受限於蘋果的關係,常用到的關鍵字通常是 Xcode(蘋果自有整合開發工具)、 App Store 、上架審核、瀏海擋住了等。
Android 工程師
同上, Android 工程師就是 Android 系統上面各種大小事。
常見的使用語言是 Java 跟 Kotlin ,常用到的關鍵字是四大組件、 Google Play 等。
另外,現在有前端工程師也會透過 react-native 或是 Weex 來寫 iOS/ Android 的 App ,不過我們這邊只有指原生的 App 開發工程師。
DevOps 工程師
DevOps 來源於 developers 和 operations 合在一起,主要的工作就是確保開發、測試、維運並行,主要的守備範圍大概就是 CI/CD 的自動化工具使用、測試自動化、規劃軟體到推出的流程等,如果說前端是工程師面對設計師的窗口,那麼 DevOps 的對面大概直接對到 PM 吧。
常用的關鍵字是 Jenkins, Continuous integration, Continuous delivery, Docker
最後
如果說把他們都放在同一張圖的話,大概就是這樣吧。
這張畫左邊是使用者端,於是從右至左,就是資料庫(DB)一路到使用者面前要經過的路。
謝謝!