The Art of Agile Development

The Art of Agile Development

The Art of Agile Development The Art of Agile Development James Shore and Shane Warden Beijing • Cambridge • Farnham • Köln • Sebastopol • Taipei • Tokyo The Art of Agile Development by James Shore and Shane Warden Copyright © 2008 James Shore and chromatic. All rights reserved. Printed in the United States of America. Published by O’Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472. O’Reilly books may be purchased for educational, business, or sales promotional use. Online editions are also available for most titles (http://safari.oreilly.com). For more information, contact our corporate/institutional sales department: (800) 998-9938 or [email protected]. Editor: Mary O’Brien Indexer: Joe Wizda Production Editor: Sarah Schneider Cover Designer: Karen Montgomery Copyeditor: Sarah Schneider Interior Designer: David Futato Proofreader: Sada Preisch Illustrator: Robert Romano Printing History: October 2007: First Edition. The O’Reilly logo is a registered trademark of O’Reilly Media, Inc. The Theory in Practice series designations, The Art of Agile Development, and related trade dress are trademarks of O’Reilly Media, Inc. While every precaution has been taken in the preparation of this book, the publisher and authors assume no responsibility for errors or omissions, or for damages resulting from the use of the information contained herein. TM This book uses RepKover™, a durable and flexible lay-flat binding. ISBN: 978-0-596-52767-9 [C] [1/10] 1263253177 To our families. Table of Contents .........................................................................Preface . xxiii Part I. Getting Started 1. Why Agile? . .................................................................. 3 Understanding Success 3 Beyond Deadlines 4 The Importance of Organizational Success 5 Enter Agility 6 Organizational Success 6 Technical Success 7 Personal Success 7 2. How to Be Agile . ............................................................. 9 Agile Methods 9 Don’t Make Your Own Method 9 The Road to Mastery 11 Find a Mentor 12 3. Understanding XP . ........................................................ 15 The XP Lifecycle 17 How It Works 19 Our Story Continues 22 The XP Team 28 The Whole Team 28 On-Site Customers 29 Programmers 33 Testers 34 Coaches 35 Other Team Members 36 The Project Community 36 Filling Roles 39 Team Size 39 IX Full-Time Team Members 40 XP Concepts 40 Refactoring 41 Technical Debt 41 Timeboxing 41 The Last Responsible Moment 42 Stories 42 Iterations 42 Velocity 43 Theory of Constraints 43 Mindfulness 43 4. Adopting XP . ............................................................... 45 Is XP Right for Us? 45 Prerequisite #1: Management Support 46 Prerequisite #2: Team Agreement 46 Prerequisite #3: A Colocated Team 47 Prerequisite #4: On-Site Customers 47 Prerequisite #5: The Right Team Size 49 Prerequisite #6: Use All the Practices 50 Recommendation #1: A Brand-New Codebase 51 Recommendation #2: Strong Design Skills 51 Recommendation #3: A Language That’s Easy to Refactor 52 Recommendation #4: An Experienced Programmer-Coach 52 Recommendation #5: A Friendly and Cohesive Team 53 Go! 53 The Challenge of Change 55 Final Preparation 56 Applying XP to a Brand-New Project (Recommended) 57 Applying XP to an Existing Project 59 Applying XP in a Phase-Based Organization 62 Extremities: Applying Bits and Pieces of XP 64 Assess Your Agility 65 Self-Assessment Quiz 67 Part II. Practicing XP 5.................................................................... Thinking . 73 Pair Programming 74 Why Pair? 75 How to Pair 75 Driving and Navigating 76 Pairing Stations 77 Challenges 78 Questions 79 Results 81 Contraindications 81 X TABLE OF CONTENTS Alternatives 81 Further Reading 82 Energized Work 82 How to Be Energized 82 Supporting Energized Work 83 Taking Breaks 84 Questions 84 Results 85 Contraindications 85 Alternatives 86 Further Reading 86 Informative Workspace 86 Subtle Cues 87 Big Visible Charts 87 Hand-Drawn Charts 88 Process Improvement Charts 88 Gaming 89 Questions 90 Results 90 Contraindications 90 Alternatives 90 Further Reading 91 Root-Cause Analysis 91 How to Find the Root Cause 91 How to Fix the Root Cause 92 When Not to Fix the Root Cause 92 Questions 92 Results 93 Contraindications 93 Alternatives 93 Retrospectives 94 Types of Retrospectives 94 How to Conduct an Iteration Retrospective 94 Step 1: The Prime Directive 95 Step 2: Brainstorming 95 Step 3: Mute Mapping 96 Step 4: Retrospective Objective 97 After the Retrospective 97 Questions 98 Results 99 Contraindications 100 Alternatives 100 Further Reading 100 6. Collaborating . ............................................................ 101 Trust 103 Team Strategy #1: Customer-Programmer Empathy 103 Team Strategy #2: Programmer-Tester Empathy 104 Team Strategy #3: Eat Together 104 TABLE OF CONTENTS XI Team Strategy #4: Team Continuity 105 Impressions 105 Organizational Strategy #1: Show Some Hustle 106 Organizational Strategy #2: Deliver on Commitments 106 Organizational Strategy #3: Manage Problems 107 Organizational Strategy #4: Respect Customer Goals 108 Organizational Strategy #5: Promote the Team 109 Organizational Strategy #6: Be Honest 109 Questions 111 Results 112 Contraindications 112 Alternatives 112 Further Reading 113 Sit Together 113 Accommodating Poor Communication 113 A Better Way 114 Exploiting Great Communication 114 Secrets of Sitting Together 115 Making Room 116 Designing Your Workspace 116 Sample Workspaces 117 Adopting an Open Workspace 118 Questions 119 Results 120 Contraindications 120 Alternatives 120 Further Reading 121 Real Customer Involvement 121 Personal Development 122 In-House Custom Development 122 Outsourced Custom Development 123 Vertical-Market Software 123 Horizontal-Market Software 124 Questions 124 Results 124 Contraindications 125 Alternatives 125 Ubiquitous Language 125 The Domain Expertise Conundrum 125 Two Languages 126 How to Speak the Same Language 126 Ubiquitous Language in Code 127 Refining the Ubiquitous Language 128 Questions 129 Results 129 Contraindications 129 Alternatives 129 Further Reading 130 Stand-Up Meetings 130 XII TABLE OF CONTENTS How to Hold a Daily Stand-Up Meeting 130 Be Brief 131 Questions 132 Results 132 Contraindications 133 Alternatives 133 Further Reading 133 Coding Standards 133 Beyond Formatting 134 How to Create a Coding Standard 134 Dealing with Disagreement 136 Adhering to the Standard 136 Questions 137 Results 138 Contraindications 138 Alternatives 138 Iteration Demo 138 How to Conduct an Iteration Demo 139 Two Key Questions 140 Weekly Deployment Is Essential 141 Questions 142 Results 143 Contraindications 143 Alternatives 143 Reporting 143 Types of Reports 144 Progress Reports to Provide 144 Progress Reports to Consider 145 Management Reports to Consider 145 Reports to Avoid 148 Questions 149 Results 150 Contraindications 151 Alternatives 151 Further Reading 151 7.................................................................. Releasing . 153 “Done Done” 155 Production-Ready Software 156 How to Be “Done Done” 157 Making Time 157 Questions 158 Results 159 Contraindications 159 Alternatives 159 No Bugs 159 How Is This Possible? 160 How to Achieve Nearly Zero Bugs 161 Ingredient #1: Write Fewer Bugs 161 TABLE OF CONTENTS XIII Ingredient #2: Eliminate Bug Breeding Grounds 162 Ingredient #3: Fix Bugs Now 162 Ingredient #4: Test Your Process 164 Ingredient #5: Fix Your Process 165 Invert Your Expectations 166 Questions 166 Results 168 Contraindications 168 Alternatives 168 Further Reading 169 Version Control 169 Concurrent Editing 170 Time Travel 171 Whole Project 171 Customers and Version Control 172 Keep It Clean 173 Single Codebase 174 Appropriate Uses of Branches 174 Questions 174 Results 176 Contraindications 176 Alternatives 176 Further Reading 177 Ten-Minute Build 177 Automate Your Build 178 How to Automate 178 When to Automate 179 Automating Legacy Projects 179 Ten Minutes or Less 180 Questions 181 Results 182 Contraindications 182 Alternatives 183 Continuous Integration 183 Why It Works 183 How to Practice Continuous Integration 184 Never Break the Build 184 The Continuous Integration Script 185 Introducing Continuous Integration 186 Dealing with Slow Builds 187 Multistage Integration Builds 187 Questions 188 Results 190 Contraindications 190 Alternatives 191 Collective Code Ownership 191 Making Collective Ownership Work 192 Working with Unfamiliar Code 192 Hidden Benefits 193 XIV TABLE OF CONTENTS Questions 193 Results 194 Contraindications 194 Alternatives 195 Documentation 195 Work-In-Progress Documentation 195 Product Documentation 196 Handoff Documentation 196 Questions 197 Results 197 Contraindications 197 Alternatives 198 8................................................................... Planning . 201 Vision 202 Product Vision 202 Where Visions Come From 203 Identifying the Vision 203 Documenting the Vision 204 How to Create a Vision Statement 204 Promoting the Vision 205 Questions 206 Results 207 Contraindications 207 Alternatives 207 Further Reading 207 Release Planning 207 One Project at a Time 207 Release Early, Release Often 208 How to Release Frequently 210 An Example 211 Adapt Your Plans 212 Keep Your Options Open 213 How to Create a Release Plan 214 Planning at the Last Responsible Moment 216 Adaptive Planning and Organizational Culture 218 Questions 219 Results 219 Contraindications 220 Alternatives 220 Further Reading 221 The Planning Game 221 How to Play 221 How to Win 223 Questions 224 Results 225 Contraindications 225 Alternatives 225

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    444 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us