「我印」是一個能夠自由創作個性商品的平台,背後的技術需要能夠支持電子商務的運作,承載行銷業務的多樣性與快速變化的需求,以及對前端深具挑戰的行動裝置兼容,互動複雜的商品編輯器。我很幸運能夠待在這個具有多元技術的團隊,在這一年當中,迅速的增長技術能力,並從身旁的同事拓展我看待事情的思路。

這一年也是我逐漸完善個人技術觀點的一年,對自己定下三個原則,並將原則滲透進我日常的開發中。

第一是「 考量手邊的資源,將事情做到當下的完美 」,思考如何在有限的資源(時間、技術、團隊氛圍)下,帶給團隊最大的效益,要做到這一點,我對自己的安排是多吸收不同面向的知識,不局限於技術,專案管理、介面設計都需要暸解,因此才能找到對團隊與專案最好的施力點。該原則同樣體現在技術上,盡可能確保自己寫出來的程式碼可維護,且具有一致性。

第二是「 有意識地發現問題,持續改進 」,持續改進的概念來自於敏捷開發,但要能夠做到,有意識地發現問題才是關鍵。在與團隊相處一段時間之後,我發現團隊並沒有建立既定的開發模式,所以溝通效率不高、許多知識被掌握在特定的人手上、重新建立專案花費很高的成本,因此我開始著手進行將團隊的開發流程統一,包括 Git 工作流程、常用技術(React.js、CSS)的規範、語法 Linting 與開發輔助流程的工具,在開發流程有了基準點之後,團隊就能夠慢慢的進步。當然,這一點仍舊是需要努力的目標,一定得感謝主管與同事的信任,以及前輩的指導才能夠做到。

第三是「 幫助團隊、幫助他人 」,在一路成長的過程中,取之於人者太多,不管是社群的前輩、夥伴與公司同事都不吝於對我提供幫助,他們都是我學習的對象,因此我希望我能盡量幫助別人,主動將我的所知所學分享給同事,仔細思考他人求助於我的問題,並恰當且熱情的回應。

以上是我當前對這一年的總結,我會繼續堅持上面的原則、繼續成長。

以下是我在「我印」所做過的專案,由時間點最接近到最遠排列:

我印編輯器 JavaScript SDK

2016/07 - present

提供「編輯器 SDK」讓各平台可以快速建構提供客製化商品的網站,「站酷」與「禮物說」都是我們的合作平台,我負責 SDK 主要開發以及與合作平台溝通技術上的細節,並撰寫說明文件。

  • 使用 React.js 開發操作介面, HTML5 Canvas 操作文字以及圖像合成,並考慮兼容性以及優化效能,包括:消除低階機種的操作卡頓、合成清晰的圖片等。
  • 撰寫服務說明、SDK API 參考、後端金流串接說明、並提供編輯器範例。

我印頁店

2016/07 - present

提供設計師快速開店販售自己的客製化商品,我負責撰寫前端頁面與部分的後端 Rails。

  • 後端使用 Rails,前端使用 CoffeeScript 與 jQuery 開發專案。
  • 撰寫表單與頁面元件的 Helper,並提供指引來確保開發上的樣式統一。
  • 複雜互動的頁面抽取成套件,使用 React、Redux 以及前端工具鍊進行開發,並管理獨立的迭代流程,利用 Shell 與 Node 開發腳本,並與 Jenkins 搭配完成自動化部屬。
  • 設計部分的操作介面。

行動版結帳頁面

2016/04 - 2016/06 (3 months)

原先公司每一次的活動推廣頁面,都必須要重新串接結帳方式與提供查詢訂單的系統,在 iOS 與 Android 也必須各自維護自己訂單系統,因此催生這個統一所有行動頁面結帳流程的專案,它可以兼容於主流行動瀏覽器、微信與 Native App,我在團隊內負責專案的架構與主要開發者。

  • 使用 React.js 與 Redux 架構專案,以及利用 Express 作為 API server 的 Proxy 處理認證與靜態頁面。
  • 建立團隊內部使用 React.js 開發專案的相關規範與指引,內容包括語法規範、專案結構、狀態管理建議作法以及如何使用撰寫單元測試。
  • 處理各平台的兼容性問題。
  • 使用 Mocha 撰寫單元測試

我印 App

2015/12 - 2016/03 (4 months)

我印 APP 是一個商城,為了符合公司業務與行銷團隊快速迭代的需求,App 選用 React Native 框架與 Native 混合開發,我在團隊內負責 React Native 開發,其中必須同時與 iOS 及 Android 技術團隊溝通,尋找能夠複用的解決方案,並優化效能以提升使用者體驗。

  • 使用 React Native 開發 Android 版本,在 React Native 對 Android 支援尚不穩定的情況下,尋求最佳解法。
  • 升級 React Native 版本,由 0.13 到 0.21。
  • 提升效能,包括:加快各頁面開啟速度、開發圖片緩存套件以及改進動畫效果的流暢度。
  • 支援開發 Hot Update 功能,結合團隊工作流程開發腳本,並與 Jenkins 搭配完成自動化部屬機制。
  • 使用 Jest 撰寫單元測試。