Scrum 專案的變化不僅限於引入 ScrumMaster 和 Product Owner 兩個新角色。自組織團隊的本質消除了傳統技術團隊領導的角色,個人被要求跨越專業界限協助團隊,重點從撰寫需求文件轉向口頭討論,團隊必須在每個 Sprint 結束時產出可交付的成果。這些變化改變了團隊與組織內的角色關係,也是組織採用 Scrum 時面臨挑戰的原因之一。

在閱讀這些角色時,請記住:任何參與產品或軟體開發的團隊成員,首先且最重要的身分是開發者(developer)。當使用 tester 這樣的術語時,指的是一位偏好測試工作、但會承擔團隊所需任何高優先任務的開發者。Analyst 同理。

Analysts(分析師)#

具備深厚產品知識和溝通能力的分析師,在 Scrum 中往往會自然轉向 Product Owner 角色。在大型專案使用產品負責人層級結構時尤其常見。

即時分析取代超前規劃#

  • 傳統專案中,分析師的目標是盡可能跑在團隊前面
  • Scrum 專案中,改為 just-in-time analysis:僅稍微領先團隊,提供當前和近期功能的有用資訊
  • 分析師的首要優先是達成當前 Sprint 的目標,包括協助測試、回答問題、參與所有 Sprint 會議等

從中間人到促進者#

  • 傳統專案中,分析師常成為團隊與 Product Owner 之間的中間人
  • Scrum 專案中,分析師應成為團隊與 Product Owner 對話的促進者(facilitator),而非所有對話的管道
  • 資訊分享方式從正式文件轉向非正式溝通,雖仍需文件(尤其是分散式團隊),但形式更輕量(如 wiki)

前瞻工作的處理#

  • 分析師未被當前 Sprint 完全佔用的時間,可用來前瞻
  • 前瞻不等於提前一個 Sprint 工作:跑太前面反而會影響當前 Sprint,且需求細節往往在團隊實際開發前就已改變
  • Sprint planning 中能辨識的分析任務應納入 Sprint backlog;若下一個 Sprint 的工作尚不確定,則不需納入

許多分析師在適應 Scrum 後發現,雖然放棄了「客戶需求唯一詮釋者」的角色,但團隊的統一感和協作品質大幅提升,互相指責的現象被「以團隊為單位」的心態所取代。

Project Managers(專案經理)#

在傳統瀑布式開發中,專案經理需要管理專案的一切——範圍、成本、品質、人員、溝通、風險、採購等。但其中許多職責其實屬於其他人,例如範圍控制理應由客戶負責。Scrum 承認這個不可持續的角色並將其消除

職責的重新分配#

消除角色不代表消除工作與職責:

  • 自組織團隊承擔了過去由專案經理肩負的大量責任(例如:團隊成員自行選擇任務,而非由專案經理分配)
  • 其他職責轉移至 ScrumMasterProduct Owner

前專案經理的轉型路徑#

轉型方向適合對象
回歸技術角色原本因職涯路徑才擔任 PM、實際懷念技術工作的人
Product Owner透過 PM 角色累積了豐富商業與客戶知識的人;適合難以完全放棄「告訴團隊做什麼」的人
ScrumMaster能克服指揮團隊、替團隊做決策舊習慣的人;這是採用 Scrum 的組織中最常見的轉型

成為 ScrumMaster 的建議#

  • 盡量按書操作 Scrum:初期緊跟 Scrum 書籍或教練的建議,累積實際經驗後再客製化
  • 盡可能與其他 ScrumMaster 交流:組成實踐社群(community of practice),分享經驗與教訓
  • 盡快大量學習:閱讀書籍與文章、參加敏捷社群活動與研討會

為何要改頭銜?#

