iT邦幫忙

2023 iThome 鐵人賽

DAY 4
2
Software Development

敏捷聖徒系列 第 4

Day 4:「少開始,多結束」-- 談結案與價值

  • 分享至 

  • xImage
  •  

故事是這樣的

又到了每半年一次的跨部門協調會議。按慣例,所有 Team Leader 都聚集在一起,討論未來的半年要做哪些事情。經過大半天的溝通、協調、來回討論,我們列出了每個部門下半年要做的事,也排了順序。

「不對呀!我們這一塊怎麼這麼大塊?」負責 API 部門的主管 Mike 出聲了:「不是說好了一個部門合理工作量是半年六個 Epic 嗎?現在 15 個 Epic 是要我們怎麼處理?」

大家紛紛湊過來幫忙看看發生什麼事。

「這個澳大利亞行銷案,不是要等明年法令看會不會鬆綁再決定嗎?」Mike 問。
「不行!這個我們要先做一個 Demo,否則我們年底預計的發廣告量會不夠。」行銷的 Amy 說話了。

「那那個新款產品核心演算法,不是說好了等 prototype 出來再看決定怎麼做嗎?」Mike 又問。
「對呀!但我們的人說你們不先出一版演算法,我們前端會做不出很像的效果。所以你們要先做,我們才能開始動工。」前端首席 Leo 發聲了。
「那就不叫 prototype 了不是嗎?」Mike 不放棄。
「但你們不先做我們就做不下去啦!」Leo 也很堅持。

「那… 那後台的會計總帳功能,不是現在已經有第三方 Solution 可用了嗎?為什麼要急著現在自己做一個幾乎一樣的東西?」Mike 繼續努力著。
「第三方系統做出來的報表太醜了啦!人家前端已經安排好時程了。」會計部的 Linda 也說話了,「我就叫前端先 GO,你們到時候後端做完一接就完事了,應該不難吧?」

就這樣,大家你一言我一語,沒有人願意在清單上被往後排,大家提出的需求都是對他們自己來說最重要的功能。

眼看著事情疆持不下,營運副總站出來主持公道了:

「那個… 我了解這些事很重要,各位對公司來說都是不可或缺的角色,但 API 部門忙不過來也是事實。我想,你們一定會討論出一個適當的解決方法的,畢竟,事有輕重緩急,對吧!但我要強調,大家還是要注意企業文化與橫向溝通,彼此尊重並共創雙贏…(以下省略三千字)那個 Mike 呀,你就多開 15 個 Java 職缺吧。大家加油!」

這是發生在你我身邊的故事…

副總說了什麼?

其實,要了解一個人真正的想法,對方說了什麼根本不重要,他做了什麼才重要。上面的故事中,副總講了這麼多,但真正用行動傳達出來的訊息只有兩個:

  1. 所有功能我全都要。
  2. 人不夠,加人就可以,人越多做越快。

加人的議題我們會另外聊,這裡我們先專心討論「我全都要」的議題吧。

https://ithelp.ithome.com.tw/upload/images/20230914/20107429a5hBrkedvG.png

Lean Startup 我想大家或多或少都有聽過。這個工作方法起源於上個世紀末,汽車製造廠 Toyota 的管理方法。在 Toyota 的裝配廠,有很多當時很特別的制度,筆者認為綜合起來可以歸納為:

  1. 下游只叫足夠的材料,下游存料足夠時,上游不多生產。
  2. 生產線上任何一個部份出錯了,都要馬上叫停整個生產線。

於是你會看到明明是照明系統出了問題,車門也要停止工作;明明是儀表板產線出錯了,內裝也暫停生產。為什麼?因為很簡單:「我們是賣車的,不是賣零件的,整台車都正常,才叫一台車。」

Toyota 的做法,其實背後的原理也很單純,就是透過減少半成品,減少庫存量,來減少浪費,進而提高企業每一分投資的價值。假設今天的生產目標是 3,000 台汽車,當車門的生產出了問題,你生產再多組車燈也是白費,因為沒有人會買一台沒有車門的汽車。

半成品與等待的傷害

