Extreme Programming might not be a silver bullet, but in software development it is almost that. Managers get all the bells and whistles you would expect from an agile process, whilst developers are equipped with a set of principles and practices, which almost inevitably improve the codebase and enable frequent delivery of quality software. In fact, many teams, which use other software development processes (Scrum, for instance) eventually end up adopting quite a few XP practices. I'll give you an introduction into XP, share my experiences and provide references to XP material for learning more about XP.
2. What is XP?
• Agile software development methodology
• Cares about customers, managers and developers
3. 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
5. Comparing XP and Scrum
XP Scrum
Attributes
AS 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. AS - Adequately Satisfied
QUATIC, 2010, pp.391-396. PS - Partially Satisfied
NS - Not Satisfied
6. What is special about XP?
• XP practices
• Emphasis on simplicity, quality and testing
• Can keep cost of change low
7. Cost of change
Traditional
Cost of change XP
sweet promise :)
Time
8. XP practices
Whole
Team
Continuous
Integration Energized work
Test Driven
Development
Stories Sit Together
Pair
Programming Refactoring
Simple
Design
Informative
Slack
Workspace
Weekly Quarterly
Cycle Cycle
14. 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
15. Test Driven Development
• Tests as specification rather than verification
• Test before code or test after code?
• Red, green, refactor
17. 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
18. 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
19. 10 min.
10 min. 10 min.
10 min. 10 min.
10 min.
10-minute build!
10 min. 10 min.
10 min.
10 min.
20. Pair Programming
• Better code, less bugs, know-how sharing
• Driving and navigating
• Avoid teacher/student situation
• Personal hygiene!
21. Energized Work
• Maintain productivity for an indefinite interval of time
• Limited working hours
22. 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
23. Key practices of XP
Whole
Team
Continuous
Integration Energized work
Test Driven
Development
Stories Sit Together
Pair
Programming Refactoring
Simple
Design
Slack Informative
Workspace
Weekly Quarterly
Cycle Cycle
24. Keep cost of change low
Traditional
Cost of change XP
enabled by TDD, CI and
Refactoring
Time
26. 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! :)
27. 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
28. Shape it your way!
• Alwaysremember - 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
29. 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