Ken Schwaber 在 1997 年發明 ScrumMaster 一詞,部分原因是要提醒所有人這不僅是專案經理角色加減幾項職責。Schwaber 認為「Scrum 的詞彙是變革的詞彙,這些詞刻意不美觀——burndown、backlog、ScrumMaster——因為它們提醒我們變革正在發生。」

保留舊頭銜會阻礙新思維的採用。如果人們連改變職稱這樣微小的事都不願意,他們很可能也不願意做出採用 Scrum 所需的更大改變。

Architects(架構師)#

架構師面對 Scrum 時的兩大顧慮:

  1. 團隊還會實作我指定的架構嗎?
  2. 沒有前期架構階段,如何確保架構品質?

第一個顧慮:影響力來自尊重#

答案取決於架構師本人。許多架構師會發現工作變化不大——他們的建議之所以被採用,是因為其他開發者尊重他們並信任其判斷。即便在自組織團隊中,當一位同事在架構決策上有良好的口碑,其他人自然會主動諮詢。

第二個顧慮:漸進式架構#

架構需求與商業目標結合,共同驅動 Product Backlog 的優先排序。架構師可以:

  • 聚焦於應用程式中的架構不確定性
  • 與 Product Owner 密切合作,說明 backlog 項目的架構影響
  • 通過審慎安排 Sprint 內容,幫助團隊提早獲取關鍵知識、發現或避免風險

非撰碼型架構師(The Non-Coding Architect)#

被 Scott Ambler 稱為「象牙塔架構師」(ivory tower architects)的非撰碼型架構師,將面臨最大的變化。Scrum 專案中,架構師的角色從命令者轉變為顧問與促進者

  • 架構師不需要全職寫程式,一、兩個 Sprint 不寫 production code 也可以
  • 關鍵區分在於:還能寫程式的架構師 vs. 寫程式能力已落後的架構師
  • 要小心那些抗拒動手參與的架構師——有些人選擇架構師路線是為了逃避實際程式設計

Figure 8.1: Different types of functional managers

Functional Managers(功能經理)#

開發經理、QA 主管等功能經理在轉型至 Scrum 後通常會經歷一些權力削減,但具體程度取決於組織先前如何定義該角色。

持續保留的職責#

  • 人員指派:將個人分配到專案(但不再分配個別任務——任務選擇由團隊自組織決定)
  • 跨專案標準:建立品質、可維護性、可重用性等標準
  • 人才培育:為團隊成員爭取預算參加研討會、安排具挑戰性的專案、鼓勵加入或組建實踐社群
  • 績效評估與人事決策:在 Scrum 環境中,需要更多來自同事與客戶的 input

領導風格#

根據 Jeffrey Liker《The Toyota Way》的框架,功能經理依知識深度管理風格可分為四類。在採用 Scrum 的組織中,功能經理應位於右上象限——結合對工作的深度理解與由下而上(bottom-up)的管理風格,成為「學習型組織的建構者」(Builder of Learning Organizations)。

採用 Scrum 後,多數功能經理發現自己有更多時間可以更密切地聯繫直屬部屬、了解各專案的進展(透過參加各種 Sprint Review 等),以及關注跨專案標準與未來方向。

Programmers(程式設計師)#

主動參與而非被動接收#

Scrum 團隊中的程式設計師最顯著的變化是:不能再坐在座位上等別人告訴你寫什麼。程式設計師——如同團隊中所有人——被期待共同承擔產品成功的責任

  • 預期要與客戶和使用者對話(不需要變成業務員,但至少要能舒適地偶爾與使用者交流)
  • 預期要更多與同事互動:參與討論、幫助他人解決問題、進行 pair programming
  • 預期要為了優化團隊整體產出而在必要時走出舒適圈(例如寫測試、使用不熟悉的語言)

技術實踐的改變#

Chapter 9 描述的許多技術實踐對程式設計師來說都是新的。團隊不一定需要一次全部採用,但都值得考慮和嘗試。

Database Administrators(資料庫管理員)#

