第四章:工作項目(Work Items)#

軟體工作大多發生在我們的腦中或電腦裡,本質上是不可見的。為了讓團隊成員清楚掌握「誰在做什麼」以及「工作進行到哪裡」,你需要將工作視覺化——把原本看不見的資訊變得一目了然。

最常見的做法是用一張小卡片來代表正在進行的工作。它可以是索引卡(index card)或便利貼(sticky note),任何容易操作、能在白板上移動的東西都行。板上的卡片是觀察進度、瓶頸和排隊狀況的簡單而強大的方式,讓所有人對正在發生的事情一目了然。

實體卡片相比電子系統有獨特的優勢:可以輕鬆標註和客製化(加上頭像、阻礙標記、進度條、追蹤 ID 等),因為卡片是觸覺的(tactile),便於協作、移動,甚至可以隨身攜帶。移動便利貼的動作會讓你投入更多感官,從而與工作項目建立更強的連結——你更容易記住自己親手從一個欄位移到另一個欄位的項目。

本章專門討論這些卡片:上面該放什麼?如何顯示工作被阻擋?誰正在處理這個項目?這些問題都會在本章中得到解答。別只侷限於書中的建議——你應該根據需要選擇適合的方式,而不是全部都用上。

Figure 4.1: Anatomy of kanban work item cards


便利貼的正確撕法#

這或許是史上最 geek 的小知識,但它能拯救你的看板免於「便利貼掉滿地」的災難。

訣竅在於:避免讓黏膠部分捲曲。先用手指滑到便利貼下方的黏膠區域,然後從右向左慢慢但穩定地抬起。這會讓黏膠部分保持平直,增大黏著面積,讓便利貼更牢固地附著在板上。

Figure 4.2: How to properly remove sticky notes to prevent curling

如果你發現便利貼常常從板上掉落,很可能是撕取方式不正確。正確的撕法能顯著提升黏著力,避免工作項目「落地消失」的窘境。


4.1 卡片設計原則(Design Principles)#

工作項目卡片可以有很多不同的呈現方式,但在決定卡片上放什麼之前,有幾個設計原則值得牢記。

4.1.1 促進決策(Facilitate Decision Making)#

首要目標是讓卡片上的設計和資訊幫助團隊做決策。你希望團隊能夠自我組織,避免以下情況:

  • 團隊不知道下一步該做什麼,必須去問某人才能繼續
  • 團隊成員面對同樣情況卻因為資訊不足而做出不同反應

這也是制定明確政策(explicit policies)和清晰工作方式的主要原因。在團隊還沒熟記這些規則之前,盡量追求簡單、明顯的規則,並在卡片上清楚呈現。

例如,用頭像(avatar)標示誰在處理某個項目,這樣你就知道要找誰了解更多資訊,或者哪些項目還沒有人負責。

4.1.2 幫助團隊優化產出(Help Team Members Optimize Outcomes)#

卡片設計也應該幫助團隊在風險、客戶滿意度和經濟效益等方面做出最佳選擇:

  • 如果某個工作項目是高風險的(例如有法規生效截止日),必須讓團隊成員一眼就能看到,以便正確排定優先順序
  • 如果某類客戶比另一類重要,也要在卡片上表現出來
  • 工作項目的處理方式通常取決於它的類型(type,例如新功能、缺陷、維護)和等級(class,例如特別緊急或有固定交付日期的項目)

指導原則是簡單至上。卡片上不要放太多資訊以致忘了重點。從簡單開始,隨著需要逐步增加資訊。你希望工作項目散發(radiate)的資訊是容易看到和理解的。

流程氣味(Process Smells)#

借用 Kent Beck 和 Martin Fowler 的「程式碼氣味」(code smells)概念:如果某張便利貼有「氣味」——例如它已經在某個欄位閒置好幾天了——你應該去查看。它可能需要你採取行動,但也可能有完全正常的原因讓它停在那裡。氣味不一定是問題,但值得你去檢查。

卡片設計目標摘要#

