每周分享第 20 期

最後下班的人,先離職

前陣子在書店架上看見一本書,書名是《最後下班的人,先離職》。

雖然標題有點殺人,但是翻了幾頁之後,還是勾起了我出社會第一份工作的一些回憶,那段總是最後一個關辦公室燈火的日子,雖然不是因為這個理由離職,但現在回想起來,真的很不健康。

換了一份工作之後,開始注重起「時間管理」,學習如何在有限的時間內,完成無限的任務。

最近,因為有位同事過不了這個檻,離職了。所以想藉著這篇文章,討論什麼樣的組織架構、人力配置、合作方式,才適合快速擴張中的新創公司。

為什麼常常加班?

大部分的人認為,超時加班是公司或管理階層該解決的問題,但員工其實也是當事者之一。

要解決這個問題,就必須先掌握「為什麼常常加班?」的本質原因。

《圖解思考的本質》一書中,科學地分析了一個人常常加班的原因
《圖解思考的本質》一書中,科學地分析了一個人常常加班的原因

加班的理由通常可分為兩大項,首先是因為某些緣故,導致想下班也「無法下班」,其次是其實可以下班,卻「不下班」。

先就「無法下班」來思考。一般而言,會造成這種現象的理由可能包括「不能下班的氣氛」(例如最近很火的 996)、「工作做不完」、「需要待命」。

其中「工作做不完」這點似乎還能繼續探討背後的原因。比如「工作負荷太重」,任務多到在上班時間內做不完。另一個原因是工作量正常,但是「工作效率不彰」,可能是「團隊的進度拖延」,也可能是個人的「工作方式有問題」。

接著針對「不下班」的問題,把所有想得到的理由全部列出來。「熱愛工作」、「想賺加班費」、「回家也沒事做」。這三個原因之中的「想賺加班費」,還有可能是因為「薪水太低」,或是薪水不錯,但「需要更多錢」這兩個理由。

整理所有原因或理由之後可以發現,在各種常常加班的原因之中,摻雜著「職場問題」與「個人問題」。


本文不探討諸如「熱愛工作」之類的個人問題(熱愛工作你還會離職?)。

焦點放在職場問題:

  • 不能下班的氣氛
  • 需要待命
  • 工作負荷太重
  • 團隊的進度拖延
  • 薪水太低

要快、要好、要便宜

一個成功的專案,通常有三個要素:

  • 完成的時間要「快」
  • 完成的成本要「便宜」
  • 完成後的品質要「好」
專案管理的三角難題「魚與熊掌不可兼得」
專案管理的三角難題,魚與熊掌不可兼得

如果老闆們希望「要馬兒好,又要馬兒不吃草」,通常會得到一個「做夢」的答覆。

但是換個角度想,如果你的團隊能夠達成呢?贏過競爭對手的機會是不是又多了一分?

夢想還是要有的,萬一實現了呢? — — 馬雲

網站和遊戲的產品特性不太一樣,開發的方式也有所不同。

開發一款遊戲,通常是在決定好上線日期之後,就可以開始一段不受干擾的完整開發週期。上線之後,就繼續下一款新遊戲的開發。

但是網站不一樣,網站是從一開始就在線上的產品,需要一直不斷迭代,除了開發團隊自己的開發週期要顧好之外,隨時還會有來自其它部門的額外需求。如果加上又是新創公司,那麼可以想像開發團隊平時手忙腳亂的場景。

這位離職的同事是一位 PO(Product Owner),他需要面對來自三方的壓力:

  • 老闆 → 公司有既定的目標要完成,這些會轉化為開發團隊的績效(KPI)
  • 外部團隊 → 額外的需求,例如客服人員回報的 bug、行銷團隊希望幫忙查詢的資料,或是因為主機掛掉,業務無法向客戶交代之類的問題
  • 內部團隊 → 技術債、想要重構、對架構選型的意見、找不到有權限的人、資源被拉走導致進度拖延等問題

如果碰上個性不擅長指派人力,那麼壓力就會都扛在他身上,久而久之承受不住,就離職了。

三角貿易

三角貿易(英文:triangle trade)起源於 16 世紀的歐洲。最著名的是歐洲,西非以及美洲之間的大西洋三角貿易:

  • 歐洲 → 西非:酒精、軍火、紡織品等工業製品
  • 西非 → 美洲:奴隸
  • 美洲 → 歐洲:貴金屬、礦石、蔗糖、菸草、咖啡、可可、糧食等農產品及原材料

