Audrys Kažukauskas - Introduction into Extreme Programming
-
Upload
agile-lietuva -
Category
Technology
-
view
439 -
download
2
description
Transcript of Audrys Kažukauskas - Introduction into Extreme Programming
![Page 2: Audrys Kažukauskas - Introduction into Extreme Programming](https://reader033.fdocuments.net/reader033/viewer/2022060201/559a593b1a28ab2a4a8b46d1/html5/thumbnails/2.jpg)
What is XP?
• Agile software development methodology
• Cares about customers, managers and developers
![Page 3: Audrys Kažukauskas - Introduction into Extreme Programming](https://reader033.fdocuments.net/reader033/viewer/2022060201/559a593b1a28ab2a4a8b46d1/html5/thumbnails/3.jpg)
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
![Page 4: Audrys Kažukauskas - Introduction into Extreme Programming](https://reader033.fdocuments.net/reader033/viewer/2022060201/559a593b1a28ab2a4a8b46d1/html5/thumbnails/4.jpg)
or... if you use Scrum :)
![Page 5: Audrys Kažukauskas - Introduction into Extreme Programming](https://reader033.fdocuments.net/reader033/viewer/2022060201/559a593b1a28ab2a4a8b46d1/html5/thumbnails/5.jpg)
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.
![Page 6: Audrys Kažukauskas - Introduction into Extreme Programming](https://reader033.fdocuments.net/reader033/viewer/2022060201/559a593b1a28ab2a4a8b46d1/html5/thumbnails/6.jpg)
What is special about XP?
• XP practices
• Emphasis on simplicity, quality and testing
• Can keep cost of change low
![Page 7: Audrys Kažukauskas - Introduction into Extreme Programming](https://reader033.fdocuments.net/reader033/viewer/2022060201/559a593b1a28ab2a4a8b46d1/html5/thumbnails/7.jpg)
Cost of change
Cost of change
Time
Traditional
XP
sweet promise :)
![Page 8: Audrys Kažukauskas - Introduction into Extreme Programming](https://reader033.fdocuments.net/reader033/viewer/2022060201/559a593b1a28ab2a4a8b46d1/html5/thumbnails/8.jpg)
XP practices
Test Driven Development
PairProgramming
ContinuousIntegration
Stories
Slack
Simple Design
Refactoring
Energized work
Sit Together
Weekly Cycle
Quarterly Cycle
Informative Workspace
WholeTeam
![Page 9: Audrys Kažukauskas - Introduction into Extreme Programming](https://reader033.fdocuments.net/reader033/viewer/2022060201/559a593b1a28ab2a4a8b46d1/html5/thumbnails/9.jpg)
Some XP practices aren’t very special
![Page 10: Audrys Kažukauskas - Introduction into Extreme Programming](https://reader033.fdocuments.net/reader033/viewer/2022060201/559a593b1a28ab2a4a8b46d1/html5/thumbnails/10.jpg)
Some general agile stuff
• practice Stories
• practice Weekly Cycle
• practice Quarterly Cycle
• practice Informative Workspace
![Page 11: Audrys Kažukauskas - Introduction into Extreme Programming](https://reader033.fdocuments.net/reader033/viewer/2022060201/559a593b1a28ab2a4a8b46d1/html5/thumbnails/11.jpg)
Whole Team
• Cross-functional team
• We belong
• We are in this together
• We support each others’ work, growth, and learning
![Page 12: Audrys Kažukauskas - Introduction into Extreme Programming](https://reader033.fdocuments.net/reader033/viewer/2022060201/559a593b1a28ab2a4a8b46d1/html5/thumbnails/12.jpg)
Sit Together
• Put team in one open room
• Communication!
![Page 13: Audrys Kažukauskas - Introduction into Extreme Programming](https://reader033.fdocuments.net/reader033/viewer/2022060201/559a593b1a28ab2a4a8b46d1/html5/thumbnails/13.jpg)
Show me the money!
![Page 14: Audrys Kažukauskas - Introduction into Extreme Programming](https://reader033.fdocuments.net/reader033/viewer/2022060201/559a593b1a28ab2a4a8b46d1/html5/thumbnails/14.jpg)
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
![Page 15: Audrys Kažukauskas - Introduction into Extreme Programming](https://reader033.fdocuments.net/reader033/viewer/2022060201/559a593b1a28ab2a4a8b46d1/html5/thumbnails/15.jpg)
Test Driven Development
• Tests as specification rather than verification
• Test before code or test after code?
• Red, green, refactor
![Page 16: Audrys Kažukauskas - Introduction into Extreme Programming](https://reader033.fdocuments.net/reader033/viewer/2022060201/559a593b1a28ab2a4a8b46d1/html5/thumbnails/16.jpg)
Hierarchy of tests
Unit tests
Integration tests
Acceptancetests
Slower
Faster
Fewer
More
![Page 17: Audrys Kažukauskas - Introduction into Extreme Programming](https://reader033.fdocuments.net/reader033/viewer/2022060201/559a593b1a28ab2a4a8b46d1/html5/thumbnails/17.jpg)
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
![Page 18: Audrys Kažukauskas - Introduction into Extreme Programming](https://reader033.fdocuments.net/reader033/viewer/2022060201/559a593b1a28ab2a4a8b46d1/html5/thumbnails/18.jpg)
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
![Page 19: Audrys Kažukauskas - Introduction into Extreme Programming](https://reader033.fdocuments.net/reader033/viewer/2022060201/559a593b1a28ab2a4a8b46d1/html5/thumbnails/19.jpg)
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.
![Page 20: Audrys Kažukauskas - Introduction into Extreme Programming](https://reader033.fdocuments.net/reader033/viewer/2022060201/559a593b1a28ab2a4a8b46d1/html5/thumbnails/20.jpg)
Pair Programming
• Better code, less bugs, know-how sharing
•Driving and navigating
• Avoid teacher/student situation
• Personal hygiene!
![Page 21: Audrys Kažukauskas - Introduction into Extreme Programming](https://reader033.fdocuments.net/reader033/viewer/2022060201/559a593b1a28ab2a4a8b46d1/html5/thumbnails/21.jpg)
Energized Work
• Maintain productivity for an indefinite interval of time
• Limited working hours
![Page 22: Audrys Kažukauskas - Introduction into Extreme Programming](https://reader033.fdocuments.net/reader033/viewer/2022060201/559a593b1a28ab2a4a8b46d1/html5/thumbnails/22.jpg)
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
![Page 23: Audrys Kažukauskas - Introduction into Extreme Programming](https://reader033.fdocuments.net/reader033/viewer/2022060201/559a593b1a28ab2a4a8b46d1/html5/thumbnails/23.jpg)
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
![Page 24: Audrys Kažukauskas - Introduction into Extreme Programming](https://reader033.fdocuments.net/reader033/viewer/2022060201/559a593b1a28ab2a4a8b46d1/html5/thumbnails/24.jpg)
Keep cost of change low
Cost of change
Time
Traditional
XP
enabled by TDD, CI and Refactoring
![Page 25: Audrys Kažukauskas - Introduction into Extreme Programming](https://reader033.fdocuments.net/reader033/viewer/2022060201/559a593b1a28ab2a4a8b46d1/html5/thumbnails/25.jpg)
But I don’t hear much about XP recently...
![Page 26: Audrys Kažukauskas - Introduction into Extreme Programming](https://reader033.fdocuments.net/reader033/viewer/2022060201/559a593b1a28ab2a4a8b46d1/html5/thumbnails/26.jpg)
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! :)
![Page 27: Audrys Kažukauskas - Introduction into Extreme Programming](https://reader033.fdocuments.net/reader033/viewer/2022060201/559a593b1a28ab2a4a8b46d1/html5/thumbnails/27.jpg)
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
![Page 28: Audrys Kažukauskas - Introduction into Extreme Programming](https://reader033.fdocuments.net/reader033/viewer/2022060201/559a593b1a28ab2a4a8b46d1/html5/thumbnails/28.jpg)
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
![Page 29: Audrys Kažukauskas - Introduction into Extreme Programming](https://reader033.fdocuments.net/reader033/viewer/2022060201/559a593b1a28ab2a4a8b46d1/html5/thumbnails/29.jpg)
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