職稱重要嗎?在眾多求職眉眉角角中,職稱是其中一門沒有標準答案的大哉問。根據職能、企業本身狀況、產業特性不同,有時職稱與工作內容的相符程度可能不如我們的想像,不過整體而言,隨著資歷增加,追求職稱的成長是大部分人的理想的職涯規劃。對於工程師而言,從 Junior Engineer、Senior Engineer 到 Product Manager、Engineering Manager、CTO 等等,從專注寫程式到管理技術團隊,似乎是一個理所當然的職涯成長。

然而,《科技職涯》第二季第 17 集的來賓 Ronald,則是走了一條不尋常卻很有趣的道路。從五專時期奠定對程式語言的熱愛,後續插大、攻讀研究所,畢業後於數間新創歷練,接著共同參與創辦了知名的群眾集資顧問「貝殼放大」並擔任 CTO。看似一路投入新創領域,Ronald 卻在創業近五年後來個職涯大轉彎,加入新加坡的 Carousell 成為 Senior Software Engineer,之後又前往荷蘭的 Uber 擔任 Senior Software Engineer

從 CTO 轉為 Senior Software Engineer,似乎與常人所規劃的職涯發展背道而馳。想知道為什麼 Ronald 做出這個有意思的決定嗎?想知道在荷蘭的 Uber 工作是什麼樣子的嗎?對於海外求職、工程師職涯規劃有興趣的聽眾與讀者,推薦你這集發人深省的《科技職涯》Podcast!

Podcast 各節摘要

03:55  Ronald 當初是如何加入 Uber 的?
11:00   準備 Uber 的面試跟其他企業有什麼不同?
15:55   Ronald 在荷蘭 Uber 負責的是什麼產品?
16:10   在荷蘭的九個月有什麼有趣的觀察?
20:05  如何拿捏 detail-oriented & agile?
22:35  公司規模對於維護系統有什麼影響?
26:05  在荷蘭時,有感受到公司對於 Sr. Engineer 的期待跟亞洲有什麼不同嗎?
29:05  就 Ronald 的觀察,不同地區的開發文化有機會導入台灣嗎?
30:25  Ronald 當初是怎麼決定要創業的?
32:45  作為新創的 CTO 最大的挑戰是什麼?
35:10   為什麼決定卸下 CTO 身份加入大型公司擔任 Sr. Engineer?
39:40  不同階段的產品、公司對於工程師的成熟度培養會有什麼影響?
41:20   Ronald 對於曾經做過的職涯決定有任何想要調整的嗎?

在荷蘭的 Uber 工作是一種怎麼樣的體驗?

坦率誠懇的 Uber 面試經驗

2019 年,正任職於新加坡旋轉拍賣的 Ronald,為了尋找新機會、兼顧家庭並同時系統化地審視、加強自己的能力,他為自己規劃長達半年的轉職與面試準備。此時的 Ronald 已經擁有新創與中型公司 Carousell 的經驗,發現在工作中遇到的許多問題似乎很難自己找出答案,因此很期待能有機會加入大型企業尋找解答,也在這個時候收到了 Uber 的面試邀約,共計 5 輪:

Phone Interview

兩次電話面試,包括 System Design、Coding,最讓 Ronald 印象深刻的是 Uber 的 recruiter 一字不漏地給了他面試官的 feedback,並說明 Uber 了解他所出的小紕漏是因為緊張、並非能力不足,更鼓勵他在 Onsite Interview 時可以改善。同時,因為應徵的是 Uber 內部負責 platform 的職位,Uber 的 recruiter 也針對 Ronald 過去的 payment 相關經驗多作著墨、仔細地記錄了下來。

Onsite Interview

共分四部分—Bar Raising、Manager Interview、Coding Round、System Design,在一天中完成。

  1. Bar Raising:類似 Behaviour 的測試,為了避免特定團隊的工作文化造成偏誤,會找其他團隊的工程師協助面試,通常是在公司內已有一定資歷或是成就的同事。
  2. Manager Interview:接近聊天,分享過去的經驗。Ronald 事先做了不少功課,並在此關主動詢問 Uber 是怎麼解決過去 or 預計如何解決未來將遇到的問題。
  3. Coding Round
  4. System Design