回來看 KPI 這件事,一間公司的績效量化指標通常可以歸類為三種,剛好對應專案管理的金三角:

  • 品質 = 要好
  • 時程 = 要快
  • 營收 = 要便宜(營收提高,相對成本就下降)

因此,我建議可以將團隊分為三個 team:

  • Cheap Team → 負責替公司帶來營收(money)
  • Good Team → 負責解決產品品質問題(quality)
  • Fast Team → 負責加速公司運作(time)
「三權分立」,碰到問題知道要找誰,而不是都找 PO 或少數幾個人
三權分立,知道碰到問題要找誰,而不是都找 PO 或少數幾個人

Cheap Team 負責:

  • 公司長期目標(Roadmap)的新功能(Feature)開發

Good Team 負責事項:

  • 來自產品本身的需求(例如:客服回報的 Bug)
  • 撰寫測試案例
  • 重構技術債

Fast Team 負責事項:

  • 其它額外的需求(例如:資料查詢、埋追蹤事件)
  • DevOps,將日常瑣碎的事務自動化
  • SRE,基礎設施的維護(例如:主機掛了、流量爆了)
  • 活動網頁

當然,這樣的分配可能會造成「被分配在某個 team 的人沒有成就感」的問題,所以可以根據團隊的特性調整,例如每一季輪調一次,這樣一來除了可以解決倦怠感,二來透過輪流,還能夠讓不熟悉相關事務的人可以去向他人請教學習,達到溝通交流的目的,也解決「這個業務只有他會,所以每次都找他」或是「萬一他離職了怎麼辦?」的問題。

另外,這個機制也可以解決「需要待命」的問題,例如 Fast Team 要在主機掛掉的時候即時反應處理,如果每次都是同一批人,那日子累積久了,就會出現下一個離職的人。

如果有的人只想做某件事,那也可以不參與輪調機制,但必須守規矩專注該項業務,否則可能會造成「團隊的進度拖延」問題。


解決了「需要待命」和「團隊的進度拖延」的問題之後,接下來看「薪水太低」與「工作負荷太重」的問題。

加薪一般來說透過兩種方式:

  1. 增加底薪
  2. 增加獎金的抽成比例

然而這兩種方法的都需要靠「晉升」才能辦到。

目前比較主流的晉升體系是「雙通道」,根據員工的適才適性,分成兩種管道:

  1. 面向專業的 Individual Contributor,簡稱 IC
  2. 面向管理的 People Management,簡稱 M
Oracle Career Levels https://www.levels.fyi/
Oracle Career Levels

以 Oracle 這間公司為例,IC-3 的資深工程師可以往 IC-6 的架構師發展,M2 的 Manager 可以往 M6 的 VP 努力前進。

這一切看起來都很美好,喜歡搞技術的,可以持續專研精進自己;擅長與人溝通、協調資源能力強的人,可以往管理職發展。

但是亞洲的職場環境,通常鼓勵員工往管理職發展,一來獎金分配的比例比較高,二來職稱也比較好看(經理、總裁、總監聽起來比工程師、架構師還高大尚)。

導致許多 IC 紛紛往 M 發展,造成原本個性不適合管理的人栽在手上,結果就是兩條路:

  1. 大家都來當 M,沒人做事了
  2. 一切自己來,最後變成「工作負荷太重」

要解決這些問題,就會走上「淘汰」或「離職」兩個選擇,造成管理職位出現空缺,需要填補,最後又還是回到鼓勵大家應該往管理職發展的惡性循環。導致出現「〇〇歲還是工程師沒升管理職,這個人是不是有什麼問題」之類的價值觀。

我不否認管理職的重要性,但是領導能力強的人本來就很稀缺,如果職場的制度是鼓勵你往管理晉升,而不是留住有價值的人,那麼這間公司最後都會浪費時間在內耗上面。

雙首長制

每逢選舉時日,這個國家的在野黨候選人就會提出要廢除「雙首長制」,主張改成「總統制」或「內閣制」。但是政黨輪替之後往往就不了了之,因為當總統實在太爽了,位於行政及立法之上,可以不受立法限制。

扯遠了⋯⋯

