Agile Goa 2007

    Introduction of
eXtreme Programming


      Vikas Hazrati
      Oct 31, 2007
Agenda
What is XP?
History of Extreme Programming
XP Core Components
XP Values
XP Principles
The Whole XP Team
XP Flowchar...
What is XP?
XP is a philosophy of software development
based on well laid out values, principles and
practices.


Goal of ...
What is XP?
Another methodology but why?

  • Social Change- Giving up defences
  • Based on Excellent programming techniq...
What is XP?
XP addresses risks at all levels of
development process

  • Schedule Slips
  • Defect Rate
  • Business misun...
History of Extreme
          Programming
Early Influences
    Incremental, stakeholder-driven design process

    from Al...
History of Extreme
       Programming
Scrum practices incorporated and
adapted as planning game
1999 – Extreme Programming...
Core Components


                                   Practices
      Values

                   Principles


Values bring ...
The Five Core Values of
          XP

Communication.
Simplicity.
Feedback.
Courage.
Respect




                          9
Communication

Often problem that arise in SW project
can be tracked back to lack of
communication.
XP enforces the Commun...
Simplicity

''Do the simplest thing that could possibly
work'' (DTSTTCPW) principle (elsewhere
known as KISS).

An XP coac...
Feedback
Feedback works in XP at different time scales.

Programmers have feedback on a minutes
time scale on the status o...
Courage

XP team should have the courage of throwing
code away.

XP team should have the courage of mainly
refactor the ar...
Respect

Respect for team members.
Respect for the project.




                            14
Core Components



                     Practices
Values

         Practices




                                 15
XP Principles
Humanity- People, What do people need to
become good developers?


Economics- Every action should have busin...
XP Principles
Improvement- In software development “perfect”
is a verb not adjective.


Diversity- Teams need diversity.

...
XP Principles
Redundancy- Do not remove redundancy that
serves a valid purpose.


Failure- Is failure a waste?

Quality- C...
Core Components



                      Practices
Values

         Principles




                                  19
Practices


Primary                      Corollary




             www.xebia.com
Primary Practices
Sit Together
Whole Team
Informative workspace
Energized work
Pair Programming
Stories
Weekly Cycle
Quart...
Sit Together / Whole Team




           www.xebia.com
Sit Together / Whole Team




           www.xebia.com
Informative Workspace




         www.xebia.com
Informative Workspace




         www.xebia.com
Informative Workspace




         www.xebia.com
Energized work
Work only as many hours as
productive
Ideally 40 hours a week
Programming productivity is seen to
be 4-5 ho...
Pair Programming




      www.xebia.com
Pair Programming




      www.xebia.com
Stories
Units of
customer
visible
functionality.
Should be on
the story wall
for everyone to
look at.

                  w...
Stories
Stories v/s Use Cases
    A story is not a use case, a use case is not a story


    A use case defines functiona...
Weekly / Quarterly Cycles
Weekly Cycles- Start week by writing
automated tests and then the week
implementing them, mainly...
More...
Slack
Ten Minute Build
Continuous Integration
Test First Programming
Incremental Design
 Do the simplest thing tha...
Practices


Primary                      Corollary




             www.xebia.com
Corollary Practices
Real Customer Involvement- No customer
or proxy customer are not as effective
Incremental Deployment- ...
Corollary Practices
Root Cause Analysis- 5 Why's
Shared Code- No ownership
Code and Tests- The only artifacts
Single code ...
The Whole XP Team

Emphasis on the “Whole Team”

Collaboration and collocation




             www.xebia.com
The Whole XP Team

             Programmers
                                   Users


 Testers
                          ...
XP Project




             39
XP Project Iteration




                       40
XP Project Development




                         41
XP Project Coding




                    42
FAQs




Some Frequently asked questions
          about XP




                                  43
XP vs. Rational Unified
                        Process
                       XP                         RUP


Primary Co...
Scaling XP
XP seems to allow smaller teams to
accomplish an awful lot
XP seems to hit single-team challenges
around 12-16 ...
Documentation

XP is a minimalist process
Many teams successful with index cards
and large Post-Its®
XP is not anti-docume...
Adopting XP
Find a suitable team and project
Two strategies:
  Adopt XP by-the-book first, then modify
  Refactor your p...
Questions




  ?
   www.xebia.com
Upcoming SlideShare
Loading in...5
×