一開始的故事背景是發生在軟體業。那軟體業也適用這套理論嗎?筆者認為很大程度也是適用的。

在一開始的例子中,Mike 的部門負責的工作,看起來經常要嘛是別人的上游,不然就是下游,而且這間公司裡,每個部門不只負責的工作不同,連商業目標也不一樣。因此,你可以看到,就算 API 忙不過來,行銷也要先在澳大利亞專案中先發包廣當,不管廣告引進來的人能不能享受到廣告內號稱的功能。就算 API 忙不過來,產品也要等 API 做出真正的核心演算法,才要做他們眼中的「效果」,他寧可在那等,也不處理 prototype 來先期驗證。會計跟前端更是奇怪,就算 API 忙不過來,他們也要先把前端做起來放著,即便一個沒 API 可打的會計總帳網頁一點用都沒有。

這一切決策,都在反映一件事:這間公司的每個部門都只關心一件事:「Local 最大化」。

Local 最大化與 Global 最大化,有時候會高度相關,但大部份時候不會。為什麼?很簡單,因為 Local 最大化才能最大化每個部門各自的表現分數(例如 KPI)。當各部們專心最大化自己的產出時,「等待」就產生了。然而,等待在傳統觀念上又很容易看起來像是偷懶,於是大家這麼聰明,一定會把自己的管轄範圍產能拉到最高,於是「半成品」就出現了。

回到上個世紀末的,Toyota 為什麼他們這麼在意半成品的控管,因為他們知道只有「一台車」能帶來價值,而如果各部門生產出來的零件沒有辦法剛好組成一台車,那多出來的每一個零件,就是生產成本的浪費。

停止開始,開始完成

然而,這也不是部門主管的錯,注重部門產出量的最大化,本來就是組織交付給他們的最重要工作。如果因為考量整體最大化而降低了部門 KPI,誰又要負責?事實上,當你公司依照職能分部門,又給他們分散的目標時,產出並躺在部門與部門之間,還無法在市場上創造收入(價值)的半成品,就成了早晚得面對的課題。

在軟體開發中,要減少創造不了價值的半成品,方法有蠻多的。有人偏好「全能人才」,全能人才前端能做、後端也能做,網路略懂,SQL 也不會亂下,這樣的人在產品有任何需要時都能處理,自然能減少半成品。但,全能人才何其稀有,因此另一個解方就是「全職能團隊」,在全職能團隊中,每個人不是全能,但一個團隊就能交付一個產品。只要團隊力量不要發散,就可以讓每個經手的工作都能快速脫手。有研究過商務原理的讀者就知道,這就跟餐廳提高『周轉率』的效果是一樣的。

你說,那我不要全職能團隊,我維持部門分組,但叫他們同時做同一個產品不也一樣嗎?可以,也就是透過「限縮目標」,來提高週轉率。咦,這不就 Kanban 方法裡面的『WIP Limit 嗎?』對啊,本質上就是呀。這個解法是上述三個解法裡面,可以最快開始,付出代價也最小的。唯一的阻礙,就看上頭的『營運副總』有沒有相通這件事了。

最後,各位讀者看到這邊,你覺得這樣下去還要加人嗎?私以為,加是當然可以加的。當你開一間印刷工廠,所有機器之間的運作協調都已經提高,所有工廠內的內耗與機器間的庫存都降到最低,這時再來加買機器,才能把買機器的成本效益發揮到最高。

https://ithelp.ithome.com.tw/upload/images/20230914/20107429FtfdUAuUKU.png
人的問題也是一樣,先把等待跟內耗減少,你加人的效益才看得出來,不是嗎?

謎之聲:「沒有車門的汽車,裝一百車盞燈也沒用。」

Reference

  1. Lean startup. (2023, August 13). In Wikipedia. https://en.wikipedia.org/wiki/Lean_startup
  2. Kanban (development). (2023, August 17). In Wikipedia. https://en.wikipedia.org/wiki/Kanban_(development)

上一篇
Day 3:「我的需求很重要」-- 談優先度
下一篇
Day 5:「我們可以少做些什麼」-- 續談減少浪費
系列文
敏捷聖徒30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言