作為工程師在台灣 foodpanda 工作半年來的心得 (中)

Chih-Hao Yang
12 min readAug 15, 2022

--

credit: Delivery Hero

作為工程師在台灣 foodpanda 工作半年來的心得 (上)

作為工程師在台灣 foodpanda 工作半年來的心得 (下)

前言

本文單純為記錄個人心得,任何提及德國 Delivery Hero 公司本身與其旗下品牌(包括但不限於 foodpanda)的內容,均是以個體工程師職員身份獨自撰寫且具有強烈主觀個人經驗、感受理解絕不代表企業立場。
溫馨提醒,任何言論有其責任,本文也為其主觀言論所負責。

Disclaimer [All opinions are my own]
Any references to Delivery Hero itself and its relevant brands (including but not limited to foodpanda) are based on personal experience, feelings and understandings, and can not represent the views of Delivery Hero.

價值、個人與組織

常有人說,企業文化非常重要,良好的風氣可以讓你招募到有相同價值觀的良好員工。但反過來說,群體是個體的集合,也正因為創始之初的那群人有著相同信念才誕生出這家公司。

我其實不會用先有雞還是先有蛋來形容這件事,而是個人與組織是相輔相成一起成長的,其核心還是圍繞在「人」身上。我深信做為組織內的一員,你絕對能感受到組織對你是否重視,以人(員工)為本創造一個快樂的工作環境,絕對能加深對組織的熱情和向心力,並主動想讓組織更好。

那怎樣能算快樂的工作環境?以我自己來說,我會重視的幾點是:
1. Salary
2. Duties
3. Colleagues
4. Commuting
5. Overtime
6. Culture

這些都很主觀,像是多少錢算多算滿意因人而異,一份錢很多但要通勤三小時、天天加班的工作也有些人喜歡有些人不喜歡,所以我只就個人感受說明。

1. 薪資: 在台灣軟體業內絕對是前段班水準,當然也還有很多優秀的選擇,去年年底我也是與 U 社間做最後決定,最終考量點蠻大一部分是英文環境和內容會服務到更多用戶。
2. 職務: 依照功能來切分 squad 並投身其中進行開發,但其實能做的事情可以很多,取決於你想怎麼 contribute,要多花時間思考你的 impact。
3. 同事: 可能大家會以為同事就是抽獎,運氣不好就會有很機掰的同事,其實不全然。因為面試中的 culture fit 環節就是為此而生,雖然有例外,但在開放文化跟良好溝通的組織內部你可以想見大家都是 open minded and easy to communicate,然後偷幫前前東家廣告一下,上一家我很喜歡的是在 Alfred Camera
4. 通勤: 台灣人是世界上通勤忍受度最低的國家之一,不像美國日本動輒一兩小時的通勤,我自己的接受度只到40分鐘,超過就會覺得每天光來回通勤就浪費掉很多生命,所以現在的 remote policy 真的很棒。
5. 加班: 要做多做少看你自己,什麼時候做事也是,用一個詞來說就是責任制,但我觀察下來的 workload 除了 EM/PM 外應該都是有餘裕的範圍。
6. 文化: 詳見下節。

文化 (foodpanda values)

台灣辦公室一隅

foodpanda 有七個核心價值,這些價值確實幫助了 foodpanda 持續往好的方向前進,以我過去作為用戶的體驗來說,系統真的沒那麼穩定。但現在一樣作為用戶,除去外送員不足的情況,我已經幾乎沒再遇到系統問題導致的訂單失敗。我相信 foodpanda 進步來自這些價值,也同時能讓你卓越。

Get 1% better every day

持續學習 (包括讀書、聽 podcast、參加課程等),並積極尋求他人的 feedback 且對其抱持開放態度並採取動應行動來改善。

Decide fast, take risks, get it done

不害怕在沒有完整資訊的情況下做出決定,並且坦然面對失敗,將失敗視為學習的機會並能從中找出能學到的。

Own it

追求責任感,end-to-end ownership,沒有所謂多一事不如少一事。

Stay humble

