我在 BandLab 這三年的旅程 🎂

邱懷民
一個被音樂耽誤的Android工程師
11 min readSep 1, 2022
古色古香的新辦公室大門,慶祝兩輪融資拿到 $65M 的大合照

前言

三年前,我飛到了新加坡,抱著既期待又緊張的心情,開始了我的第一份正職工作。初期在職場上除了語言和技術的挑戰,還要適應不同的生活文化,好在我有幸遇到一對天使房東夫妻,常熱心的帶著我遊覽這個小島國家,教我講 Singlish 融入這個環境,在這無依無靠的時候,最幸運的事大概就是有這對房東夫妻罩著我。

時間過得真的很快,距離上一次寫的試用期的心得已經兩年多了,如果還沒看過的朋友也歡迎看看。

寫這篇文章是想記錄一下自己價值觀的轉變,條列一下在職場上學到的軟實力,還有一些很夢幻和讓我感到驕傲的成果,歡迎大家跟我一起回顧這三年的成長!Let’s go 🚀

那些我學到的事情

自律就是自由

先來聊聊這邊的工作模式,目前 Android Team 有 12 個開發者,有 4 個在新加坡,其他則是遠端工作,疫情開始之後大約有 90% 的時間都是在家工作,除非有同事約才會進辦公室,所以遠端工作已經成為我們公司的文化了,會議也成了很重要的溝通橋樑,我們很努力的在維持品質,一次不超過一個小時,就連行事曆上也是設定 45 分鐘,讓有連續會議的人有時間休息。

我們原則上不加班,承諾的事情有做完,同事的 code 有記得 review,稍微動態調整工作時間不會有人管你,邊出國旅遊邊遠端工作也沒問題。疫情肆虐已久,我終於要在 11 月去泰國旅遊了,把年假清一清充個電,到時候也會帶電腦到那邊遠端工作一陣子。

很幸運的,我們這行的工作模式很單純,只需要一台電腦跟穩定的網路就能工作,同事間也是基於互信原則下去合作。我很享受這種自由,也努力的做好自己的本分,因為我知道這份自由的背後是需要強大的自律來支撐的。

追查和解決問題的能力

經過了無數次追查 bug 的經驗,整個流程在我的腦中默默地轉變成了一套 SOP,而這套 SOP 不只適用在工作上,我也會用來檢視自己的心理狀態,後面會有一個篇幅聊聊我怎麼照顧自己的心理健康。

  1. 確認問題的嚴重性 (Acknowledge and prioritize)
  2. 找到問題的根源 (Trace to the root)
  3. 把問題連根拔起 (Nip it in the bud)

當我收到一個 bug 回報時(不管是程式或是大腦中的),我會先確認這個問題,真的是個 bug,還是有外部因素介入導致的?

如果是個 bug,接著就是要找到問題的核心,然後從根本上解決問題,說起來簡單,但要怎麼做?

Hint: 面對問題,對自己坦承,這個解決方式能不能說服你自己?

在追查問題時,通常你很有機會在碰到問題的核心前,發現一些看似有效的「變通」方法 (workaround),但往往這些方法只能暫時壓制問題而已,如果你妥協了,在未來這些問題可能會在你意想不到的時間,用意想不到的形式回來找你。

所以永遠要質問自己,這個解決方式我能不能接受?只要有一丁點的不確定,都值得再「投資」一些時間往根源去探索,幫助未來的你省下更多的時間和精力。

談判和協調的能力

這項能力是讓我在工作中如魚得水的關鍵,我來舉個簡單的例子,然後聊聊三年前的我和現在的我分別會怎麼應對。

今天你的 PM 在會議中說,我們接下來要實作一個巢狀回覆的功能,我們希望能讓使用者有更多的互動。接著,你看了一看現有的留言功能的程式碼,發現擴展性不夠去延伸實作巢狀回覆…

三年前的我,會直接把頭洗下去實作,原因是我不想讓我的 PM 失望或是影響到產品的時程規劃。但我能預見的後果是,這是個複雜的功能,即使順利完成了,我們還是需要花很多時間維護,因為這是基於擴展性不夠的情況下做出來的,所以技術上來說是個易碎的功能。

