內容簡介
Scrum作為敏捷方法,已經得到了廣泛的應用。針對如何用好、用巧這個看似簡單的框架,《敏捷軟件開發:Scrum實戰指南(第2版)》結合故事、模型和成功秘訣三大要素,透徹講解確保Scrum成功實施的所有基本要素。全書5部分共35章。在簡單介紹Scrum知易行難后,分別介紹戰前準備、戰地基礎、戰地急救,討論如何使每日站會富有成效,如何提出Scrum的第四個問題,如何讓人們在結對編程時保持專注,增加團隊新成員時應該怎么辦,發生文化沖突時應該怎么辦,應急過程等。隨后鎖定八大主題,重點介紹高級生存和荒野生存。最后在附錄中概述Scrum框架,以幫助讀者快速入門。
《敏捷軟件開發:Scrum實戰指南(第2版)》適合打算實現敏捷轉型并導入Scrum的所有人員閱讀,是架構師、開發與測試人員、項目經理和項目負責人的理想參考書。
前言
歡迎閱讀第2版。當我提出想要修訂本書第1版時,我妻子懷疑這是不是個理智的決定。畢竟,她提醒我,第1版幾乎把要分享的都寫完了。然而,當我回想起我的第一次寫作過程時,我覺得我不僅有更多要說的,而且我還想調整我已經發表的一些內容。簡而言之,我想要重構,添加一些新特性,并發布2.0版本。所以就有了第2版。閱讀本書的方法跟閱讀第1版一樣:挑選能解決你在公司遇到的問題的一章并閱讀它,然后應用我的建議,看看會發生什么。敏捷是一個旅程。自2012年第1版出版以來,我學到了很多東西。如果你以前讀過這本書,你會立刻發現我已經在原來的章節中添加了新的想法和概念。很多章節重寫超過80%;其他的則只有10%。你將看到一個新的部分,第V部分“荒野必備”,包含了更多的實戰技巧,其靈感來自于我與全球組織合作的第一手經驗。這些新章節包括管理風險、面試、一次做對的謬論等等。本書誕生過程我女兒 Emma出生時,我感到有些力不從心。相比我們的其他孩子,我們這次在醫生辦公室的時間似乎要更多一些。我一直問我妻子:“這正常嗎?”一天晚上,我在枕頭邊上發現我妻子那本《新生兒父母手冊》,里面有她寫的一張小紙條:“讀讀這本書,你會感到好受一些。”我讀了。由此我知道了我們所經歷的每件事情對于我的孩子都是正常的,即使對我或我以前觀察到的來說不常見。這使我感到更有信心與安全感。這也正好是我開始試驗 Scrum 與敏捷的時間。隨著我開始遇到障礙與面臨不熟悉的情況,我開始認識到,在做 Scrum與XP的第一年(甚至之后),我真正需要一本指導手冊。問題在于,不像一本指導手冊,我不可能準確告訴你,在第 1~3月或者 9~12 月,你的團隊應該做什么或者是應該擔心什么。團隊并不像小孩那樣,不會以一個可以預測的速度發展。相反,在他們第一年的實踐中,隨著他們學習團隊合作、采用敏捷工程實踐、與他們的客戶建立信任、和以增量迭代方式工作的過程中,他們常常會摔倒、蹣跚、犯錯誤,前進兩步就倒退一步。有鑒于此,我更傾向于以這種方式“我遇到了一個問題,該怎么辦”來組織這本書。我收集了我參與過或者見證過的、在他們第一年敏捷旅途中的那些團隊的故事。隨著我繼續我的敏捷旅途,我注意到各個公司中這些故事、模式通常都很相似。我在一個公司中實現一個想法,稍微調整一下就可以應用在下一個公司中。重復這個過程,我得以收集了這些現實世界的解決方案, 并把它們加入我隨身攜帶的虛擬工具箱。在這本書中,我將與你分享一些最常見的痛苦與解決方法。當你的團隊遇到麻煩或者是受傷的時候,你可以找到最接近你的癥狀的那一章,然后你可以發現,即使不能解決你的問題,至少也有一個辦法可以減輕你的痛苦。第2版旨在幫助你精心調試你自己的實踐,在一些你不熟悉的領域提供指南以及在前進的道路上更輕松地克服我們都遇到過的困難。誰應該讀這本書如果你正在考慮開始 Scrum 或者敏捷的實踐,或者剛剛開始你的旅途,或者已經實踐了一年左右但卻感覺好像迷失了方向,這本書就是為你準備的。我正式的目標群體就是,從那些在6個月以內將開始他們的項目,到那些已經實踐了一年的公司,即有 18 個月的時間窗口。這本書是為推崇實踐的人準備的。如果你想學習理論或者是高深的討論,可以從很多優秀的 Scrum 和敏捷的書籍中找到一本。另外一方面,如果你想尋求基于我在微軟做過的項目以及我在福布斯 100強的大型公司指導顧問過的團隊的實踐建議與真實數據,這本書會物有所值。怎樣閱讀這本書設計這本書是為了方便你在任何時間以任何順序閱讀任何章節。每一章都以一個故事開始, 這些故事都是從我工作過的或者是指導過的團隊、公司、項目中提取出來的?梢韵胂,為了保護那些清白的(或者是犯錯的)人,我改變了他們的名字。在你看過這些似曾相識的故事后,我會介紹一個模型。這些模型是我在實戰中用來幫助解決故事中存在的問題的。一些模型你可能會感到不太舒服,或者是認為對你的公司可能不適用。我強烈要求你反抗你的忽視建議或者是修改模型的直覺,至少努力嘗試三次,然后看看結果如何,你可能會對結果感到驚訝。在每章的最后,我總結了成功要領,其中的因素事關實踐成敗。這本書組織為五部分。第Ⅰ部分“戰前準備”,對你準備開始使用 Scrum 提供建議,幫助你為成功做好準備。如果你正在考慮 Scrum,或者是剛剛開始使用Scrum,就從這里開始。第Ⅱ部分“戰地基礎”,討論的話題可以幫助你克服開始敏捷的旅途之后團隊與組織會遭遇的初步障礙。如果已經開始了 Scrum 的實踐,但是遇到了困難,你可以從這里開始。第Ⅲ部分“戰地急救”,著眼于解決公司所面臨的一些更大、更深層次的問題, 比如往項目中增加人手或者是解決每日站會的功能失調。這些都是在第一年實踐中某個時候很可能會遇到的情況。這幾章可以幫助你診斷并處理這些情況,使團隊恢復到健康的狀態。第Ⅳ部分“高級生存”,討論人們在實踐 Scrum的任何階段都常常掙扎的一些話題。 比如, 項目成本、 合同的制定、敏捷與 Scrum 項目中的文檔等。第V部分“荒野必備”,包含了一些章節,這些章節關注的是那些被忽視的,但也同樣代價高昂的問題。這些問題是大多數組織在敏捷采納的過程中所面臨的,比如風險管理,面試,一次做對,等等。如果你是從零開始,對 Scrum 還一無所知,我在本書的附錄中包括了一個對 Scrum 的簡短介紹,旨在幫助你熟悉這些術語與概念。在開始研究這本書之前,你可能還需要多了解一下 Scrum。為什么需要閱讀這本書不管你在敏捷旅途中身處何地,我們都需要一個友好的提醒,即我們的遭遇是正常的, 我們還需要解決這些問題的建議和一些成功要領。這本書把這些東西都組織在一起,方便你根據具體需要選擇閱讀需要的章節或者整個部分或者全書。這是真實生活中的情況,可以與你產生共鳴,它的解決方法可以應用于任何團隊。打開書開始閱讀這些故事,這本書將是你經歷 Scrum 與極限編程之高潮與低谷的忠實伴侶。本書的補充材料在你閱讀本書的過程中,你可能會想:“我真希望有個工具或者是可以下載一個模板來幫助我實踐這個概念。”很在多情況下,這是可以的。訪問 http://www.mitchlacey.com/supplements/,你可以看到我在我每天的 Scrum 項目中用到的一系列文件、圖片、Excel 表格以及工具。盡管其中一些信息是精心準備過的,但大多數東西還很簡陋。為什么?在我的項目中,我不需要它們很完美,我只需要它能用。你在我的網站上得到的將是第一手的、真實的、偏重實戰且有用的東西。目錄
第1章 Scrum知易行難 1故事 1Scrum 6什么是Scrum? 7實施Scrum 8Scrum的基本價值觀 8Scrum 需要轉變思維方式 9Scrum采用的是最短路徑,而不是預設路徑 10Scrum發現問題 12Scrum的最佳搭檔 12什么時候適合用Scrum? 13變化是困難的 15現狀后期 16從外部元素和混亂到思想轉變 16實踐與集成 16新的現狀 17成功要領 17引用 18第Ⅰ部分 戰前準備第2章 取得支持與組建團隊 23故事 23模型 29轉變需要時間 30建立緊迫感 30成立一個強大的指導聯盟 31建立愿景/繪制未來的藍圖 31溝通愿景 31授權人們為愿景采取行動 32計劃并創造短期成功 33進一步改善,鞏固成效,繼續深化改革 33制度化新的方式方法 33成功要領 33引用 34參考 34第3章 用團隊顧問來優化團隊表現 35故事 35模型 40建立一個團隊顧問池 40建立團隊 42核心團隊 43團隊顧問 44團隊大小 44核心團隊與團隊顧問一起工作 46團隊顧問與會議 46成功要領 47責任 47試驗 48小心過度 48計劃可能的空閑時間 48團隊顧問不能代替專職團隊 49引用 49參考 49第4章 預估團隊的速率 50故事 50模型 55使用歷史數據的問題 55為拍腦袋增加一些依據 56估算Product Backlog 57分解參考故事 57點數與小時數的大致關系 58團隊的生產能力 58估算團隊的速率 59增強對這種技術的信心 60走著瞧(使用靠譜的數據) 60收集并以圖表形式表示真實的數據 61計算平均速率,但要對范圍進行交流 61截斷數據 62成功要領 64引用 65第5章 Scrum的三大角色 66故事 66模型 70選擇角色 71組合角色 72如果實在萬不得已,又該何時組合這三大角色 74成功要領 74第6章 確定Sprint的長度 76故事 76模型 79項目期限 80產品負責人與項目干系人 81Scrum 團隊 82確定 Sprint 的長度 82警告 85問卷之外 85成功要領 86長于1個月的Sprint 87延長Sprint長度 87引用 87第7章 如何定義“完成” 88故事 88模型 90介紹 91頭腦風暴 91分類 92排序與整合 93生成與發布DoD 95沒有完成的工作呢? 95成功要領 96引用 96第8章 全職的ScrumMaster 97故事 97模型 100成功要領 106消除障礙/解決問題 106結束爭論/當團隊的保姆 107報告團隊的行為表現 107引導并在必要時提供幫助 107教育組織并驅動組織變革 108結語 109引用 109參考 110第II部分 戰地基礎第9章 Scrum中工程實踐的重要性 113故事 113實踐 117重構 119持續集成以及更頻繁的提交 120結對編程 121自動化集成與驗收測試 123成功要領 124不是銀彈 125開始行動 125獲得團隊的支持 125DoD 125把工程實踐加入Product Backlog 126獲得培訓與指導 126結語 126引用 127參考 127第10章 團隊核心時間 128故事 128模型 131在一起工作的團隊 131分布式團隊與兼職的團隊 133成功要領 134第11章 發布計劃 136故事 136模型 140項目成本 144成功要領 146事先進行溝通和交流,并且要頻繁 147每個Sprint后都更新發布計劃 147努力先做優先級最高的條目 147交付可工作的軟件 148引用 148第12章 分解故事與任務 149故事 149模型 152做好準備 152故事分解 153任務分解 156成功要領 159引用 160參考 160第13章 缺陷管理 161故事 161模型 163成功要領 164附加信息 165引用 165參考 166第14章 可持續工程與Scrum 167故事 167模型 170專用時間模型 170隨時收集數據 171專職團隊模型 171成功要領 173專職維護團隊成員的輪換 173用良好的工程實踐來改進遺留代碼 174結語 174引用 174第15章 Sprint評審會 175故事 175模型 179進行會議 180成功要領 181花時間準備 181記錄決策 182要求認可 182勇敢 182參考 183第16章 Sprint回顧會 184故事 184實踐 187讓回顧會議發揮應有的作用 187計劃一個有效的回顧會議 188召開回顧會議 189成功要領 191告訴他們為什么要保留回顧會議 192營造一個良好的環境 192有需要就開 192高度重視回顧會議 193引用 193第III部分 戰地急救第17章 富有成效的每日站會 197故事 197模型 200準時開始和結束 201開會遲到 201議程、節奏和站位 202打斷 202漫談和深入討論 202暴露隱藏的障礙 204忽略問題 204過于模糊 204結束就意味著開始 204成功要領 205保持會議的頻率 205站著,不要坐 206像團隊一樣工作 206耐心 207第18章 每日站會的第四個問題 208故事 208模型 211成功要領 212引用 212第19章 真正參與結對編程 213故事 213模型 215混排結對編程 216實踐混排結對編程 216混排結對編程的挑戰 217微結對 218成功要領 220引用 221第20章 222新加入團隊成員 222故事 222模型 224練習 226成功要領 227承認速率會下降 227明智地選擇新成員 227風險 228引用 228第21章 處理文化沖突 229故事 229模型 234成功要領 239掌握自己的命運 239面對現實 240堅持到底 241引用 242參考 242第22章 Sprint緊急情況處理流程 243故事 243模型 246消除障礙 246獲得幫助 247縮小范圍 247取消Sprint 248成功要領 249引用 249第IV部分 高級生存第23章 可持續的步伐 253故事 253模型 257縮短迭代周期 260監測燃盡圖 260增加團隊時間 261成功要領 262引用 263第24章 交付可工作的軟件 264故事 264模型 268核心模型 268用戶數 269從風險最高的組件開始 270擴展和驗證 270成功要領 271思維的改變 272返工 272專注于端對端的場景 273參考 274第25章 價值的度量與優化 275故事 275模型 278功能工作 278額外的工作 278試驗性工作 279技術債務 280其他潛在的類型 280組織數據 281使用數據 281成功要領 283教育項目干系人 283和項目干系人一起工作 284確定模式與趨勢 284引用 284參考 284第26章 項目成本預算 285故事 285模型 290功能規格書 290用戶模型 291估算用戶模型 291確定用戶故事的優先級 292確定團隊的速率 293計算成本 293制定發布計劃 294成功要領 294引用 295第27章 Scrum項目中的文檔 296故事 296模型 299為什么我們要做文檔 300我們會做什么文檔 300什么時候以及怎樣做文檔 301在項目開始的時候做大量文檔 301在項目最后做大量文檔 302隨著項目的進展寫文檔 303敏捷項目的文檔 304文檔準備不充分就開始項目 305成功要領 305引用 306第28章 外包與離岸開發 307故事 307模型 310考慮實際成本 310交接成本 310增加的開銷 311長期的人員流失 311文化的挑戰與管理工作 311開發實踐 312面對現實 312預算與成本 313時間、距離與文化 314成功要領 314選擇合適的離岸團隊 314以痛苦最小的方式分配工作 315堅守Scrum框架 315建立團隊文化 316準備差旅 317配備一個項目/團隊協調人 318絕不考慮離岸的情況 318引用 318參考 319第29章 大型產品列表的優先級確定與估算 320故事 320模型 323團隊 324項目干系人 325成功要領 328預先計劃至關重要 328專注于討論并設定時間限制 328將未解決的爭議放入“停車場” 329帶上額外的卡片/紙張以備現場產生用戶模型 329引用 330第30章 擬定合同 331故事 331模型 335傳統的合同與變更要求 335寫用戶模型 341估算用戶模型 341成功要領 343引用 345第V部分 荒野必備第31章 合作推動完成 349故事 349模型 353任務撲克 353結對編程 354限制進行中的工作條目 355兩周迭代 358用任務板創造可見性 359成功要領 361每個聲音都有人聽 361對工作的共同理解 361每位團隊成員都對成果投入 362不要平均任務估算 362避免粒度更細的任務估算 362Scrum建立在團隊工作的基礎之上 362參考 363第32章 故事點與時間的關系 364故事 364模型 367恐懼因素 368寬范圍 368成功要領 371收集正確的數據 371用數據來改善 372故事點的REFLECT原則 373參考 374第33章 沉浸式面試與招聘 375故事 375模型 378預測 378雇傭要有正確原因 378不良招聘的成本 379技能,能力,還是兩者兼顧 380如何招聘 380候選人篩選 381準備與計劃 382候選人打分 383招聘管理和非技術人員 384成功要領 384建立一個可重復的招聘流程 385專注于能力而不是問題 385技能容易學,能力不易學 385找到比你強的人 386理解成本并加大投資 386引用 386參考 387第34章 激勵與成果掛鉤 388故事 388模型 391設置關注點 391按客戶滿意度統一目標 391優先級的排定和調整 392其他好處 394成功要領 394銷售與開發一體化 394停止犧牲人員和質量:對項目組合進行排序 394管理層的支持 395參考 395第35章 Scrum項目中的風險管理 396故事 396模型 397客戶風險:PO 399社會化風險:ScrumMaster 399技術風險:開發(核心)團隊 400成功要領 400放手 400敏捷起來 401參考 401附錄 Scrum框架角色 404ScrumMaster 404產品負責人 404開發團隊 404工件 405Sprint Backlog 406燃盡圖 407會議 407計劃會 407每日Scrum 408Sprint評審會 409Sprint回顧會 409結語 410