10-Extreme Programming
10-Extreme Programming
• Provide purpose to teams, guide decisions in a high-level way • Avoid lack of communication
• yet abstract and too fuzzy for specific guidance • Lack of communication can
• The values of XP • Prevents knowledge flowing within the team
• Someone may know how to solve the problem
• Communication
• Simplicity • Employing many practices that could not be carried out without
• Feedback communication
• e.g., pair programming, unit testing
• Respect
• Courage • Employs a “Coach”: noticing when people are not communicating and
reintroduce them
• Always strive to “do the simplest thing that could possibly works” • Unlike more traditional, waterfall software development
• DTSTTCPW methodologies
• Not only the simplest thing • Too little: Not enough feedback
• Too late: At the end of development stage
• Often ignoring the “that works” part
• Receive early, constant feedback
• Simplicity is contextual
• If there is a problem, the team needs to know as soon as possible
• Everyone has their own skills, experience, and knowledge
• Simple for a person may mean complex for another • Unit tests: provide feedback on a minute time scale
• Customer reviews: scheduled every 2-3 weeks
XP Values - Feedback XP - Courage
• In a pair programming, the comments from peers are vital • “Effective action in the face of fear” (Kent Beck)
• Also from other team members, including the customer • Many opportunities to be afraid and plenty opportunities to show
• Tests become another source of feedack courage
• Whether writing tests is easy or hard is feedback too • Speak the truth, esp. the unpleasant ones
• If writing the tests is hard, maybe the design is too complex • Giving and receiving feedback
• Feedback can be too much too handle • Discard a failing solution
• May result in missing important feedback • Still need to take the consequences into consideration
• Slow down
• Everyone cares about their work • Provide more specific guidance than values
• Every person is worthy of dignity and respect • Principles:
• Including customers and users of the project • Humanity, Economics, Mutual benefit, Self-similarity, Improvement, Diversity,
Reflection, Flow, Opportunity, Redundancy, Failure, Quality, Baby Steps,
Accepted Responsibilities
XP Principles XP Principles
XP Principles XP Principles
• Improvement • Reflection
• Teams do not strive for perfection in an initial implementation, but just good • Reflect on work and analyze how to be better
enough • Both logical anaysis and feelings
• Improve upon the impementation with feedbacks from real users
• Flow
• Diversity • Activities in XP happen all of the time, in a consistent “flow” of value
• Teams benefit from a diversity of perspectives, skills, and attitudes • Unlike traditional methodologies that have discrete phases
• Conflict and disagreement are opportunities for better ideas
• As long as everyone plays by the values or courage and respects
XP Principles XP Principles
• Opportunity • Failure
• Problems could become opportunities for improvement • Is not a waste when results in knowledge
• A good perspective to come up with creative, goal-oriented solutions • Acting on failures and quickly learning from it is more productive
• Redundancy • Quality
• If a given problem is critical, employ many tactics to counter it • Pushing for quality improvements to make the team goes faster
• Solution in XP: stack a bunch of quality measures • E.g., refactoring: make the code easier to understand and change -> less likely
• Pair programming, tests, continuous integration to introduce defects and bugs, deliver sooner
XP Principles XP Practices
• Pair Programming
• Write code in pairs sitting at one machine
• The pair talk to each other while analyzing, implementing, and testing the
feature they are working on
• Effective, engaging, fun, and tiring
• Ten Minute Build
• The CI server is expected to buid the whole project in ten minutes at most
• including running all the automated tests
• Keep the tests lean and focused
• Informative Workspaces
• Use the team’s physical space to display information
• Let anyone know, at a glance, the progress of the project
• Could use physical notes and charts, screens with Kanban Boards, etc.
• Energized Work
• Work only as long as the person can do energized work
• Limited to 40 hours a week at most
• Customer • Coach
• Real customers on-site to answer questions, prioritizes user stories, and • Is not mandatory
collaborate with acceptance testing • Ensure the team members follow the practices and turn them into habits
• Could be fulfilled by a customer representative
• Tracker
• Programmers • Tracks the team’s progress metrics and talks with every team member to
• Estimate the effort needed to complete tasks and stories identify roadblocks and figure out solutions
• Write automated tests • Calculate the metrics indicating how well the team is doing (e.g., velocity and
• Implement the stories burndown charts)
XP vs Scrum References