雖然在其他關都表現不錯,但 Ronald 因為沒有寫完 Coding Round 的題目,因此多增加了一次的技術測驗,約兩週後於新加坡遠端面試,最後也順利拿到 offer,加入荷蘭 Uber 擔任 Senior Software Engineer,負責 Uber 所有業務的 platform profile,包括信用卡與銀行資料,是支付功能的重要資料庫。

儘管是辦公室遍佈全球、擁有超過 1 億用戶的大型公司,Uber 的面試仍然很有新創的氛圍,可以感受到人資、面試官都積極且真心在了解求職者、挖掘特點並用心評估彼此的適切程度。

荷蘭 Uber 的開發文化:真正的 Agile

Agile Development(敏捷式開發)是近年很盛行的開發 mind-set,主張在初步的 idea、方向制定後,一邊做一邊建構細節,而非在一剛開始就將所有的計畫和需求擬定完成;保持彈性並及時應對變化,而非循規蹈矩地遵循計畫。

根據 Ronald 在荷蘭 Uber 的經驗,會議的目的通常是質疑問題、確立每個人對於大方向的共識,過度執著於細節和 deadline 會使得會議的進度嚴重落後。Ronald 的同事大多是歐洲人,對於工作都會有很多想法、互動也較為直來直往,有時一邊討論也會一邊延伸出很多其他議題,然而大家都會有意識地聚焦於最重要的方向討論,延伸的主題則會另闢一場專門的會議,而不是無限延長正在進行的這場 meeting。

雖然奉行敏捷精神,在台灣時建立的 detail-oriented 工作習慣也非全然沒有好處。當 Ronald 負責領導專案時,他會在 documentation 的階段進行完整的規劃。對於他來說,在前期、眾人一起討論時專注於核心的目標、文化、方向等面向,一邊實作一邊確立細節,最後再於 documentation 時做通盤的計畫,兩者文化兼顧並視情況轉換,才是最有幫助的做法。

看更多大型科技公司的工作文化: Facebook PM Peter 的產品管理職涯:新創、跨國公司、To B、To C 通通包辦!

非常重視 reliability 的 Uber

Ronald 分享曾經遇過一位面試官談起自身在 Facebook 與 Uber 的經驗:在 Facebook,一個小 bug 對於使用者來說通常無傷大雅,可能會認為是演算法正在調整;但是對於 Uber 來說,卻是嚴重破壞使用者體驗,直接影響 revenue。

因為每個步驟對於使用者完成消費都至關重要,因此 Uber 特別重視 reliability(可靠性)、投注了非常多資源。在 Uber 的工程師都會習慣性進行 load-testing(負載測試),並預留至少一倍的伺服器空間(Over-provisioning),為的就是百分之百確保產品絕對不會在人潮突然增加時產生任何問題、影響使用者的體驗。

Uber 對於 reliability 的重視程度可在 Uber Open Source 中的專案看出端倪,像是自行開發 tracing、matrix、logging 等等,儲存、紀錄的速度比 Golang 原生快五倍以上。對於工程師來說,因為公司願意投注龐大的資源在其中,可以做的選擇也就會增加許多。

Uber 在荷蘭的辦公室

從 CTO 到 Senior Engineer:職涯的轉折是如何發生的?

受到 Bill Gates 的影響,Rolnald 心中一直期待自己能夠做「改變人們生活」的事情,也一直在嘗試新事物、尋找合適的創業機會。2014 年,他和幾個同在 flyingV 工作的同事以及朋友,合作創立了今日亞洲最大的群眾集資顧問公司「貝殼放大」。

追求與磨練廣度的 CTO 角色

作為新創團隊的早期成員,Ronald 除了 coding、帶領團隊建立工作流程與培育成長,也做了 product owner 甚至是 sales。雖然頭銜是 CTO,Ronald 卻也持續投注心力在協助公司營運和成長,此時他的角色並不能單靠寫程式解決問題,他必須思考各部門的近況、在意的事情,並找出其中的機會點。