資料庫專業人員(DBA、資料庫工程師等)可能是最抵制 Scrum 的角色之一。傳統方法強調在專案前期完成完整的資料分析,因為「應用程式會變,但資料是永恆的」。

漸進式資料庫設計#

  • 雖然完整分析在理論上很好,但在進行分析的同時,世界持續變化——使用者需求改變、競爭者推出產品
  • DBA 日常工作不會有大幅變化,但工作的排程與方式將戲劇性地改變
  • 使用者體驗設計、架構和資料庫設計本質上是同一個挑戰的特例:對需要全局思考的事物進行漸進式工作

Testers(測試人員)#

從符合規格到符合使用者需求#

傳統測試基於 Philip Crosby 對品質的定義:「符合需求」(conformance to requirements)。但在 Scrum 中,我們承認完美預測所有使用者需求是不可能的。品質的定義從符合需求規格提升為符合使用者的真實需求

從文件驅動到對話驅動#

  • 測試人員的主要方式變為與 Product Owner 對話,了解功能應如何運作、驗收標準為何
  • 測試人員不限於只從 Product Owner 獲取資訊,也應與使用者、客戶和其他利害關係人交流

迭代式測試#

  • 最大的變化之一是學習迭代式工作
  • 不能簡單地宣佈「每個 Sprint 的最後一週用來測試」——這會製造 Sprint 內的迷你瀑布
  • 初期幾個 Sprint 測試人員會面臨巨大挑戰:程式設計師也在學習迭代式工作,團隊可能高估承諾量

測試自動化#

  • Scrum 短 Sprint 的節奏使測試自動化成為必需
  • 雖然部分自動化工具本質上就是寫程式,但透過時間、訓練和與程式設計師 pairing,多數手動測試人員都能成功轉型

Lisa Crispin(《Agile Testing》合著者)的建議:「不要坐著等工作來找你,要主動出擊!測試人員不能等測試任務來到面前,必須站起來參與、弄清楚該做什麼。」

Figure 8.2: UED and development can occur in parallel tracks

User Experience Designers(使用者體驗設計師)#

UED 對採用 Scrum 有合理的顧慮:他們習慣在其他開發活動之前先進行自己的迭代,但 Scrum 專案不希望在開始開發前完成所有 UED 工作。

雙軌並行模式#

根據 Lynn Miller 和 Desirée Sy 的方法,專案應有兩條並行軌道:

  • 開發軌道(Dev Track)
  • 互動設計軌道(UED Track)

UED 工作始終領先開發工作至少一個 Sprint,透過初始的 Sprint Zero 和在第一個 Sprint 聚焦於低 UI 影響的功能來實現。

心態比流程更重要#

關鍵不在於 UED 做了什麼工作(兩種心態下工作內容相同),而在於如何定位自己

  • 錯誤心態:「我是 UED,我在開發者前一個 Sprint 工作,確保他們開始時有設計可用。」
  • 正確心態:「我在開發團隊上,主要工作是確保我們完成 Sprint 承諾的一切。剩餘時間我會前瞻一兩個 Sprint,蒐集資料、做設計原型。」

UED 必須將自己視為團隊的一部分。跨功能團隊的理念是 Scrum 的基礎——團隊需要包含從構想到實現所需的所有人。UED 的首要優先是交付當前 Sprint 的承諾,前瞻工作是次要的。

Three Common Themes(三個共同主題)#

本章討論了分析師、專案經理、架構師、功能經理、程式設計師、DBA、測試人員和 UED 的角色變化。三個貫穿所有角色的主題:

  1. 漸進式工作(Work incrementally):始終努力在 Sprint 內產出可交付的產品增量
  2. 迭代式工作(Work iteratively):功能可以在後續 Sprint 中重新審視和改進
  3. 跨越專業工作(Work beyond your specialty):為了在 Sprint 結束時產出可交付的成果,個人需要願意偶爾跨出自己的專業領域