卡片應該做到:

  • 促進決策——讓團隊知道下一步該做什麼
  • 幫助優化產出——風險、客戶滿意度、經濟效益
  • 顯示工作的類型和等級——便於排定優先順序

關於卡片大小#

便利貼有不同尺寸,請選擇能容納所需資訊的大小。有些團隊甚至自製卡片,設計客製化的結構和格式,甚至用塑膠膜護貝以便重複使用。沒有對錯之分,選擇適合你需求的尺寸,並在需求改變時調整。

Figure 4.3: Pre-printed kanban card template


4.2 工作項目卡片(Work-Item Cards)#

卡片上可以放很多東西,以下是一些常見的屬性。

4.2.1 工作描述(Work-Item Description)#

這聽起來像是廢話——工作項目當然需要描述。但這恰恰是很多團隊最需要改進的地方。作者們無數次看到團隊因為卡片上的描述不夠充分而爭論工作項目到底是什麼。

為了更容易討論項目內容,描述需要做到:

  • 簡潔(terse)
  • 切中要點(to the point)
  • 團隊中每個人都能理解(easy for everyone to understand)

User Story 使用者故事#

User story 是一種簡短扼要的描述方式,說明了做什麼為誰以及為什麼。它本質上是一張卡片(Card),上面有一小段文字作為稍後對話(Conversation)的提醒,在對話中你會細化細節並寫下確認標準(Confirmation)。這就是 CCC:Card、Conversation、Confirmation。

常見的 user story 模板:

As a [role], I want [feature], so that [benefit]

或者:

In order to [benefit], as a [role] I want [feature]

選擇對你自然的格式,但確保包含 Why(好處)、Who(角色)和 What(功能)。

不要過度依賴 user story 模板格式。它只是組織工作描述的一種方式,不是萬能的銀彈。有些情境(例如 bug)用 user story 格式可能不太合適。

標題(Title)#

如果描述太長,不方便每次提到時重複,可以加一個簡短的標題。一個容易記憶和引用的短句能幫助你記住工作項目的內容。