其實這是個真實的例子,我去年在產品上實作了這個功能,有興趣的人下面還有一個小篇幅。

Hint: 站在對方的立場思考,提出務實的解決辦法

我在當時的會議中提出了這個擴展性的問題,並告訴我的 PM,我知道他的出發點是想爭取更多的使用者互動,但正因這是攸關使用者互動的功能,如果不穩定的話很可能會造成反效果。接著我提出了解決辦法,請我的 PM 給我兩個禮拜的時間,朝著這個功能的方向重構程式碼,再開始實作。

而正是因為我選擇了去跟我的 PM 談判和協調,爭取到更多的時間實作這個功能,所以這一年來我完全沒有收到這個功能的 bug 回報,對公司來說,這兩個禮拜的投資很划算吧!

獨立思考的能力

新加坡是個文化大熔爐,本地人只佔了總人口的 60%,其他則是外籍工作人士和永久居民。所以自從來到這邊之後,幾乎每天都在接受生活和職場文化的衝擊。

我很喜歡跟我的同事聊教育體制,學生時期都在做什麼,每次聽到比較開放的教育方式都會覺得,哇!原來學生能有這麼多時間探索自己喜歡什麼,在人生道路上需要做決定的時候,能夠自信的做出選擇。

雖然說台灣的教育體制是「唯有讀書高」導向,但我一直以台灣人的真誠和勤奮為傲,我常跟我同事炫耀台灣的人情味有多濃厚,畢竟身為公司唯一的台灣人,我說什麼他們都會照單全收,當然要好好把握機會做國民外交 🤪

總而言之,我很享受這種文化的衝擊,常會讓我反思成長過程帶給我的影響,我認為沒有什麼事情是理所當然的,人格特質、行為模式、思考邏輯都和我們的背景環環相扣。沒有任何一種文化是完美的,不需要怨天尤人,只要用心觀察,獨立思考,你會看到不同文化的不同面向,而這些發現都會成為我們成長的養分。

別小看心理健康的重要

在這個科技發達、自媒體活躍的時代,我們很容易會資訊過載,導致沒辦法控制自己的大腦,該休息的時候停不下來,需要運轉的時候又感到疲乏。

我在工作時常處在高壓的情況,而心理健康就成了能不能穩定產出的籌碼。這三年來我的心理健康亮了幾次燈,而今年我決定要為自己做點什麼,於是預約了幾次的遠端視訊諮商,跟諮商師聊了自己的成長背景,和工作上遇到的焦慮,我很開心做了這個決定。

諮商過後,我發現思想和行為模式是有跡可循的,某些小時候早就被我們淡忘的事情,竟然深深地影響著我們的思想和行為。諮商師的角色很特別,他並不是給予你建議或是教你該怎麼做的角色,而像是手把手帶你探索成長歷程的陪伴者,有耐心的以你的視角帶著你回顧那些忽略的細節。

目前我靠著規律運動和正念冥想,滿有效的照顧自己的心理健康,分享一下我的習慣給大家。

運動習慣:星期一、三、五游泳,二、四、六上健身房,星期日休息。我習慣早上運動完沖個澡再工作,運動會有效分泌多巴胺讓你的心情感到愉悅,身體素質提高後,久坐身體也比較不容易不舒服。

正念冥想:我會聽 Spotify 上面的 Meditation Minis Podcast 指引,有一部 Netflix 的冥想正念指南也很好入門。我喜歡在上班前或是睡覺前這兩個時段冥想,上班前冥想的好處是可以讓一整天的思緒比較清晰,而睡前冥想可以有效提升睡眠品質。

我在 BandLab 留下的足跡

這個章節比較偏技術,有興趣的人可以繼續往下讀

BandLab Android app 有超過千萬次的下載,每次想到自己開發、維護的功能會影響這麼多使用者就覺得很夢幻,好像用著我的微薄之力默默地在改變這個世界!下面我整理了幾項這三年比較有心得的成果跟大家分享一下。

