內容簡介本書取材于國際知名敏捷教練的真實經歷,展示了她們在輔導團隊進行敏捷實踐過程中所積累的輔導技巧,凝聚著她們對敏捷輔導的真知灼見,每章還針對特定主題總結了在轉型過程中教練和團隊可能面對的障礙及其應對方案。本書具有較強的實用性和指導性,適合項目經理、技術總監和敏捷團隊的所有成員閱讀與參考。推薦序(一)
如果對敏捷軟件開發或者是整個軟件開發很感興趣,我有個好消息要告訴你,Rachel和Liz這本書肯定能幫助你。它不僅僅是講教導,還會講如何做好整件事情。當我們認真對待一件事情的時候,不管是打高爾夫、彈鋼琴、繪畫還是瘦身美體,有教練從旁指導通常都會很有幫助。優秀教練熟悉相關領域,可以評估我們現在的進展程度,告訴我們下一步如何繼續提升。在我們遇到困難而停滯不前的時候,教練可以幫我們保持積極的心態和氣勢。
我們大多數人花在工作上的時間,遠遠比花在副業(例如高爾夫或仰臥起坐)上的時間多。然而,我們卻很少甚至得不到幫助以提升自己。事實上,幫助他人、被幫助以及幫助自己的機會就在我們身邊。本書將幫助大家發現這些機會并加以充分利用。
敏捷軟件開發看似簡單,其實不然。它的核心無非是先選擇一些東西進行開發,短時間內快速完成,回顧已發生的事情,然后再重復上述過程直至產品完成。沒什么東西嘛,對吧?其實,這里面大有文章。大多數嘗試使用敏捷方法的團隊在很早期就能嘗到甜頭。最出色的敏捷團隊,則能夠實現翻倍甚至更高的生產力。這些高績效團隊并不見得比你的團隊更聰明,只不過是工作方式更好罷了。每一個團隊都需要找到行之有效的更好方式,而這本書講的就是“發現更好的方式并付諸實踐。”
如果是獨立敏捷教練,本書能幫助你更好地為客戶提供服務。如果是內部教練、ScrumMaster或者是客戶/產品負責人,本書能幫助他們為團隊提供服務。即使“只不過”是一名團隊成員,本書也能夠幫到你,因為我們所有人多少都會有些教導他人的機會。
Rachel和Liz帶我們把敏捷循環中關鍵的地方都走了一遍,從組建團隊、估計和規劃到追蹤和演示,再到最后主持回顧會議以提高自己。她們幫我們想辦法,例如如何改善“完成”的定義,用什么樣的方式測試和構建軟件有助于更快完工。她們幫助我們理解整潔代碼的重要性以及怎樣才能做到這一點。
如今,軟件開發相當昂貴且復雜,團隊協作也如此。不可能一本書就能包羅萬象記錄我們需要知道的一切,就是十幾本書也不行。Rachel和Liz為我們指明了團隊流程最重要的幾個方面,提供了很多關鍵建議幫我們理解并形成自己的實踐。她們在每一章列出了我們成長過程中可能會遇到的障礙,還提供了我們需要留意的關鍵事務檢查表。
Rachel和Liz還從她們自己幫助團隊的豐富經驗中挑出實例與大家分享。真實的故事有助于我們更清楚明白地認識其中的道理,能夠知道別人面臨相似處境時能夠挺過來,我們也會感到更輕松一些。只要知道問題總有解決辦法,我們就能冷靜下來并做出明智的選擇。
這些故事、檢查表和障礙足以讓你物超所值,更何況還有其他收獲?!在“自我成長”這一章,Rachel和Liz還給出了一些進行自我提升的好建議。其中一條建議是,每個月都要閱讀一本專業相關的書籍。我建議從這本書開始讀。你會為自己的選擇深感慶幸的。Ron Jeffries
www.XProgramming.com
2009年7月推薦序(二)
去年,我在公司內部擔任敏捷教練時,買了《敏捷教練》的英文版。這本深受無數軟件開發專家的贊譽和好評的亞馬遜五星級好書,我一讀就上癮,深感相見恨晚。
書中廣泛涉獵敏捷軟件開發的方方面面,核心是如何教導開發團隊適應敏捷開發方式。它是對兩位作者多年來豐富實踐經驗的總結。書中呈現的很多東西,我們在日常開發過程中已經司空見慣,更不覺得有問題。但通過作者的講解,立即恍然頓悟,心有戚戚焉之余,更有知音的感覺:“哦,原來問題的癥結在這里!”在引導我們發現問題后,作者還提供了很多輔導技巧讓我們動手實踐,輕松自如地破除軟件開發中的許多障礙。
這本書最適合軟件開發團隊的經理和團隊組長或ScrumMaster閱讀。它指出了敏捷開發中各個角落可能存在的問題,介紹了如何引導團隊和組織著手改進,同時還穿插了許多實用性很強的教導技巧。很少有書能像這樣講得絲絲入扣,耐人尋味。最后,作者還告訴我們如何在敏捷教導領域實現持續成長。
如果是剛開始接觸敏捷軟件開發的新手或項目經理,這本書會幫助你撥開敏捷開發的云霧,發現以前沒有注意的許多地方。對讀者而言,會覺得書中的很多實例似曾相識,所以很容易產生共鳴。
如果你和我一樣,已經在敏捷軟件開發領域摸打滾爬很多年,肯定也喜歡總結,而且也總結了不少東西。在這本書中,我們不僅可以找到適合自己的實踐,還能學會像作者那樣以系統方式講解敏捷教導的幕后機理,學到更多實用性很強的輔導技巧。
得知本書由徐毅和袁店明負責翻譯時,我感到非常欣慰,看來我們將有一本原汁原味的高品質中譯本了。兩名譯者有很良好的語言和翻譯功底(徐毅翻譯過《管理3.0:培養和提升敏捷領導力》和《Scrum要素》),是國內敏捷開發一線浸染多年的實踐者和布道者,他們不僅積極組織參與國內敏捷活動,還具有高度的熱情和責任心,這樣的譯者是高品質專業圖書的絕對保證,因為,他們的專業素質就擺在那里,結果當然是可以預料的了。
最后,我想說的是,如果是團隊軟件開發,這本書絕對值得珍藏。教導,是一輩子的事情,永遠不會過時,因為,時不時地溫故知新,實乃人生一大幸事!
蔡煜
新浪微博:@larrycaiyu
2013年6月
譯 者 序
初次結識Rachel,是在2007年。她來到杭州諾西,有一場“回顧會議引導師”的培訓,還參與引導了我們團隊的一次回顧會議,當時我是ScrumMaster。再次見面,已是2009年在葡萄牙里斯本舉辦的ACME諾西內部敏捷教練大會,她協助組織、引導了這次會議。當時,我已經加入內部名為“Flexible Company”的團隊,成為一名專職敏捷教練,我們負責在全球范圍內推動諾西產品研發向敏捷轉型。作為敏捷教練必讀書籍,我們把它推薦給公司內部的所有ScrumMaster和敏捷教練,今年的ACME大會更是直接給參會者每個人都發了一本。
我一讀這本書就喜歡上了,愛不釋手。它從教練基礎講起,介紹了如何融入敏捷團隊,如何著手逐步地推動團隊的敏捷實踐,如何建立一個持續改進的團隊,最后針對敏捷教練如何提高自己給出了很多的建議。我覺得這就是任何一個敏捷教練都應該要閱讀的書。于是我開始積極地聯系Rachel,主動請纓想把這本書翻譯成中文引進國內,Rachel積極回應并聯系出版社牽線搭橋。但很遺憾國內出版社認為當時國內敏捷氛圍還不夠濃厚,敏捷教練這種角色尚未得到大眾的關注、了解和認可,未能出版。
如今,敏捷在國內發展得如火如荼,在不同領域都有應用,包括互聯網和移動互聯網等行業。各種各樣的敏捷教練也層出不窮,使用谷歌搜索 “敏捷教練”可以找到近250萬條結果,業內關于敏捷教練的各種抱怨聲同樣不絕于耳。業界急需這樣一本專門針對敏捷教練進行指點的書籍。
敏捷教練的工作,并不是做過敏捷開發就能夠做好的。自己做得好和教別人做好,根本就是兩回事。獲得親身實踐敏捷的經驗,只是敏捷教練之路的第一步;還要能學會如何講解幫助人們理解敏捷;還要能通過言傳身教等方式指導人們學會如何進行敏捷實踐;等等。
在書中,Rachel和Liz將教練工作分為五大不同的活動類型,包括支持、教育、引導、反饋和留意,進行了深入細致地描述。教練工作的本質是與人共事,轉變人們的思想和觀念,并輔導他們學會使用某些具體的實踐、工具和方法,兩位作者也在書中分享了很多她們自己的經歷和故事,栩栩如生。教練工作中有可能會遇到的各種難題,作者們也都在書中專門羅列出來,還給出了應對這些難題的意見和建議。以敏捷教練輔導團隊實踐敏捷的時間為順序,兩位作者逐步地指引著讀者從介入團隊、構建敏捷團隊、共同計劃、每日站會、保持可見、做到“完成”、以測試驅動開發、整潔代碼一直到演示結果、以回顧會議驅動變革,最后則是如何不斷地提高自身能力的諸多建議。
這本書必將能幫助國內的敏捷實踐者更深入地了解敏捷實踐,以及如何以敏捷教練的身份輔導其他實踐者和團隊學習敏捷。敏捷教練和顧問的工作,做過這么多年之后,我越發覺得這本書實屬敏捷教練的必備之選。作為實踐性很強的工作,只看書是絕對不行的,務必一邊看書一邊實踐,并不斷反思回顧、持續改進,還要與大家多多交流、分享。
徐毅
敏捷教練
2013年5月
前 言
敏捷的宗旨是團隊成員齊心協力產出偉大的軟件。作為一名敏捷教練,你可以幫助你的團隊邁出第一步,而后與敏捷共舞,直到所有團隊成員完全釋放出敏捷潛力。
這本書會告訴你怎么幫助團隊激發敏捷的潛能。本書專注于各種實用的建議、小竅門和技術,用于教導團隊以提高他們的成效。這本書適合所有想輔導團隊進行敏捷開發的人,不管你是項目經理、技術主管,還是軟件團隊成員,都適合。
敏捷教導的藝術在于理解所處環境和敏捷軟件開發潛藏的價值,知道如何把它們糅合到一起。敏捷教練自己并不需要知道所有的答案,找到正確辦法需要時間和少量嘗試。每次和團隊合作我們都很有收獲,因為有些團隊能夠想出非常棒的解決方案。
我們將全方位講解敏捷實踐,從創建計劃到部署軟件。我們并不局限于少量敏捷方法,而是探究更廣泛的一系列實踐,例如規劃和技術的實踐,因為兩者結合能帶來一個越來越穩固的系統。然而,根據我們的經驗,敏捷實踐的機理并不難,難在如何輔導人們接受和采納它們。這正是本書的內容。
通用敏捷
我們共事過的團隊多數都混合使用極限編程、精益和Scrum,因此在整本書中,我們所說的敏捷指的就是這個“混血兒”。
圖中顯示的是敏捷流程的簡化版生命周期,一個團隊按迭代方式交付軟件的過程。迭代最開始是基于用戶故事進行規劃,最后以評審和回顧會議結束。團隊共用同一片工作區域,一天的工作始于團隊任務板前的每日站會。他們以測試驅動開發和持續集成的方式創建軟件。一些團隊采用一周的短迭代,也有一些團隊選擇一個月的時間間隔。
敏捷教練致力于幫助跨職能開發團隊及其業務干系人建立起一種健康的協作關系。不同組織中“客戶”的意義各不相同,我們在此用來指代和團隊一起工作的業務代表(等同于Scrum中的產品負責人角色),他們并不承擔團隊角色的職責。
這個生命周期圖展現了敏捷實踐相互銜接的方式。不過,并不是非得從最上面的地方開始實施敏捷。團隊可以選擇從該循環中的任何一個實踐處開始起步,隨后再逐步地采納更多實踐。
本書的目標
教導工作就是要與人共事。人們屬于不同的項目和團隊,又都歸屬于同一個組織。由于每個人、每個項目、每個團隊和每個組織都各不相同,所以我們也無法確切地指點你在具體環境下應該怎么做。
我們只告訴你有哪些通用法則是需要遵循的,哪些不同觀點的建議需要采納。
我們沒有永遠有效的神奇公式,因為環境都是不一樣的。取決于團隊所處的不同環境,我們可能會給兩個團隊完全相反的建議。例如,我們通常會建議項目經理參加每日站會,但有時我們也會建議他們別攪和。需要考慮的因素包括團隊的規模、承受的壓力以及團隊成員的經驗水平。
整本書里都講我們應對不同環境的故事,介紹很多有針對性的技巧,大家一旦碰上相似的情形就可以派上用場。你得替團隊決定要不要采納我們的建議。
時間和經驗是成為合格敏捷教練的必要條件。讀好這本書能豐富你的知識。它能幫你識破教導的圈套,教你提高自己教導水平的竅門。它能給你靈感和想法,幫你學以致用,服務于團隊。本書閱讀指南
本書各章相對獨立。可以隨意挑選閱讀,也可以按順序閱讀。我們先探討常規的教導原則,然后介紹如何運用這些原則輔導特定的敏捷實踐。留點時間看看每章末尾的檢查表,仔細想想該怎樣將它們用于團隊。輔導敏捷團隊需要跨越重重難關。我們在各章末尾和大家分享了這些故事,還建議了一些清理障礙的方法。不是想做一個巨細無遺的清單,只希望能夠給你提供一些靈感,幫助你克服難關。
致 謝
感謝我們雙方的家人,在他們的支持下,本書才得以面世。本書大部分內容都是在周末和晚上完成的,我們長時間地聊Skype,他們則靜候一旁以免打擾我們。
感謝我們雙方家庭為我們所做的一切:Don,Alex,Abby和Josh還有Ian,Sapphire和Stephanie。
感謝我們的正式評審:Mike Cohn,Frank Goovaerts,Ben Hogan,Leigh Jenkinson,Colin Jones,Allan Kelly,Turner King,Simon Kirk,Lasse Koskela,Andy Palmer,Timo Punkka,Xavier Quesada-Allue,Dan Rough,Russ Rufer,Karl Scotland,Bas Vodde,Leah Welty-Rieger,Matt Wynne,和Silicon Valley Patterns Group。
還要感謝其他幫我們評審本書并錦上添花的朋友:Esther Derby,Willem van den Ende,Ellen Gottesdiener,Julian Higman,Ron Jeffries,Norm Kerth,Antony Marcano,Richard Lyon,Ivan Moore,Linda Rising,Jerry Weinberg和Rebecca Wirfs-Brock.
同時,還要感謝Ron Jeffries,Michael Feathers,Lasse Koskela,Antony Marcano,Ivan Moore和Karl Scotland為本書貢獻的內容。
最后,我們要感謝Pragmatic Bookshelf出版社的Andy Hunt, Dave Thomas和Jackie Carter,尤其感謝我們的編輯Jackie,在過去的一年中,他耐心地輔導我們,幫助我們去蕪存精。謝謝你們的支持!目 錄
第Ⅰ部分 教導基礎
第1章 起步 3
1.1 敏捷教練的職責 3
1.2 養成教導的態度 5
1.3 預備,輔導! 8
1.4 如何開始教導 11
1.5 保持速度 13
1.6 難關 17
1.7 檢查表 18
第2章 與人合作 19
2.1 傾聽 19
2.2 給予反饋 23
2.3 化解矛盾 25
2.4 達成共識 27
2.5 難關 28
2.6 檢查表 30
第3章 領導變革 31
3.1 引入變革 31
3.2 提問 35
3.3 鼓勵學習 40
3.4 引導會議 43
3.5 難關 44
3.6 檢查表 46
第4章 建設敏捷團隊 47
4.1 幫助團隊形成凝聚力 47
4.2 營造團隊空間 50
4.3 角色平衡 52
4.4 激勵團隊 53
4.5 難關 57
4.6 檢查表 59
第Ⅱ部分 集體規劃
第5章 每日站會 63
5.1 站立 64
5.2 始于團隊,服務于團隊 65
5.3 處理問題 69
5.4 設定時間 71
5.5 擇機輔導 72
5.6 難關 73
5.7 檢查表 77
第6章 理解構建目標 79
6.1 用戶故事的生命周期 79
6.2 鼓勵交談 80
6.3 與卡片共舞 81
6.4 確認細節 84
6.5 難關 88
6.6 檢查表 90第7章 提前計劃 91
7.1 為規劃做準備 92
7.2 理解優先級順序 92
7.3 明確工作規模 93
7.4 審查并承諾 97
7.5 追蹤注意 102
7.6 難關 103
7.7 檢查表 107
第8章 公示進展情況 109
8.1 團隊板 109
8.2 大型可視化圖表 115
8.3 維護團隊板 118
8.4 難關 119
8.5 檢查表 120
第Ⅲ部分 關心質量
第9章 做到“完成” 125
9.1 誰來做測試? 125
9.2 定義“完成”的意義 126
9.3 測試的規劃 128
9.4 缺陷管理 129
9.5 盡早得到反饋 134
9.6 從未完成中復蘇 135
9.7 難關 137
9.8 檢查表 138
第10章 測試驅動開發 139
10.1 引入測試驅動開發 139
10.2 持續集成 146
10.3 保持使用TDD 150
10.4 難關 152
10.5 檢查表 153
第11章 代碼整潔 155
11.1 增量式設計 155
11.2 集體代碼所有權 160
11.3 結對編程 165
11.4 難關 168
11.5 檢查表 170
第Ⅳ部分 傾聽反饋
第12章 演示成果 175
12.1 準備演示會議 176
12.2 每個人都要上場 180
12.3 發布軟件 183
12.4 難關 184
12.5 檢查表 186
第13章 以回顧驅動變革 187
13.1 引導回顧會議 188
13.2 策劃回顧會議 197
13.3 更大范圍回顧 199
13.4 難關 200
13.5 檢查表 201
第14章 自我成長 203
14.1 增長見識的方式 203
14.2 制定計劃 207
14.3 構建自己的人脈 207
14.4 個人反思 209
14.5 放松,要淡定 212
14.6 檢查表 214
關于作者 215
關于譯者 216