Senior Engineer:在職涯早期深耕 Individual Track

至於為何選擇離開一手創立灌溉的貝殼放大,加入其他公司擔任 Senior Engineer,其實與 Ronald 的長期目標—加入國際性團隊—有關。如果能夠自己建造一個這樣子的團隊當然是最理想,但是在那之前,加入其他團隊參考別人的作法與答案,也未嘗是一個好方法。

另一方面,則是 Ronald 對於自己作為一名工程是的技術能力要求。工程師的出路不外乎兩個方向:鑽精技術並成為數一數二的佼佼者,或是成為帶領團隊的管理階層。對於 Ronald 來說,他已有帶領團隊的經驗,也認為管理並不急於一時,現階段他反而更希望自己的技術能力更加穩固和出色。而加入大型公司、從其他菁英身上學習,無疑是最有效率的方式。

讓每個經歷幫助未來的自己信手捻來

從兼顧廣度的 CTO 到深入專業的 Senior Engineer,Ronald 認為這樣的歷程能夠幫助他在做決策時更加彈性,既能夠全面地納入整個組織做考量,也能夠根據技術專業在設計產品、系統架構時做細節的評估。

雖是隨著資歷增加每人都會具備的能力,但豐富的 Startup 以及近五年的創業經驗讓「ownership」的習慣深植於 Ronald 的工作日常中。因為將每個公司都當作「自己的公司」,因此會主動系統性、宏觀地思考每一步對其他部門造成的影響,可以更加深入洞察不同職位、職能的同事想法,以及對方作出決策背後的原因。

一如在精細與敏捷的開發文化之間作轉換,Ronald 認為不見得要非黑即白,擁有豐富的資源在腦袋中並能夠彈性運用,才是真正活用了每一段經驗的學習。

延伸閱讀:工程師,你想成為 Tech Lead 嗎?Grindr VP 解析技術主管必備技能

給工程師的職涯思考建議

一直傾聽內心聲音、做出與常人不同職涯決定的 Ronald,是否曾經後悔過?

Ronald 認為,因為自己的決定都是經過完整的思考,所以即使是負面經驗,只要從中找出養分並持續前進,就沒有白費。因此,比起後悔自己做過的決定,Ronald 比較常思考:如果今天有個人跟曾經的他面對一樣的問題,已經走過來的他會怎麼解決?

就像是 Ronald 在荷蘭 Uber 的經歷,在列出一堆解決方法前,最重要其實是先定義問題。

他舉最近一位向他請益如何提升工作熱情的工程師為例。這個問題可能有千百種回答,但 Ronald 則是建議先找出沒有熱情的原因、並從 code review 著手,更深入地了解自己的工作:每一行 code 怎麼寫?有沒有更好的方法?

當突破現狀的表層後,會發現其實有很多可以挖掘的地方、也更了解每件事的重要性。突然之間,值得探索的事物就變得好多好多。

成功也許沒什麼好捷徑,失敗通常也能幫助成長,但是若在追求目標的路上能夠有前輩領導,相信每一步都能更自信肯定。歡迎到 Ronald 的 LinkedInMediumBlog 追蹤他的更多分享,如果有個人的職涯規劃想要請教,可以使用「問問先輩」預約 Ronald 的一對一諮詢!

有問題想要問 Ronald 嗎?前往「問問先輩」讓 Ronald 為你解答「產業現況、職能成長、履歷健檢、模擬面試」四個不同主題!

更多人才的精彩分享,敬請鎖定 CakeResume 的《科技職涯》Podcast!

《科技職涯》是由 CakeResume 創立的 Podcast 廣播節目,專門邀請在科技、數位和新創領域的工作者來分享職涯趣事及觀點,每週三固定更新,目前可以在 SoundOnSpotifyApple PodcastGoogle Podcast 上收聽,歡迎追蹤 🎧