Synopses & Reviews
Have your software projects been suffering from the age-old development problems of slipped schedules and ballooning budgets? Has your development organization experienced a variety of failed and canceled projects? If so, you may benefit from infusing some agility into your development process. Agile development breaks with a 40-year tradition of applying ever more structure and formalization to the design and development of software by advocating a return to the basic principles of satisfied customers, working software, and the willingness to accept and respond to change. As the popularity of agile development has grown, IT professionals have begun to struggle with ways to integrate agile practices and processes into traditional project environments. Integrating Agile Development in the Real World provides programmers and managers with specific and implementable ways to use agile processes in everyday software development projects. Whether read cover-to-cover, or used as a field guide during an agile transition, this book provides valuable insight into how agile practices and processes may be applied in almost any environment. Everything from how to deliver a working system sooner, acknowledge and respond to change, better meet the needs of the project's customer, to increasing software quality, and fostering a more communicative and collaborative team culture are thoroughly covered.
This book provides developers and managers with specific and implementable ways to infuse agile processes into everyday software development projects. It transcends many of the self-imposed boundaries of agile development by addressing the use of agile practices in a fixed cost setting, synthesis of agile processes and a waterfall development environment, and the integration of traditional project management tools with agile ones.
About the Author
Peter Schuh (Chicago, IL) has held virtually every position on a software development project team, including project manager, programmer, DBA, business analyst, technical writer, and account manager. Most recently, he has managed IT projects in the leasing, healthcare and e-commerce fields. He has written and spoken about the integration of agile processes into non-agile project environments, Extreme Programming, and agile development¿s impacts upon database administration.
Table of Contents
1 Agile Development Primer What Is Agile Development? The Agile Methodologies Agile Values Agile Practices Agile Principles 2 Agile Characteristics The Characteristics of an Agile Project The Development Team Agile Practices, Non-Agile Values What Projects Can Benefit from Agile Development? Starting Monday: Assessing Your Project Environment 3 The Agile Methodologies Common Themes Methodology Descriptions Extreme Programming (XP) Scrum Feature-Driven Development (FDD) The Crystal Methodologies Adaptive Software Development (ASD) Dynamic Systems Development Method (DSDM) Lean Software Development Starting Monday: Investigate Further 4 Selecting an Approach That Fits Choosing Between an Agile and a Traditional Approach Selecting the Right Agile Approach 5 Going Agile Is the Team Ready? Announcing the Teams Intention to Go Agile Encountering, Addressing, and Overcoming Resistance Starting with the Bare Minimum Altering the Project Environment Iteration Zero Discontinue a Process Once It Has Served Its Purpose False Agile Practitioners and Projects Starting Monday: Measuring the Teams Progress 6 Agile Practices Where to Start? Selecting the Next Practice Rejecting a Practice Adopt Practices Before Tools Learn Programming Practices in Pairs Agile Practices in This Book 7 Design and Programming Implementing Agile Programming Practices Practices for the Lone Agile Programmer Misperceptions About Agile Design Agile Practice: Build Automation Agile Practice: Automated Deployment Agile Practice: Continuous Integration Agile Practice: Simple Design Agile Practice: Collective Ownership Agile Practice: Feature Teams Agile Practice: Refactoring Agile Practice: Pair Programming Starting Monday: Go Slow 8 Testing An Agile Approach to Testing The Good Enough Approach Testing as the Best Defense Agile Practice: Automated Unit Testing Agile Practice: Acceptance Tests Agile Practice: Test-Driven Development Starting Monday: Quick and Dirty Automated Testing 9 Data and the Database Why Working with Data Is Tougher than Working with Code The Agile DBA Start with Something Simpler than a Database Legacy Data Conversion Test Data Management Agile Practice: ObjectMother Agile Practice: Mock Objects Agile Practice: Agile Data Management Starting Monday: Cultivate an Agile DBA 10 Agile Management Contrasting Agile and Traditional Management Timeboxing Continuous Planning Continuous Evaluation Binary Status Reporting Velocity Sustainable Pace Individual Empowerment The Agile Project Manager The Chapters on Agile Management 11 Features and User Stories Features User Stories Converting from Use Cases and Requirement Documents Solution Sheets Estimation 12 Project Initiation An Agile Approach to Project Initiation Define the Project Mission Gather a List of Features Draw Up a Plan Upfront Architecture and Modeling Planning for the End Agile Practice: Blitz Planning 13 Small Releases The Agile Approach to the Project Release Release Planning Changing the Functionality and Delivery Date of a Release Taking Time Between Releases Tools for Planning and Tracking Releases Requirements Tracing Agile Practice: Planning Game Starting Monday: Institute Small Releases 14 Executing Iterative Development An Agile Approach to Iterative Development Iteration Planning Meeting Monitoring Progress Within the Iteration Changing the End Date of the Current Iteration Changing the Functionality of the Current Iteration Abnormally Terminating an Iteration Adapting the Iteration Sprints and Other Releasable Iterations Working Without Iterations Agile Practice: The Task Cycle Starting Monday: Begin Iterating 15 The Customer Who Is the Customer? An Agile Approach to the Customer Getting a Customer Challenging Customers Agile Practice: Onsite Customer Starting Monday: Build a Closer Relationship with Your Customer 16 Reviewing and Reporting Progress Tracking Progress Tracking Other Factors Conducting Reviews 17 Communication and Collaboration An Agile Approach to Communication and Collaboration Engendering a Communicative and Collaborative Culture Comparing the Daily Scrum and Stand Up Meetings Agile Practice: Stand Up Meeting Agile Practice: Daily Scrum Meeting Agile Practice: Collocated Team Starting Monday: Increase Communication 18 Documentation The Perils of Documentation An Agile Approach to Documentation Poor Excuses for Documentation Minimizing Documentation Requirements Documentation at the Start of a Project Design Documentation An Agile WBS Document Handoffs Adding Documents Starting Monday: Perform a Documentation Review 19 People Making Change Palatable The Honor System Difficult Conversations Morale Hiring for Agile Projects 20 Real-World Environments Heavy Process Waterfall and Other Phased Approaches Scaling for Big Projects Project Recovery Agile Contracts Fixed Cost 21 Seeking Additional Assistance Online Resources Other Books Courses, Certification, and Coaching Ask the Author