Introduction to Extreme Programming

9,380

Published on

Vikas Hazrati's presentation at Agile Goa 2007 conference. http://agileindia.org/agilegoa07/index

Published in: Economy & Finance, Technology
1 Comment
11 Likes
Statistics
Notes
No Downloads
Views
Total Views
9,380
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
770
Comments
1
Likes
11
Embeds 0
No embeds

No notes for slide

Introduction to Extreme Programming

  1. 1. Agile Goa 2007 Introduction of eXtreme Programming Vikas Hazrati Oct 31, 2007
  2. 2. Agenda What is XP? History of Extreme Programming XP Core Components XP Values XP Principles The Whole XP Team XP Flowcharts FAQs Questions www.xebia.com
  3. 3. What is XP? XP is a philosophy of software development based on well laid out values, principles and practices. Goal of XP is outstanding software development at lower cost, with fewer defects, high productivity and much higher return on investment. www.xebia.com
  4. 4. What is XP? Another methodology but why? • Social Change- Giving up defences • Based on Excellent programming techniques, clear communication and teamwork • Lightweight – only do whatever adds value to the customer • Addresses constraints in software development • Can work with teams of any size • Adapts to rapidly changing requirements www.xebia.com
  5. 5. What is XP? XP addresses risks at all levels of development process • Schedule Slips • Defect Rate • Business misunderstood • Business changes • False feature list • Staff turnover www.xebia.com
  6. 6. History of Extreme Programming Early Influences Incremental, stakeholder-driven design process  from Alexander Programming as learning from Papert, Kay  Kent Beck & Ward Cunningham Mid-80s – Pair programming at Tektronix  80s, 90s – Smalltalk culture produces refactoring,  continuous integration, constant testing, close customer involvement Generalized to other environments  Early 90s – Core values developed within  patterns community, Hillside Group www.xebia.com
  7. 7. History of Extreme Programming Scrum practices incorporated and adapted as planning game 1999 – Extreme Programming Explained 1999 – Fowler publishes Refactoring 1999 – XP Immersion held, e-group formed 2000 – more books, first conferences Evolution continues through today www.xebia.com
  8. 8. Core Components Practices Values Principles Values bring purpose to practices. Practices are evidence of values. Principles are domain specific guidelines for life. www.xebia.com
  9. 9. The Five Core Values of XP Communication. Simplicity. Feedback. Courage. Respect 9
  10. 10. Communication Often problem that arise in SW project can be tracked back to lack of communication. XP enforces the Communication Value by employing many practice that could not be carried without communicating (e.g. pair programming, unit testing etc.). XP employs a Coach whose job is that of noticing when people are not communicating and reintroduce them. 10
  11. 11. Simplicity ''Do the simplest thing that could possibly work'' (DTSTTCPW) principle (elsewhere known as KISS). An XP coach may say DTSTTCPW when he sees an XP developer doing something that is needlessly complicated. YAGNI principle (''You ain’t gonna need it'') Simplicity and Communication support each other mutually. 11
  12. 12. Feedback Feedback works in XP at different time scales. Programmers have feedback on a minutes time scale on the status of the system thanks to unit tests. When customers write new stories the programmers estimate those immediately to give prompt feedback to the customer about the quality of the stories. The customer review the scheduler every 2-3 weeks and provide prompt feedback to the developer. 12
  13. 13. Courage XP team should have the courage of throwing code away. XP team should have the courage of mainly refactor the architecture of the system, if architectural flaw are detected. Courage with counterbalancing values is dangerous. Doing something without regard for consequences is not effective teamwork. 13
  14. 14. Respect Respect for team members. Respect for the project. 14
  15. 15. Core Components Practices Values Practices 15
  16. 16. XP Principles Humanity- People, What do people need to become good developers? Economics- Every action should have business value. Mutual Benefit- Most important and most difficult to adhere to. Extensive internal documentation. Self Similarity- You can copy structure of one solution to a new context. Theme, story, tests www.xebia.com
  17. 17. XP Principles Improvement- In software development “perfect” is a verb not adjective. Diversity- Teams need diversity. Reflection- How and Why of working. Flow- Steady flow of valuable software. RDITID Opportunities- Problems are opportunities. www.xebia.com
  18. 18. XP Principles Redundancy- Do not remove redundancy that serves a valid purpose. Failure- Is failure a waste? Quality- Cost of quality? Quality ~ Productivity Baby Steps- Rapid small steps = leap. Accepted Responsibility- Responsibility cannot be assigned. www.xebia.com
  19. 19. Core Components Practices Values Principles 19
  20. 20. Practices Primary Corollary www.xebia.com
  21. 21. Primary Practices Sit Together Whole Team Informative workspace Energized work Pair Programming Stories Weekly Cycle Quarterly Cycle Slack 10 minute build Continuous Integration Test First Programming Incremental Design www.xebia.com
  22. 22. Sit Together / Whole Team www.xebia.com
  23. 23. Sit Together / Whole Team www.xebia.com
  24. 24. Informative Workspace www.xebia.com
  25. 25. Informative Workspace www.xebia.com
  26. 26. Informative Workspace www.xebia.com
  27. 27. Energized work Work only as many hours as productive Ideally 40 hours a week Programming productivity is seen to be 4-5 hours a day www.xebia.com
  28. 28. Pair Programming www.xebia.com
  29. 29. Pair Programming www.xebia.com
  30. 30. Stories Units of customer visible functionality. Should be on the story wall for everyone to look at. www.xebia.com
  31. 31. Stories Stories v/s Use Cases A story is not a use case, a use case is not a story  A use case defines functional requirements in total  Set of use cases define breadth and depth of system  behaviour, augmented with non-functional requirements A story points to a portion of breadth and depth  Stories incrementally build up full scope  Usually 2-3 days of work  Further broken down into tasks  www.xebia.com
  32. 32. Weekly / Quarterly Cycles Weekly Cycles- Start week by writing automated tests and then the week implementing them, mainly about stories and tasks. Quarterly Cycles- Plan for releases which cover themes. Themes can be broken down into stories for weekly cycles www.xebia.com
  33. 33. More... Slack Ten Minute Build Continuous Integration Test First Programming Incremental Design Do the simplest thing that can possibly work Refactor www.xebia.com
  34. 34. Practices Primary Corollary www.xebia.com
  35. 35. Corollary Practices Real Customer Involvement- No customer or proxy customer are not as effective Incremental Deployment- Build little pieces and deploy it! Team Continuity- Do not shuffle the team too often. Shrinking Teams www.xebia.com
  36. 36. Corollary Practices Root Cause Analysis- 5 Why's Shared Code- No ownership Code and Tests- The only artifacts Single code base- Avoid multiple streams Daily Deployment Negotiated Scope Contract- Ongoing negotiation on precise scope. www.xebia.com
  37. 37. The Whole XP Team Emphasis on the “Whole Team” Collaboration and collocation www.xebia.com
  38. 38. The Whole XP Team Programmers Users Testers Project Manager Architects Product Manager Interaction Stakeholders Designers www.xebia.com
  39. 39. XP Project 39
  40. 40. XP Project Iteration 40
  41. 41. XP Project Development 41
  42. 42. XP Project Coding 42
  43. 43. FAQs Some Frequently asked questions about XP 43
  44. 44. XP vs. Rational Unified Process XP RUP Primary Communication Short Daily Face to Client Status Meetings, Medium Face meetings, Pair Design Meetings Programming Development Code, Refine, Test Design, Document, Methodology Code, Test Focuses on Delivering software Following the process quickly to develop good software Quality Focus Eliminate Defects as Eliminate defects on a early as possible in the scheduled basis with a process using whole separate team team 44
  45. 45. Scaling XP XP seems to allow smaller teams to accomplish an awful lot XP seems to hit single-team challenges around 12-16 developers XP can scale by building recursive teams Recommended to build small team first, incrementally grow, and use first team to seed recursive teams XP has been used on teams of 40-50 www.xebia.com
  46. 46. Documentation XP is a minimalist process Many teams successful with index cards and large Post-Its® XP is not anti-documentation, but encourages doing the least amount that is really needed Document when needed for distributed sharing, historical needs, summarizing, etc. www.xebia.com
  47. 47. Adopting XP Find a suitable team and project Two strategies:  Adopt XP by-the-book first, then modify  Refactor your process incrementally to XP Be mindful of practice synergies Manage the team culture and change Allow sufficient time for feedback and learning An experienced coach can be valuable www.xebia.com
  48. 48. Questions ? www.xebia.com
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×