Stackla前端團隊Leader蔣定宇:國外前端開發者的別樣人生
責編:陳秋歌,關注前端開發領域,尋求報道或者投稿請發郵件chenqg#csdn.net。
歡迎加入“CSDN前端開發者”微信群,參與熱點、難點技術交流。請加群主微信「Rachel_qg」,申請入群,務必註明「公司+職位」。另可申請加入CSDN前端開發QQ群:465281214。
2016年,SDCC(中國軟體開發者大會)相繼走進了上海、深圳、成都、杭州各地。11月18日-20日將在北京完美收觀。作為大會的重要分專題,前端開發專題已邀請到臺灣知名前端技術專家、澳大利亞悉尼企業Stackla前端團隊Leader蔣定宇。
會前有幸採訪到蔣定宇,兩年前他加盟澳大利亞悉尼的Stackla企業,擔任前端團隊Leader。本次專訪他為我們講述了國外前端開發者的生存現狀、別樣人生,同時作為國內前端技術大牛,也將為前端開發者帶來了更多啟迪性的建議。
受訪嘉賓介紹
Stackla前端團隊Leader 蔣定宇
蔣定宇,作為SDCC的老朋友,有著多達12年的前端開發經驗。曾擔任雅虎前端工程師與傳教士,目前在澳大利亞悉尼的 Stackla 擔任前端團隊 Leader。專注於持續改善架構、開發環境、注重維護性、規範、模組化、自動化等技術方向。喜好與人分享,成立“臺灣開發者在澳洲”社群,曾在SDCC、WebRebuild 等研討會上進行分享。
CSDN:首先請您做下自我介紹,目前所從事的工作及主要專注哪些技術領域。
蔣定宇:
網路代號 josephj,前端開發經驗 12 年,目前在澳大利亞悉尼的 Stackla 擔任前端團隊的領導。
Stackla 平臺主要專注於社交媒體資料的擷取、篩選、並顯示。當品牌的使用者透過社交媒體分享,品牌公司則可將此內容轉化成活廣告、達成行銷的目的:「讓你的顧客替你說故事」。
在公司我主要則是負責管理介面面的製作、以及顯示 (Widget、Event、HostedHub) 部分,此外也負責了前端團隊的管理。
個人感興趣的技術領域包括持續改善架構、開發環境、注重一致性、維護性、規範、模組化、自動化等議題。
CSDN:兩年半前,您離開熟悉的環竟,加入澳大利亞Stackla。這個期間,給您帶來的最大的變化是什麼?
蔣定宇:
生活與做事方法有了很大不同
過去的生活幾乎都是被工作填滿,即便假日也要花不少時間專研技術或加班。但來到澳大利亞後,生活作息變得很正常,每天工作朝九晚五,變得很多時間可以花在生活上:買菜做飯、中間總是會跟朋友出去小酌、週末則會去郊外享受悉尼的好天氣與好山好水。
能有多的時間在生活上,很重要的就是做事的方法。我們國內的文化就是要做到 90、甚至 100 分,不管在技術或產品規劃上都會花比較多的時間。而這邊我們真實奉行了 MVP (最小可行性產品),也願意在功能或實際操作上做出取捨,不糾結,讓客戶提早做出反饋。我們也能為了專注產品平臺、而砍掉 Professional Services (替客戶做客製化) 這個能有立即收益的服務。也即將砍掉先前有許多客戶在用的功能、要求他們移到新平臺上。這些都是說起來簡單,但實行起來卻很困難的一件事情,但卻對公司的效率有極大的助益。
我本身也減少了對技術的不斷追求的偏執,進而轉變為碰到問題時再去思索解法。
CSDN:在您看來,國內與國外的前端開發環境有啥不一樣?國外的前端工程師生存狀態如何?
蔣定宇:
國內對於技術的更迭速度較快,澳大利亞這邊則是實用導向。
例如當 React 初期國內引起風潮時,在悉尼這邊並沒有太大的感受,大部分人的首選或工作職缺都還是 Angular,因為能夠寫 React 的人才在市場上當時並不普及。而已經有既有架構的公司通常不會貿然地改變架構、避免付出不必要且巨大的成本。國內則常聽到許多改寫的例子。對於想要追求技術的人,在國內或美國會是比較好的環境。但對想要學習怎麼有效率地工作、產品的實踐、沒有那麼大的技術執著,這邊的環境是比較好的。
日益盛行的前端
澳大利亞的大公司不多,但新創公司卻很盛行,因此我兩年半前剛到時,前端工程師並不算是一個非常普及的角色,大部分的職缺還是偏向全棧工程師,儘速把產品給做出來。而通常有前端工程師時,代表了產品已經開始邁入穩定階段了(我自己也是Stackla 公司成立 1.5 年後的第一個前端工程師,隔了近兩年才再繼續找了第 2 個與第 3 個前端)。這樣的情況跟國內新創企業一開始就找前端有蠻大的不同。
現在就業市場情況則明顯改變,前端需求高,甚至看到有部分資深前端工程師崗位的薪水高於後端,好的前端工程師在某些程度是奇貨可居的。我想前端的複雜度與流暢 App 般的需求是主要影響的原因。
多元文化的環境,溝通能力比技術來得重要
可能是因為教育的影響,澳大利亞本土居民擔任工程師的比率並不高。曾經或目前在公司擔任工程師的我的同事有德國人、巴西人、阿根廷人、印尼人、伊朗人、紐西蘭人、保加利亞人、中國人,以及澳洲人。大家的行事風格會有所不同,願意連線團隊,有好的溝通能力要比技術強重要許多。
Contractor 的盛行
國內所謂的派遣工,通常會聯想到薪水不高且沒有保障。但這邊反而很多厲害的工程師會選擇做 Contractor,薪水很高也不用被公司所綁住、也不用擔心需求的問題、生活也有彈性。目前公司為了滿足客戶客製化的需求、讓 In-house 的開發者可以專注在產品上,同樣也是與許多 Contractor 一直保持聯絡。
CSDN:請您談談Stackla前端團隊組成,前端開發流程和前端架構是怎樣的?
蔣定宇:
- 前端團隊組成:目前連我一共有 3 位前端工程師,但不只是我們在寫前端,另外的 4 位全棧工程師多少都會做一些前端的工作。這跟過去我在國內,分工清楚有很大的不同。但這是我們一路走來的模式,貿然改變為清楚分工不見得是個好事,但前端也在人手多後日益複雜,如何協調是我現在最大的難題之一。
- 前端架構:
- 前端元件 UI Kit:我們自己的包含過去類似 Bootstrap 的 jQuery 外掛、與現在的 React 元件兩套並行,目前有一位熱心的同事在做維護。
- 顯示端 Widget 與 Event:仍然採用 jQuery + Mustache 的模式,API 介面也走傳統的 OO 介面,事件與 Callback,為的是讓客製化簡單。
- 管理介面 Admin Portal:仍有許多傳統的作法 (jQuery + SASS + grunt-usemin),而所有新的專案或改寫都已經使用 Webpack + Babel + React + Redux (redux-observable, ducks modular, redux-action, normalizr) + CSS Module (Webpack style-loader with local scope)。
- 前端開發流程:
- 不同的專案會有不同的 WIP 週會,初期由我去參與會議理解需求,後期就由成員自己出席 Demo、Review。
- UI Kit 前端元件的製作也是在專案中有需求才會發生。
- 我們走看板流程:一開始由我來開票,儘可能讓每張票不超過 4 小時,才能在每天早晨 Stand-up 都能看到進度。
- 完成後由彼此在 GitHub 做 Code Review:除了要符合規範外,更重要的是從中探索改進之處。
- 若有改進之處(寫法、規範、抽象),我們會在前端自己的週會提出討論,決定是否納入規範或常態使用。
- Code Monkeys Session: 對於已經有結論的可重構程式碼,不太需動腦但有明顯助益,我會安排程式碼猴子的 Session,例如我們匯入 ESLint、CSS Module、Unit Testing、改變目錄結構,都是透過此方式:一起重構,讓團隊每個人理解規範與目標。
CSDN:您如何看待Angular、React這兩大熱門前端框架?面對眾多的前端框架,企業該如何選擇?
蔣定宇:
兩者抽象化的程度不同
兩者同樣對 JavaScript 做了很大程度的抽象化:也就是隱藏了許多細節,讓開發者能夠專注在產品開發上,但抽象化的層級是全然不同的。
React 所需匯入時間短,但基本上它只是個庫,概念簡單,大部分人在短時間內就可上手,解決複雜介面的實作問題。也因此它很適合新創團隊快速開發,你可以在開始有其他問題時再匯入其他抽象層(例如 Redux 或 Flux),而非一開始就尋求最佳解答。
Angular 則真的是一個框架,嘗試解答大多數的問題,也有比較嚴謹的模式。想當然也需要花比較多的時間匯入,比較適合比較成熟的公司。在有熟悉此框架的架構師帶領,有效地利用框架的功能,也讓再有眾多成員時比較容易有一致性的規範或模式可以跟隨。
如何選擇?
對於決策者來說:
- 你要解決的問題是什麼?它真的是問題嗎?或者只是你自己的糾結?
- 你能花在重構上的資源有多少?
- 這些框架的優缺點是什麼?
對當時的 Stackla 來說:我們在用傳統 jQuery + DOM 撰寫 UI 上已經碰到瓶頸。現實是:前端工程師只有我一個,我得忙專案,其他的工程師對於較於複雜的前端架構接受度低,但前端仍然需要他們的貢獻。也因此我的選擇是整合快、上手快、成就感高的 React,讓每個人很能快地帶來產出。半年後我們碰到 State Management 的問題,才再引入 Redux 來解決。若一開始就匯入 Angular 或 React + Redux 對當時的我們來說是不切實際的。
我有一個朋友的公司,幸運地獲得長時間的重構資源,有不少的前端工程師,他們則是全心專注把 Legacy Code 轉移到 AngularJS 上。我的想法是,框架在大的團隊能帶來不少好處的:因為如同其「框架」的名稱,其實也帶來了有紀律的限制,較能專注於產出、減少對於最佳實作的爭執。
CSDN:在您看來,前端開發者面臨的挑戰主要有哪些?該如何應對?
蔣定宇:
前端很年輕,仍然不斷地在快速迭代,一個流行的工具,2-3 年後可能沒人再提 (ex. grunt, RequireJS)。一個最佳實踐,數年後將完全被推翻或取代 (ex. OOCSS, HTML in JavaScript, JavaScript MVC, CSS in JS),要在前端求生存、確實是很不簡單的一件事情。
但身為前端開發者的我們必須理解這背後代表的意義:
- 前端仍然有很多問題。
- 前端極其重要,才會吸引這麼多人不斷地思考改變。
- 工具的迭代帶來了正確的方向,讓前端更貼近軟體開發。
- 當代的前端工程師是時代的橋樑,只有我們才有能力向美好的方向邁進。
有人可能會抱怨這是個最壞的時代(學不完的技術),但對於許多人來說何嘗又不是最好的時代(需求高、一直有新概念、衝擊、成長)呢?保持開放、保持好奇心就是最好的應對方式了。
CSDN:面對技術的快速迭代,前端開發者應該保持怎樣的心態,應對策略是什麼?
蔣定宇:
- 解決問題而非製造問題:技術狂熱者很容易為了新潮、不考慮成本引用新技術,這反而對團隊跟自己都帶來很大的負擔。
- 跟團隊一起成長:獨樂樂不如眾樂樂,最開心的時候往往不是自己習得一門高深技術、反而是大家都能得到東西。
- 規劃自己的學習路徑:每個人都有不同的天賦與興趣,你可以多花一些時間在自己有領域的專案上面,但對於重複的東西則是真的要用到時再來學習即可(例如你已經會了 grunt,你不一定要深入 gulp,真的要用時再來學吧!)。
- 保持謙虛沒有最佳解答。
- 開放心態。
CSDN: 11月18日,在SDCC 2016前端開發專題上,您分享的話題是?聽眾將通過該演講獲得哪些收益?
蔣定宇:
演講內容與這份採訪內容其實很類似:在澳大利亞從事前端技術工作的諸多心得,最佳實踐技術的眾新思索,瞭解國外的前端發展狀況。
目前SDCC 2016前端開發專題的所有演講嘉賓已全部確定,以下為嘉賓名單及演講議題(排名不分先後),詳情請見:SDCC 2016前端開發專題講師、議題大揭底。
- Stackla前端團隊Leader蔣定宇
- 演講主題:不斷歸零的前端人生
- QQ音樂&全民K歌高階工程師袁聰
- 演講主題:全民K歌React Native最佳實踐
- 餓了麼Node Team負責人黃鼎恆
- 演講主題:純手工搭建一個高效能實時監控系統
- 360奇舞團前端工程師鍾恆
- 演講主題:使用Vue.js 2.0開發高互動Web應用
- Ruff架構師、JavaScript專家周愛民
- 演講主題:有前端思想的物聯網系統架構
- 58到家高階前端工程師周俊鵬
- 演講主題:基於webpack的前端工程解決方案
想與這些專家現場面對面進行技術探討嗎?目前SDCC 2016大會門票8折銷售中,團購更有優惠,是給辛勤工作一年的你,年終最好的禮物,或許這樣,SDCC才能更真切地服務好開發者。【註冊參會】