xp and scrum tools and practices for making your organization agile cory foy [[email protected]...
TRANSCRIPT
XP and ScrumTools and Practices for Making Your Organization Agile
Cory Foy [[email protected] | cornetdesign.com]
Agenda
Straws are flexible…?Adopting Agile PracticesExamining Agile PracticesApplying the PracticesSummary
Straws Are Flexible?
Straws are Flexible?
Straws Are Flexible?
Straws are Flexible?
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
The Missing Letter Theory
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-InFocus On / Focus OffTimelineColor Code DotsPatterns and ShiftsLearning MatrixStart/Stop/KeepRetrospective
Adopting Agile
Adoption RolesInnovator [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 RolesProduct Owner, ScrumMaster, self-
organizing teamThree Ceremonies
Planning Meeting, Stand-Up, Review Meeting
Three ArtifactsProduct Backlog, Sprint Backlog,
Burndown Chart
Examining Practices: XP
Applying Practices: Trouble Spots
Planning and EstimationCode QualityHeroic Releases
Applying Practices: Planning
20 Hour StoryDay 1 – 3 hoursDay 2 – 3 hoursDay 3 - 1 hourDay 4 - 2 hoursDay 5 - 0 hoursDay 6 - 5 hoursDay 7 - 3 hoursDay 8 - 2 hoursDay 9 - 1 hour
Applying Practices: Planning
20 hour story20 hours development / 9 days9 hours QA / 3 days1 hour Integration / 1 day
30 hours of effort13 days of effortCounting weekends – 17 days
Applying Practices: Planning
Story PointsMeasure of difficultyRelative to other storiesUses 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 velocityTeam uses Yesterday’s Weather to
know what to sign up for
Applying Practices: Planning
Defining DoneNot just Code CompleteSome level of QA testingSome level of Business VerificationMust be integrated with the code base
Applying Practices: Planning
Applying Practices: Planning
Applying Practices: Planning
IterationsTimeboxedFixed ScopeConsistent Length
At end of iteration, features are potentially shippable
Applying Practices: Planning
Planning GameOccurs once per iterationTeam commits to what they are going to
completeCustomer is involved for team to ask
questions
Applying Practices: Planning
Planning PokerUsed to estimate stories and tasksEach team member has a set of cardsThe story is discussedEach team member selects their card
and shows it at the same timeThe two extremes discuss whyRedraw as necessary
Applying Practices: Planning
Other Tools and ArtifactsIndex CardsBig Visible WallBurndown ChartStand-Up Meeting
Applying Practices: Code Quality
Applying Practices: Code Quality
Test-Driven DevelopmentNo Production Code written without a
failing testRed-Green-Refactor
Write a failing testWrite just enough code to make it passRefactor Duplication
ToolsJUnit, NUnit, xUnit.NET, MbUnit, Visual
Studio, etc
Applying Practices: Code Quality
Test-Driven DevelopmentDemonstration
Applying Practices: Code Quality
Pair ProgrammingTwo Minds are better than oneDoes *not* cut productivity in half –
actually shown to increase itPing Pong Coding
One person writes a failing testThe other makes it pass, and writes the
next failing test
Applying Practices: Code Quality
Applying Practices: Code Quality
Customer TestsWritten in language customers can
understandFunctional / Integration Level TestsGives an example for the developers
ToolsFIT/FitnesseDSLs
Applying Practices: Code Quality
Customer TestsDemonstration of Fitnesse
Applying Practices: Code Quality
Continuous Integration“But it works on my machine!”
Applying Practices: Code Quality
Continuous IntegrationCombination of Process and ToolsCheck in frequently (at least once a day)On each check in, the code is checked
out on a clean machine and builtA set of automated tests are run (smoke
tests)
Applying Practices: Code Quality
Continuous IntegrationNightly or weekly a full set of regression
tests could be runProblems are detected very rapidly
ToolsCruiseControl/CruiseControl.NETTeam Foundation ServerAnt/NAnt/Maven/MSBuildOne Click to Build your Software
Applying Practices: Code Quality
Other ToolsOnsite CustomerStand-Ups (tricky!)Code/Technical Debt CardsCode Reviews
Applying Practices: Heroic Releases
Applying Practices: Heroic Releases
Applying Practices: Heroic Releases
Applying Practices: Heroic Releases
Heroic Releases are not a normal part of software development
Even if it only happens at the endSustainable Pace
Applying Practices: Heroic Releases
How do we overcome this?Communication!
Define DoneEstimated Backlog / VelocitiesStand-Up MeetingsInvolvement of Business
Applying Practices: Heroic Releases
Define DoneCome to a shared understanding of what
it means to complete a storyShould have most everything you would
need to ship the storyPotentially Shippable Feature
Applying Practices: Heroic Releases
Estimated Backlog / VelocitiesBy 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 MeetingsNot Just Standing Up!Purpose
Share CommitmentCommunicate Daily Status, Progress and
PlansIdentify ObstaclesSet Direction and FocusBuild a Team
Applying Practices: Heroic Releases
Stand-Up MeetingsThree Questions
Yesterday | Today | ObstaclesFourth Question
How confident do you feel we are going to succeed?
Focus on the Backlog (or not)
Applying Practices: Heroic Releases
Stand-Up MeetingsWhen 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 dysfunctionsAbsence of TrustFear of ConflictLack of CommitmentAvoidance of AccountabilityInattention to Results
Applying Practices: Heroic Releases
Involvement of BusinessThe priorities should be decided by the
businessThe 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 PaceAlso called 40-hour week, Energized
WorkWhat about overtime?
Applying Practices: Other Factors
Whole Team / Collective OwnershipWe’re all in this together Courage as a team
Applying Practices: Other Factors
Your RoleScrumMasterAgile CoachManagerTeam MemberEvangelist
Find the things in the way – and get them out of the way
Applying Practices: Other Tools
Project Planning ToolsVersionOneRallyProjectCardsxPlannerScrumWorks
These are just tools to help once you are good at the people stuff
Summary
Becoming more agile is about the people
Be sure to understand those needs (Chasm/Dreyfus/Dysfunctions)
Understand Why you are adopting a practice
People are resistant to change if it is just dictated to them
Tools aren’t necessarily the answer
Other Resources
BooksFearless ChangeAgile Estimating and Planning / User
Stories Applied Extreme Programming ExplainedAgile Software Development with
Scrum / Agile Project Management with Scrum
Mailing ListsXP, TDD, ScrumDevelopment,
LeanAgileScrum (Yahoo! Groups)
Contact Information
Cory FoySite: http://www.cornetdesign.comEmail: [email protected] will be posted on my site by
tomorrow