承認自己的不足並願意學習,尋求他人 feedback 以進步。

Win through diversity

人人平等,避免無意識的偏見,每人的意見都很重要。

Create magical experiences

注重終端用戶的體驗,讓事情變得更好的動力,創造能讓同事有動力的愉悅環境。

Launch moonshots

如同登月任務般,相信它能做到並永遠樂意嘗試新事物,也永遠思考怎麼把事情做的更好。

實現

每間公司都有自己的價值,但如何不流於口號跟形式取決於怎麼貫徹。
foodpanda 採用了 OKR 模式也多少呼應了其中幾項價值,首先這裡很鼓勵員工找到自己想做的事情並期許你對它的 ownership,唯有當你對它懷抱熱情才會做的好。
另外公司目前也每年會舉辦兩次的 hackathon ,並相當重視這個活動,為期兩天讓你放下手上沒有這麼緊急的 task,找到志同道合的夥伴一起實作和 demo。我在六月的時候就參與了 summer hackathon,真的是很有趣的體驗,橫跨了所有 TechHub (德國土耳其新加坡跟台灣)的人都投入其中,甚至在 deadline 當天跟同事們一路在公司待到大樓關燈了還在摸黑彩排XD

黑客松也是趁機跟大家實體見面吃午晚餐的時機

除此之外,請人 review PR 算是 RD 的日常工作,但在我過往經驗其實都單打居多,所以我一開始不是很習慣別人留下 comment 問為什麼我這邊要這樣改。我想,亞洲文化裡潛意識會猜對方這樣問,是不是心中已有答案並覺得你做錯了才這樣問,又亞洲文化很委婉不直接,中日文裡都有很客氣的問法,而英文很直接可能也是原因。(我看下來好像就台灣人很愛用 Could you please 跟 would you mind doing something,然後滿滿的 thank you,其他人都 can you do something)
但實際上他們真的只是想了解你的想法,因為回答完以後有兩種可能,對方了解了並 approve,或是給予你其他建議繼續討論。
我自己的心得是,不要期待事情都有正確答案,雖然可能是一直以來的教育教我們追尋的,或是希望有個具有足夠分量或權威的人跟你說哪樣是對的。但其實答案來自討論,像我有時也跟其他工程師會有想法上的分歧然後辯論並享受這過程。

對工程師這種數位生物來說事情大部分非黑即白,是什麼就是什麼,
但只要跟人有關的事物就絕對不會有標準答案跟 true/false
We have the flexibility of providing our opinion and accepting the others’

A Typical Day At Work

What’s it like to work at foodpanda?

面試時很好用,常拿來問面試官的問題,而我自己是面試者時通常會改成問: 「What’s your typical day(daily job) at ___?」「How would you describe for being an engineer at ___?」
雖然我以前也曾擔任過面試官的角色也回答過這個問題,但我最近對這個問題的體悟是,除非對象是整體文化和風氣相近的公司,這個回答才較能代表公司,否則只代表了所在的部門。因為我們常常看到同一家公司不同部門不同主管就讓風氣差距甚遠,更多的是同一家公司會有人抱怨別的部門都準時下班自己的部門很操等等。

當然我是認定這裡絕對是屬於風氣相近的公司,所以會以這個方向來回答。
We’re dedicated to keep everyone on the same page by spending a lot of time on chapter meetings/town halls/activities.

Technical stack

在上篇有介紹到目前主要這裡有四種工程師職位,目前所用到的技術/語言/框架/工具大致如下:

Android: Kotlin, Java, MVVM, Coroutine, Espresso
iOS: Swift, VIPER, Swinject
Backend: Go, PHP, AWS, Kubernetes
Frontend: JavaScript/TypeScript, React.js/Redux, Jest, React-testing-library, Cypress
Common: GitHub actions, Google Analytics, Datadog, Sentry, Firebase, Kubernetes, Docker, Nginx, AWS S3

Title