如果說「三角貿易」解決的是來自 PO 右側,屬於外部的「工作負荷太重」問題,那麼接下來要提到的「雙首長制」組織架構,是我認為可以解決來自 PO 左側,屬於內部的「工作負荷太重」的一種方法。

以 CPO 為首,產品開發團隊由 PO 和 Tech Lead 帶領,分別負責產品的「時程」管理與「品質」的管理,一個專注人,一個專注事。

PO 的負責範圍:

  • 產品設計(掌握使用者要什麼)
  • 時程管理(確保任務是在前進的)
  • 資源協調(溝通、排除任何會阻礙前進的問題)

Tech Lead 的負責範圍:

  • 架構選型(設計一套適合當前目標,並且未來也保有彈性的解決方案)
  • 風格一致(參與初期的 Code Review,確保團隊不會在小問題上起爭執,例如:airbnb-style or standard-style)
  • 權限控管(分配適當的權限給適當的角色)
  • 任務規劃(與 Engineer 討論,切分 User Stories)

如果找不到合適的 PO,也可以先從 Designer 搭配 Project Manager 開始,一個負責產品設計,一個負責管理時程和協調資源。

至於這裡不設立 CTO 的原因,我認為以台灣產業短視近利的尿性來看,還是以 CPO 為主會比較務實。如果是新創團隊,那麼迭代的腳步會更快,CTO 與 CPO 並存什麼的猶如天方夜譚。我曾經在《殺雞用牛刀》這篇文章探討過 Google 的工程導向文化和 Facebook 產品導向文化,且先不說台灣,即便是灣區,大部分的新創初期都是在燒錢,很少有時間給你搞技術,隨便一句「先求有再求好」就可以讓你掉棒妥協,至於是不是之後真的會求好,亦或是繼續再求有,就不得而知了,因為很少有新創可以活過五年。


總結一下,離職的原因千百種,其中較常見的理由是「常常加班」。而加班的原因主要可以歸納為「個人問題」與「職場問題」兩種類型,本文主要在探討如何解決屬於職場的問題。

透過「三角貿易」的概念,將團隊劃分成負責加速運營的 Fast Team,負責品質的 Good Team,以及負責營收的 Cheap Team,解決「要快、要好、要便宜」的三角難題。

Cheap Team 專心開發能為公司帶來營收的新功能,其它額外的需求交給 Good Team 和 Good Team 去折騰,避免有團隊成員開發到一半被抓去做其它事的窘境,解決了「團隊的進度拖延」問題。

其中將最容易發生「需要待命」的任務限縮在 Fast Team,讓外部人員知道碰到緊急狀況要直接找誰負責,解決 PO「工作負荷太重」的問題。另外透過每一季輪班的機制,避免壓力都落在幾個人身上,解決 Engineer「需要待命」的問題。

最後是在 CPO 負責的產品團隊底下,設立了 Tech Lead 和 Product Owner 並行的「雙首長制」,Tech Lead 負責維護開發品質,適合讓喜歡專研技術的 IC 當作晉升目標;Product Owner 負責管理資源和確保產品有走在時程上,適合擅長溝通協調的人發展。晉升體系如果完善,就有了明確的努力方向,那麼因為「薪水太低」而離職的人或許也會降低。

至於因為「不能下班的氣氛」而加班的人,我認為還是儘早離職比較好。或許有另一種解法,阮一峰曾在他的文章中提到:「程序員要做的不是反對 996,而是提倡遠程辦公。」

自由與秩序該如何取捨?

最近因為巴黎聖母院事件而爆紅的遊戲《刺客教條》,當中刺客集團對抗聖殿騎士的故事不禁讓我有所思考。上個世紀,集權專制帶來的慘痛教訓,如今這個世界上大部分人,似乎都認知到絕對秩序會帶來壞處。追求自由,已成了我們這個時代最大的政治正確。

但是,沒有秩序的自由毫無意義,追求片面的自由與追求絕對的秩序同樣危險。專案管理的方法論不斷推陳出新(Waterfall、Agile、Scrum、Kanban、KPI、OKR),但是有些團隊能成功,有些卻不總是那麼順利。會不會其實問題是出在人本身而不是管理方法上呢?

什麼是笨?就是每次採取一樣的行動,卻期待不一樣的結果,這就是笨。人在一起是團伙,心在一起才是團隊。 ——《第五項修練》