「那一集……」(“The One Where…")#

借鑑美劇《Friends》的命名慣例:在心裡把「那一集……」(The one where)放在描述前面。這個小技巧能讓你重新聚焦在工作項目存在的真正原因上。例如:

  • (那一集)名稱欄位允許太多字元
  • (那一集)以管理員身分登入卻缺少管理權限

「那一集……」不需要真的寫在卡片上。它只是一個心理引導,幫助你聚焦在工作項目背後的真正原因。

Figure 4.4: Good vs. bad work item descriptions

4.2.2 頭像(Avatars)#

你希望「誰在負責某個工作項目」這件事清清楚楚,這樣你就知道有問題、建議或表揚時該找誰。許多團隊透過在工作項目卡片上附上頭像來表示誰在處理什麼。

使用圖片、漫畫或自畫像的原因是:圖像比對比閱讀潦草的名字或簽名更容易辨識一個人。頭像應該要像團隊成員本人,或者是容易辨認的特徵的漫畫版。

頭像的關鍵原則:

  • 表示誰在做什麼——一目了然
  • 應該(至少有點)像本人——避免使用可愛的動物或酷炫的卡通角色
  • 可以用來限制 WIP——例如每人只有三個頭像可以放在板上

有個團隊決定使用狗的頭像,結果造成了混亂——他們要努力記住「貴賓犬是誰」、「為什麼達爾馬提亞犬還沒完成那些測試」,以及「雪納瑞到底在分析任務上耗了多久」。教訓:使用至少看起來像本人的頭像!

4.2.3 截止日期(Deadlines)#

截止日期可能源於多種原因:某個功能需要配合活動上線、新法規在特定日期生效、下週有新客戶來訪等。

  • 直接在工作項目卡片上寫下截止日期,可能用醒目的顏色
  • 截止日期是風險管理資訊,幫助團隊排定優先順序和自我組織
  • 有些團隊對固定交付日期的工作項目使用不同顏色的便利貼,搭配截止日期使用
  • 統一格式建立習慣,例如永遠使用便利貼的右上角放截止日期

截止日期摘要:

  • 標示工作項目的硬性到期日(hard due dates)
  • 從其他資訊中清楚突出
  • 也可用來為工作項目提供時間框(timebox)

4.2.4 追蹤 ID(Tracking IDs)#

便利貼的空間有限,可能無法容納完成一個功能所需的所有資訊。可能有大量文件無法附在便利貼上,或者你被要求在電子系統中追蹤工時和進度。

這時你需要一個簡單的方式來知道電子系統中的哪個項目對應板上的哪張卡片。可以把它想成一個 「更多資訊在這裡」的連結

解決方案:

  • 在便利貼的某個角落寫下電子追蹤系統的 ID
  • 像截止日期一樣,每次使用相同的角落以建立習慣
  • 可以加上前綴,如 JIRA:TFS:Git:,以避免與其他數字混淆

小心不要掉入陷阱:把所有資訊都放進電子追蹤系統,結果卡片上又變成沒有容易理解的描述。

雙重記帳問題#

同時維護實體看板和電子系統會產生「雙重記帳」的問題。建議的做法:

  1. 決定一個主要系統(master)——最好是實體看板,因為它更「外在」、更可見
  2. 電子系統使用簡化版的工作流程——例如只有 “Not Done” 和 “Done” 兩個狀態
  3. 在電子系統中附加文件和連結到其他重要資源

如果反過來用電子系統作為主要系統,建議使用投影機或大型觸控螢幕搭配看板外掛。

4.2.5 阻礙(Blockers)#

即使目標是讓工作順暢快速地通過工作流程,有時還是會發生阻礙:需要等待別人完成工作、有人生病、或遇到阻止工作完成的問題。

被阻擋的項目(Blocked Items)#

當項目被阻擋時,你希望它從正常項目中突出出來,產生一個信號和聚焦的理由(例如在每日站立會議中)。被阻擋的項目應該是一種視覺氣味(visual smell)。

常見做法:

  • 在被阻擋的工作項目上面貼另一張便利貼——好處是你也可以在阻擋便利貼上寫下被阻擋的原因
  • 用磁鐵放在被阻擋的工作項目上
  • 將工作項目側放
  • 移到板上獨立的「停車場」(parking lot)區域

作者建議不要使用獨立的「停車場」區域。這基本上等同於在說「被阻擋是 OK 的——看,我們甚至有專門的區域給它!」將被阻擋的項目留在原本的欄位中,會讓它持續在你的視線中、影響你的 WIP 數量,並迫使你在每次站立會議中不斷考慮它。

阻礙進度追蹤(Blockage Progress)#

有些團隊在阻擋便利貼上寫下簡單的進度指標,以強調解決阻礙的急迫性。例如:

  • 被阻擋的項目上有三個點表示已經被阻擋了三天
  • 有些團隊設定更精細的政策:阻擋三天後親自聯繫阻擋方,五天後升級到管理層

把氣味提升到新境界#

有個團隊甚至把真正的香蕉皮釘在被阻擋的卡片上!隨著天數過去,香蕉皮越來越黑,還開始散發異味——這才是真正的「行動呼籲」!他們的下一個點子是用真正的蟲子來標記軟體 bug。

阻礙摘要:

  • 清楚表明該項目需要你的注意
  • 應該同時指出原因——為什麼被阻擋
  • 可以在阻擋上追蹤進度條/天數

4.3 工作類型(Types of Work)#

工作項目可以是不同類型:bug、技術項目、維護或功能需求。不同類型的工作通常需要以不同方式處理和排定優先順序。

為了幫助團隊自我組織,常見的做法是讓每種工作類型有自己的顏色,這樣就能輕鬆區分缺陷和正常功能。這些類型也可以用來設定工作的處理政策,通常稱為服務等級(Classes of Service,見第 8 章)。

Figure 4.5: Work item types by color: green maintenance, yellow feature, red bug

常見的工作類型與顏色慣例:

  • 綠色:維護 / 技術項目(Maintenance)
  • 黃色:功能需求(Feature)
  • 紅色:Bug / 缺陷(Bug)

透過顏色一眼看出團隊狀態#

只要掃一眼看板,就能感受到團隊的整體狀態:

  • 紅色便利貼很多 → 系統品質有問題,應該投入精力改善品質
  • 沒有綠色便利貼 → 可能沒有在償還技術債,長期下來系統會越來越難維護
  • 沒有黃色便利貼 → 沒有在為系統增加新功能(這可能是有意為之,也可能不是)

如果所有便利貼都是同一個顏色,你就必須逐一閱讀每張便利貼才能知道全局狀態。

不要因為懶惰就隨手拿到什麼顏色的便利貼就用。在板上毫無理由地混用顏色只會造成混亂。最好的做法是:選定有限數量的常見工作類型,為每種分配一個顏色,然後一直使用該顏色。

如果記不住每種顏色代表什麼工作類型,可以在看板旁邊貼一個圖例(legend),排除任何誤解。這對不是每天使用看板的利害關係人也很有幫助。

工作類型摘要:

  • 不同類型的工作使用不同顏色
  • 有助於排定優先順序
  • 避免「黃色海洋」(yellow sea)——所有便利貼看起來都一樣
  • 有目的地使用顏色

4.4 進度指標(Progress Indicators)#

卡片在看板上的位置能告訴你很多資訊,但工作項目的歷史不容易追蹤。這張卡片在這裡放了多久?這是開發階段的正常前置時間嗎?

進度指標是一個簡單的工具,幫助你追蹤「完成了多少」。方法包括:

  • 每天打一個點——最簡單的方式
  • 不同顏色的點代表不同工作階段——進階版
  • 畫方框並在完成時填滿——顯示相對於預期的進度
  • 每個工作階段有自己的框可以打勾——適合非線性流程

進階用法:可以用進度指標建立簡單的服務水準協議(SLA):「你可以預期標記為『小』的項目會在三天內完成。」

倒數計時(Counting Down)#

另一種方式是不計算已花費的天數,而是倒數距離截止日期還剩幾天。每天在站立會議中更新這個數字。如果你做過 Scrum,這與燃盡圖(burn-down chart)上的進度追蹤類似。

進度指標摘要:

  • 顯示項目「完成了多少」
  • 可用點、方框或字母表示
  • 可以是總計按步驟
  • 是建立服務水準協議的基礎

4.5 工作項目大小(Work-Item Size)#

工作項目的大小能提供有用的管理資訊,問題是確切大小通常要到完成後才知道。

估算某個項目需要多少小時是困難的,而且往往不準確。一個更好的方法是相對比較:工作項目 A 比工作項目 B 需要更多還是更少的工作量?

透過這種比較,你可以為同等大小的工作項目分配數字(即 story points,故事點數)或 T-shirt 尺寸(S、M、L)。這些數字只表示相對估計,不精確,但可能比看似精確的估算(例如 104 小時)更有用——因為那些「精確」數字其實也是猜測。

不管你如何得出估算結果,都要清楚地寫在工作項目卡片上,讓每個人都一目了然。

工作項目大小摘要:

  • 這個工作項目有多大?
  • 使用相對數字T-shirt 尺寸
  • 在項目進入看板時或確定後標記

4.6 收集工作流程資料(Gathering Workflow Data)#

4.6.1 收集工作流程指標(Gathering Workflow Metrics)#

當工作流程設計得夠詳細時,你就有了絕佳的機會來收集資料,衡量和追蹤工作流程的趨勢——簡而言之,更深入了解你的工作是如何運作的

簡單方式:進出日期#

最簡單的形式:在卡片上「蓋章」記錄它進入看板的日期和進入最終階段的日期。這能幫你追蹤該項目的前置時間(lead time)。

進階方式:每欄日期#

在每次進入新欄位(即工作流程的新步驟)時記錄到達日期。你就能開始看到:

  • 每個步驟的週期時間(cycle time)趨勢
  • 瓶頸在哪裡
  • 工作經常在哪裡等待

結合工作項目大小(4.5 節),你可以開始做出預測,例如:

  • 「如果你放一個小型工作項目到收件匣,最多三天就會完成。」
  • 「一個中型工作項目在十次中有九次會在五到八天內完成。我們有統計數據支持。」

你收集資料是為了團隊改進,不要過度。從一個簡單的指標開始,隨需要增加複雜度。不要為了收集和處理指標而增加大量額外工作——只需在卡片上記下一個簡單的日期就好。

4.6.2 收集情緒(Gathering Emotions)#

有些團隊用工作項目來追蹤團隊對工作的滿意程度。做法很簡單:在完成工作項目時,在便利貼上畫一個表情圖案——笑臉、生氣的臉、無所謂的臉——來表示你當時的感受。

因為卡片即將從板上移走,不用擔心弄亂便利貼。直接畫在現有資訊上面就好。

收集情緒的方式:

  • 在晨會上快速投票
  • 由最後接觸工作項目的團隊成員決定
  • 在一個人或一對開發者把項目從頭推到尾的團隊中,由他們在最後決定

定期檢視這些資料,看看是否能發現趨勢或模式。也許某種類型的工作或某個客戶的工作似乎讓團隊特別不開心。你能為此做些什麼嗎?

有趣且可能有用的做法#

  • 剪刀法:當有並行活動時,字面上用剪刀把卡片剪成兩半——例如一個工作項目同時進行安全審查和程式碼審查,各走自己的工作流程後再合併
  • 實體大小法:用不同大小的便利貼代表不同大小的工作——大型(約 A5 大小)、中型(長方形)、小型(正方形),甚至可以用板上的物理空間來設定 WIP 限制

4.7 建立你自己的工作項目卡片#

現在你已經看了很多關於卡片上可以放什麼的建議。建議以團隊練習的方式來設計你們的工作項目卡片。從簡單開始,隨需要擴展。

團隊可以討論的問題:

  • 你需要什麼資訊才能知道如何處理工作項目?(記住 4.1 節的設計目標)
  • 什麼資訊可能對不是每天使用看板的人有用?
  • 你們有不同類型的工作嗎?區分不同種類的工作對你們有益嗎?
  • 你們需要阻礙標記嗎?如果需要,相關的政策是什麼?被標記為阻擋的項目應該怎麼處理?誰負責解除阻擋?

最後一個小練習:創建你們自己的個人頭像。記住不要在創意上太過頭——你希望頭像至少看起來像你們自己。

Figure 4.6: Example cards with avatars, blockers, dates, and tracking references


4.8 本章總結#

本章全部關於工作項目卡片以及它在看板上向你散發(radiate)的資訊。一個工作項目應該包含團隊做決策所需的所有資訊。

本章討論了以下元素:

元素英文作用
描述Description讓你知道工作是什麼
頭像或其他標記Avatar讓你知道誰在處理這個項目
截止日期和其他重要日期Deadlines讓你知道什麼時候必須完成
追蹤 ID 或外部系統的參考Tracking IDs讓你知道在哪裡找到更多資訊
阻礙Blockers讓你挑出被阻擋、無法繼續進展的項目
工作類型Type of Work讓你知道每個項目的類型,以便排定優先順序
進度指標Progress Indicators讓你知道目前完成了多少工作
大小Size讓你看出大小和工作量的差異
流程資料、情緒和其他累積資料Flow Data, Emotions讓你知道工作的流動狀況以及團隊的感受

如果你覺得這份清單令人望而生畏——停下來!不要全部都做。作者們沒有見過任何一個團隊同時做所有這些事情。從符合當前需求的開始,不要過度。隨需要添加功能。同樣地,如果你覺得清單缺少了什麼,你可能是對的——這只是一個起點,用你的創意去擴展它。