簡單、直覺、懂我#
前陣子天下雜誌寫了一篇關於 Fubon+ 的報導,全文請見這裡,內容大概是講北富銀怎麼把行動銀行 App,改造成一個更貼心的生活顧問平台。小的很榮幸能擔任這項專案的後端工程師。記得在 2023 年的專案啟動儀式,我微微低頭,長官將名牌掛到我的脖子上,握緊我的手說了聲加油。與團隊並列,我手上拿著印了「簡單」的藍色牌子,尷尬的望向前方的人群與攝影機,我知道這一切的背後,絕對不會是簡單的。
先說前端真的做得很漂亮#
每次打開 App 都還是忍不住讚嘆,簡約的牌卡設計、協調的藍色系、流暢的小動畫,即使龐大的資訊量塞在一個手機畫面中,看起來還是非常賞心悅目,讓人直覺的一看就懂。某種程度來說,我的任務跟前端是一體兩面,前端負責讓畫面看起來懂你,我負責讓系統真的懂你。當時北富銀的客戶數將近一千萬,不是個小數目,而我最初接到的功能,是開發個人化情境。
從一句生日快樂開始#
個人化情境聽起來有點抽象,最簡單的例子其實簡單到很可愛,比如讓客戶在生日當天,打開 App 就看到「Ally,生日快樂!」的祝福。這看起來是一件很小的事,但要知道今天是哪位客戶的生日、而且只對該客戶顯示相關內容,背後需要一套能快速判斷「這個使用者現在該看到什麼」的機制。這套機制一旦建立起來,接下來不同的「情境」就可以像組積木一樣,在這一套框架裡持續擴充。
數據中台開槓桿#
雜誌文中提到 App 整合了銀行、保險、證券等多項資訊,提供從消費分析到投資建議的財務顧問服務。回想起消費分析,我投入了相當多心力。一開始的資料來源沒有想像中那麼即時,消費彙整資料和明細是經過程式批次運算產生的,並且要在這些資料上建立 API 服務,讓使用者能即時查詢。這段時間要兼顧既有的關聯式資料庫,也要規劃如何將資料儲存到新建的非關聯式數據中台。建立中台的其中一個目的,是希望能提供高效能的 API 讓前端呼叫,並撐起各式各樣的新功能。換句話說,消費分析只是其中一小塊,其他像是投資損益、資產變化等功能,看似各自獨立,實際上大多可以共用同一個底層架構,再依據不同場景調整出不同的呈現方式,這也是 App 能快速增加新功能的原因之一。這些個人化服務大致開發完後,我開始協助資深前輩測試更進階的即時功能,例如客戶的數位點擊軌跡、重複刷卡警示功能,熟悉這類 event-driven 的架構流程,也算是我從月結批次慢慢接觸到真正即時的起點。
簡單的背後#
將近一千萬名客戶、多年累積下來格式不一的歷史資料、還有各種奇形怪狀的 edge case,要把這些整理成一套乾淨、一致、可以被即時查詢的資料結構,過程完全不浪漫,就是一項項欄位去對、去驗證、去補洞。而且當兩套儲存系統並存、資料要對得起來、查詢服務又必須又快又穩,種種問題比想像中還要棘手。使用者看到的是一張乾淨俐落的卡片,工程師看到的是曾經一團需要被馴服的原始資料。簡單的背後並不簡單,許多眉眉角角都是邊做邊踩雷才學到的。一路走過來,很多時候也不能靠自己埋頭硬幹,很感謝身邊有許多大神願意花時間指點迷津,比如資料模型怎麼設計、架構上該怎麼取捨,甚至 code 可以怎麼優化,這些幫助都讓我能幸運地少走一些彎路。
一些看不見的#
有一塊使用者完全看不到、但我們花了很多心思的地方,就是資安。從資料本身、程式開發,到應用部署、身份驗證、傳輸加密等,每一關都不能鬆懈。雖然有時很想抱怨繁複的資安流程,讓開發過程變得冗長,但這些東西只有在出問題時才會被注意到,所以更需要在一開始就做好準備,而不是事後才去補救。另外,使用者的需求會一直長大,為了維持快速迭代的節奏,我們內部也用了敏捷開發流程,定期規劃 sprint、拆解 user story,讓需求從模糊的想法,變成工程師能排進時程並實作的任務。
總之就這樣#
「簡單、直覺、懂我」這三個字,對用戶來說是打開 App 那一瞬間的感受。而對我來說,是過去兩年多每天都在解決的問題。很高興看到它成功上線並且廣受好評,下次如果你打開 Fubon+,剛好看到了生日祝福、或消費分析那個小動畫跳出來,也許可以想到,這背後有一大群認真的工程團隊,正在默默努力讓一切看起來很簡單。

