550 likes | 718 Views
XP and Scrum. Tools and Practices for Making Your Organization Agile. Cory Foy [ foyc@cornetdesign.com | cornetdesign.com]. Agenda. Straws are flexible…? Adopting Agile Practices Examining Agile Practices Applying the Practices Summary. Straws Are Flexible?. Straws are Flexible?.
E N D
XP and Scrum Tools and Practices for Making Your Organization Agile Cory Foy [foyc@cornetdesign.com | cornetdesign.com]
Agenda • Straws are flexible…? • Adopting Agile Practices • Examining Agile Practices • Applying the Practices • Summary
Agile Manifesto • Individuals and Interactions over Processes and Tools • Working Software over Comprehensive Documentation • Customer Collaboration over Contract Negotiation • Responding to Change over Following a Plan • Craftsmanship over Crap
Retrospectives • Original Definition: A ritual held at the end of a project to learn from the experience and to plan changes for the next effort • In Practice: A chance to realign the team on core beliefs • Agile Retrospectives by Diana Larsen and Esther Derby
Retrospectives • Check-In • Focus On / Focus Off • Timeline • Color Code Dots • Patterns and Shifts • Learning Matrix • Start/Stop/Keep • Retrospective
Adopting Agile • Adoption Roles • Innovator [2.5%] • Early Adopter [13.5%] • Early Majority [34%] • Late Majority [34%] • Laggards [16%]
Adopting Agile • Dreyfus Model of Skills Acquisition • Novice - Needs to be told exactly what to do. Very little context to base decisions off of. • Advanced beginner - Has more context for decisions, but still needs rigid guidelines to follow. • Competent - Begins to question the reasoning behind the tasks, and can see longer term consequences. • Proficient - Still relies on rules, but able to separate what is most important. • Expert - Works mainly on intuition, except in circumstances where problems occur
Examining Practices: Scrum • Three Roles • Product Owner, ScrumMaster, self-organizing team • Three Ceremonies • Planning Meeting, Stand-Up, Review Meeting • Three Artifacts • Product Backlog, Sprint Backlog, Burndown Chart
Applying Practices: Trouble Spots • Planning and Estimation • Code Quality • Heroic Releases
Applying Practices: Planning • 20 Hour Story • Day 1 – 3 hours • Day 2 – 3 hours • Day 3 - 1 hour • Day 4 - 2 hours • Day 5 - 0 hours • Day 6 - 5 hours • Day 7 - 3 hours • Day 8 - 2 hours • Day 9 - 1 hour
Applying Practices: Planning • 20 hour story • 20 hours development / 9 days • 9 hours QA / 3 days • 1 hour Integration / 1 day • 30 hours of effort • 13 days of effort • Counting weekends – 17 days
Applying Practices: Planning • Story Points • Measure of difficulty • Relative to other stories • Uses Powers of 2 (1,2,4,8), or Fibonacci Scale (1,2,3,5,8) • How many stories you complete in an iteration is your velocity • Team uses Yesterday’s Weather to know what to sign up for
Applying Practices: Planning • Defining Done • Not just Code Complete • Some level of QA testing • Some level of Business Verification • Must be integrated with the code base
Applying Practices: Planning • Iterations • Timeboxed • Fixed Scope • Consistent Length • At end of iteration, features are potentially shippable
Applying Practices: Planning • Planning Game • Occurs once per iteration • Team commits to what they are going to complete • Customer is involved for team to ask questions
Applying Practices: Planning • Planning Poker • Used to estimate stories and tasks • Each team member has a set of cards • The story is discussed • Each team member selects their card and shows it at the same time • The two extremes discuss why • Redraw as necessary
Applying Practices: Planning • Other Tools and Artifacts • Index Cards • Big Visible Wall • Burndown Chart • Stand-Up Meeting
Applying Practices: Code Quality • Test-Driven Development • No Production Code written without a failing test • Red-Green-Refactor • Write a failing test • Write just enough code to make it pass • Refactor Duplication • Tools • JUnit, NUnit, xUnit.NET, MbUnit, Visual Studio, etc
Applying Practices: Code Quality • Test-Driven Development • Demonstration
Applying Practices: Code Quality • Pair Programming • Two Minds are better than one • Does *not* cut productivity in half – actually shown to increase it • Ping Pong Coding • One person writes a failing test • The other makes it pass, and writes the next failing test
Applying Practices: Code Quality • Customer Tests • Written in language customers can understand • Functional / Integration Level Tests • Gives an example for the developers • Tools • FIT/Fitnesse • DSLs
Applying Practices: Code Quality • Customer Tests • Demonstration of Fitnesse
Applying Practices: Code Quality • Continuous Integration • “But it works on my machine!”
Applying Practices: Code Quality • Continuous Integration • Combination of Process and Tools • Check in frequently (at least once a day) • On each check in, the code is checked out on a clean machine and built • A set of automated tests are run (smoke tests)
Applying Practices: Code Quality • Continuous Integration • Nightly or weekly a full set of regression tests could be run • Problems are detected very rapidly • Tools • CruiseControl/CruiseControl.NET • Team Foundation Server • Ant/NAnt/Maven/MSBuild • One Click to Build your Software
Applying Practices: Code Quality • Other Tools • Onsite Customer • Stand-Ups (tricky!) • Code/Technical Debt Cards • Code Reviews
Applying Practices: Heroic Releases • Heroic Releases are not a normal part of software development • Even if it only happens at the end • Sustainable Pace
Applying Practices: Heroic Releases • How do we overcome this? • Communication! • Define Done • Estimated Backlog / Velocities • Stand-Up Meetings • Involvement of Business
Applying Practices: Heroic Releases • Define Done • Come to a shared understanding of what it means to complete a story • Should have most everything you would need to ship the story • Potentially Shippable Feature
Applying Practices: Heroic Releases • Estimated Backlog / Velocities • By having a fully estimated backlog, business decisions can be made to prioritize the items on business value • By having velocity estimates, the focus shifts to delivering value • Beware of comparing the velocity of different teams – or of individuals.
Applying Practices: Heroic Releases • Stand-Up Meetings • Not Just Standing Up! • Purpose • Share Commitment • Communicate Daily Status, Progress and Plans • Identify Obstacles • Set Direction and Focus • Build a Team
Applying Practices: Heroic Releases • Stand-Up Meetings • Three Questions • Yesterday | Today | Obstacles • Fourth Question • How confident do you feel we are going to succeed? • Focus on the Backlog (or not)
Applying Practices: Heroic Releases • Stand-Up Meetings • When do we hold them? • Morning? (Start the Day) • Mid-Morning? (Don’t Start the Day) • Afternoon? (End the Day) • Who Should Attend? • Keeping the Energy Level Up • Stand Up, 15 Minutes, Signal the End, Take it Offline
Applying Practices: Heroic Releases • Stand-Up Meetings only work if you’ve overcome some team dysfunctions • Absence of Trust • Fear of Conflict • Lack of Commitment • Avoidance of Accountability • Inattention to Results
Applying Practices: Heroic Releases • Involvement of Business • The priorities should be decided by the business • The team works during the planning game to commit to the highest priority, most valuable items • The business has to stay involved in verifying the stories
Applying Practices: Other Factors • Sustainable Pace • Also called 40-hour week, Energized Work • What about overtime?
Applying Practices: Other Factors • Whole Team / Collective Ownership • We’re all in this together • Courage as a team