上篇其實有稍微提到 foodpanda 分為 IC track 跟 M track,簡單介紹一下工程師的 level。
IC1: 目前公司大部分的 IC 1 來自前幾個月 campus hire。
IC2: 占比最高,多半同事都是有 3~5 年甚至以上經驗,職稱原先可能都是掛 senior 的。
IC3: 掛 senior 職稱的等級。
IC4 和 IC5 目前台灣這邊還沒有

其實 senior 在 foodpanda 的條件來說相對嚴格,可能技術程度是足夠的,但還需要很多軟實力,如 mentorship: 要能(且有機會)帶領 IC1 和 IC2 的工程師們; impact,不會只是 squad level 的事情。
撰文當下多數同仁均到職未滿一年,所以目前尚未有 IC2 升 IC3 成功的案例。

Development

Meetings: 以敏捷開發為基礎,涵蓋 planning / refinement/ retrospective 會議,而需求又會遵照每個 team 的 OKR 來 prioritize,中間也仍有可能有緊急需求甚至 bug 修復(但較少)。
雖然之前組織架構有所調整,目標可能會讓同一個 squad 都是由同一個 Tech Hub 的人組成,但目前台灣 Tech Hub 的日常如 Daily stand-up meeting 或是 Slack messages 都還是純英文環境,跟其他 squad 的互動都算頻繁,而且如果你是比較有野心的人,其實會更積極參與 chapter level 的事務如每週 chapter meeting 以及技術分享,所以英文環境對你是加分項的話不用太擔心,(我自覺英文程度也是來了這裡後越來越好)。

Story point: 估算法各自 squad 通常會自己定義,就像前篇所提到,這邊的自由程度很高,也代表了很大程度的自主,並沒有一套強硬規定要你做什麼或不做什麼。

Development & Code review: 開發上採用 GitHub flow,並且需要 code owner 的 approval,但比較可惜的是,目前基本上沒有人有空定期去 review,所以開發完你的 branch 後你需要挨家挨戶的去找人幫你 review。(如果不這樣的話牽扯到歐洲 squad 的可能會等到天荒地老XD)

Release: iOS 跟 Android 是錯開的隔週 release,前後端則是有個自架的簡易介面提供選擇 docker image 進行各個 region 的佈署,docker image 則是在每個 PR merge 後自動產生,都不用透過指令操作,rollback 也相對容易,簡化了步驟也降低出錯機率。

值得一提的是,foodpanda 並不會把你的開發量能塞滿,而是留下約 50% 的時間鼓勵你找出自己想做的事情,或是有什麼方式可以讓你貢獻公司。我一開始其實不太習慣這種模式,畢竟以往就是收什麼任務做什麼事型,所以從加入至今,多很多時間可以思考自己要做什麼、想做什麼,甚至我覺得已經變成大家需要主動找事情做,到搶事情的程度XD,而我最近打算投入 component library 的開發。
我覺得這也是為什麼目前大部分同事都對 foodpanda 有愛的原因之一,讓工程師做喜歡的事情也讓他更喜歡公司,I didn’t believe that there’ll be employees jump to company’s defense until I joined here。

此外,很多想法其實是來自每周跟 EM 進行 1:1 對話的啟發,我也很感謝我的 manager 常常能提供我一些不同觀點並鼓勵我做我想做的事情,他過往在公司正對面防毒 T 社帶的 team member人數動輒超過 30 個,所以他也說現在只要帶10人內,正努力提升 1:1 品質。

結果上中篇好像都沒有很心得,只(有限條件下)介紹了一些內部狀況跟文化,因為網路上是真的沒有這類資訊啦,希望多少幫助其他人了解 foodpanda 的工程師在做些什麼。
話說之前公司內有份員工問卷是問會不會推薦其他人來這裡工作,我的答案是 Absolutely yes (笑)

Though we are not now that strength which in old days
Moved earth and heaven, that which we are, we are,
One equal temper of heroic hearts,
Made weak by time and fate, but strong in will
To strive, to seek, to find, and not to yield.
- Ulysses, Alfred Lord Tennyson

--

--

Chih-Hao Yang

軟體工程師,相信人與人的互信和理解讓世界前進。