Date post: | 06-Jul-2015 |
Category: |
Technology |
Upload: | agile-lietuva |
View: | 437 times |
Download: | 2 times |
What is XP?
• Agile software development methodology
• Cares about customers, managers and developers
Consider XP if
• Code is a mess, many bugs, integration problems
• Releases cause lots of stress
• Difficult to release more frequently
• Difficult to add new functionality
• Testing takes too long
or... if you use Scrum :)
AS - Adequately Satisfied PS - Partially SatisfiedNS - Not Satisfied
Comparing XP and Scrum
AttributesXPXPXP ScrumScrumScrum
AttributesAS PS NS AS PS NS
Software Requirements 60% 40% 0% 60% 20% 20%
Construction of Software 75% 25% 0% 0% 0% 100%
Software Testing 100% 0% 0% 0% 0% 100%
Software Engineering Management 80% 0% 20% 80% 20% 0%
Agile Principles - Proposed Practices relation 75% 8% 17% 50% 17% 33%
J.M. Fernandes and M. Almeida, "Classification and Comparison of Agile Methods", ;in Proc. QUATIC, 2010, pp.391-396.
What is special about XP?
• XP practices
• Emphasis on simplicity, quality and testing
• Can keep cost of change low
Cost of change
Cost of change
Time
Traditional
XP
sweet promise :)
XP practices
Test Driven Development
PairProgramming
ContinuousIntegration
Stories
Slack
Simple Design
Refactoring
Energized work
Sit Together
Weekly Cycle
Quarterly Cycle
Informative Workspace
WholeTeam
Some XP practices aren’t very special
Some general agile stuff
• practice Stories
• practice Weekly Cycle
• practice Quarterly Cycle
• practice Informative Workspace
Whole Team
• Cross-functional team
• We belong
• We are in this together
• We support each others’ work, growth, and learning
Sit Together
• Put team in one open room
• Communication!
Show me the money!
Simple Design
• Do the Simplest Thing that Could Possibly Work
• You Aren’t Going to Need It (YAGNI)
• Simplicity according to Kent Beck:• Runs all the tests
• Reveals all the intention
• No duplication
• Fewest number of classes or methods
Test Driven Development
• Tests as specification rather than verification
• Test before code or test after code?
• Red, green, refactor
Hierarchy of tests
Unit tests
Integration tests
Acceptancetests
Slower
Faster
Fewer
More
Refactoring
• Refactoring is a disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior {Martin Fowler}
• Keeps codebase in optimal state
• Removes technical debt
• Hardly possible without automated tests
Continuous Integration
• Integrate changes every couple of hours
• Fast feedback: 10-minute build!
• Split big product into multiple builds by component
• Parallel builds and more hardware to reduce build time
10-minute build!
10 min.
10 min.
10 min.10 min.
10 min.
10 min.
10 min.10 min.
10 min.
10 min.
10 min.
10 min.
Pair Programming
• Better code, less bugs, know-how sharing
•Driving and navigating
• Avoid teacher/student situation
• Personal hygiene!
Energized Work
• Maintain productivity for an indefinite interval of time
• Limited working hours
Slack
• [Dictionary definition: lacking in activity; not busy: a slack season for the travel business.]
•Deliver what you promise!
• Include minor tasks into iteration, which can be dropped out
• Include refactorings, researches or HackWeeks
Key practices of XP
Test Driven Development
PairProgramming
ContinuousIntegration
Stories
Slack
Simple Design
Refactoring
Energized work
Sit Together
Weekly Cycle
Quarterly Cycle
Informative Workspace
WholeTeam
Keep cost of change low
Cost of change
Time
Traditional
XP
enabled by TDD, CI and Refactoring
But I don’t hear much about XP recently...
What’s happened
• Agile is mainstream, hence abused
• Agile = Scrum problem
• XP is often combined with Scrum, but not mentioned explicitly
• Nevertheless, XP is alive and kicking! :)
Starting from scratch?
• Start with XP. It will take you further
• You don’t have to use all XP practices
• If you start with Scrum, borrow technical XP practices
Shape it your way!
• Always remember - Agile is about people over processes
•None of the processes is a silver bullet
• Combine the best of XP, Scrum, Lean - whatever works for you and your team
Further readings
• Kent Beck, Cynthia Andres. Extreme Programming Explained: Embrace Change, Addison-Wesley, 2nd edition.
• Kent Beck, Martin Fowler. Planning Extreme Programming, Addison-Wesley
• James Shore, Shane Warden. The Art of Agile Development, O’Reilly (some chapters available online jamesshore.com/Agile-Book/)
• Martin Fowler’s website has lots of goodies martinfowler.com