實作複雜的巢狀回覆功能

Nested replies in light/ dark mode

正如大家在 Facebook, Instagram 和其他社群平台上面看到的一樣,我去年也在 BandLab 實作了這個功能,在實作之前我就有心理準備這是個很複雜的功能,需要處理很多不同的回覆狀態,例如分頁載入回覆、在尚未載入完的情況下回覆、送出回覆的時候母留言已被刪除等,諸如此類的狀態處理。

我記得當初我花了一整天的時間,只拿著紙筆畫下所有我能夠預想到的狀況和應對方式,簡單的跟我的 Team Lead 報告一下我的實作方向,確認沒有大問題就開始實作了。可能因為我已經沙盤推演了所有我能想到的情境,所以實際實作大概一週就完成了,後續也花了一些時間寫測試,確保一些較複雜的處理不會被同事或未來的自己弄壞。

重寫媒體播放系統,和 Google 第一線工程師的交流

BandLab’s notification player UI on Android 13/ Player reconstruction pull request overview

去年底,我們深受媒體播放系統的技術債所苦,舊的播放系統已經三年左右了,當初寫的人也離開了公司,所以每當有問題出現都只能東補西補,補完了又會出現新的漏洞。

於是我提議了要重寫這個核心功能,並且採用剛上 alpha 第一版的 library,接著就開始了兩個月左右的漫長路程,一邊讀著 library 原始碼,一邊串接。因為 library 還非常的不穩定,所以開發期間我回報了不少 bug 給 Google 第一線的工程師,也和他們溝通了哪些地方可能可以怎麼做讓開發者更方便,最後看到 bug 被修復,意見被採納後真的覺得好夢幻!

最後我用了比舊系統少了兩千多行的程式碼完成了新系統,寫了詳細的註解,也和 Android Team 做了簡報,確保大家知道新系統怎麼用和維護。

這是其中兩個我回報的問題和建議,貼在這留存一下,希望以後自己看到還是會想起當初興奮的感覺。

菜鳥面試官

從去年五月開始,我被 Team Lead 邀請加入了面試的行列,我依舊記得收到邀請那份興奮和緊張的感覺。目前總計面試了 34 位來自世界各地工程師,最近還在緩慢增加中。

雖然每次看到很資深的履歷都會覺得,我憑什麼有資格面試他們?甚至有時候冒牌者症候群作祟,可能表現的比面試的人還緊張,但平心而論這真的是很棒的學習機會,我很享受每次面試完跟 Team Lead 1 on 1 的討論,也稍微知道從領導者的角度,一位好的開發者需要具備哪些特質。

久而久之,我慢慢對一些國家的文化有了一些認識,比如說俄羅斯的工程師真的普遍優秀,我也問過 Team Lead 原因(他也是俄羅斯人),他跟我說這跟教育的關係不太大,主要是整個產業的水平很高,社群也很活躍,後浪推著前浪,他即使在我眼裡已經是大神,還是每天學習新知,我只有滿滿的尊敬跟崇拜,也很珍惜跟他一起面試的時光。

小結

三年了,當初沒有幫自己設定目標,但真的沒有想到能走這麼遠。我很感激當初 BandLab 願意錄取一個只有實習經驗的 23 歲小伙子,提供我一個學習的環境,看見我的能力並如此重用我,也很感謝這一路上提供我養分的所有貴人。

永遠不要小看自己

人的適應力和潛力真的很神奇,當你踏出舒適圈,好像再怎麼困難的情況都有辦法迎刃而解,雖然難免會產生自我懷疑,但是只要每一步都踏踏實實地走,有天回過頭看,你會發現你走的比你想像中的還要遠。

感謝願意花時間陪我回顧這三年的大家!歡迎加我的 LinkedIn,或是追蹤我的 Instagram,下次見!掰掰 👋

https://www.linkedin.com/in/kevin-chiu-763a6215b/

--

--

邱懷民
一個被音樂耽誤的Android工程師

喜歡抱著吉他彈彈唱唱,夢想是靠著寫程式改變世界。