SlideShare a Scribd company logo
1 / 32
EXtreme Programming
1999 2005
Angel Luis Blasco Conde
Feb 2019
2 / 32
What´s XP
● XP is [1º edition]:
– a lightweight methodology
– for small-to-medium-sized teams developing software
– in the face of vague or rapidly changing requirements.
● XP is a style of software development focusing on:
– excellent application of programming techniques,
– clear communication
– and teamwork
3 / 32
What´s XP
● XP is:
– giving up old, ineffective technical and social habits
– fully appreciating yourself for total effort today.
– striving to do better tomorrow.
– evaluating by the contribution to the team’s shared
goals.
● It’s my job to do my best and to communicate clearly
4 / 32
XP paradigm
● Learning to drive
● XP paradigm: Stay aware. Adapt. Change
– Customers drive the content of the system
– The whole team drives the development process
– Everything in sw change (requirements, design, business,
technology, team), and the problem is our inhability to
cope with change.
5 / 32
XP: Values, principles
& practices
Values bring purpose to practices
Practices are evidence of values
Are universal Are clear
Are domain specific
guidelines for life
6 / 32
5 Values
● Communication.
– For every problem: find a solution and/or to avoid fail again
● Simplicity.
– “What is the simplest thing that could possibly work?”
● Feedback.
– XP teams strive to generate as much feedback as they can
handle as quickly as possible.
● Courage
– It is effective action in the face of fear.
● Respect:
– Every person has equal value as a human being
7 / 32
Principles 1/5
● Humanity
– XP practices meet both business and personal needs
– Balance the needs of the team with the needs of the individual
● Economics
– Make sure what you are doing has business value, meets
business goals, and serves business needs.
– Time value of mone
– Options for the future.
● Traceability for safety-critical systems
– At any time you should be able to trace a path from the work
done back to an explicitly expressed need from the users.
8 / 32
Principles 2/5
● Mutual benefits
– Every activity should benefit all concerned.
– Solutions that cost one person while benefitting another, they
are always a net loss
● Self-similarity
– Try copying the structure of one solution into a new context
– Likewise, a unique solution doesn’t mean it’s bad.
● Improvement
– “Best is the enemy of good enough”
– The cycle is to do the best you can today
9 / 32
Principles 3/5
● Diversity
– Teams with a variety of skills and attitudes.
– Two ideas present an opportunity not a problem
● Reflection
– Think about why they succeeded or failed
– You can also learn from “negative” emotions
● Flow
– Flow is delivering a steady flow of valuable software
– The larger the chunk, the higher the risk.
10 / 32
Principles 4/5
● Opportunity
– Problems need to turn into opportunities for learning and
improvement, not just survival.
● Redundancy
– You can´t solve the defect problem with a single practice
– Not to remove redundancy that serves a valid purpose
● Failure
– Don’t know which of three ways to implement a story? Try all
– Limit design discussions to 15 min. And then go implement sth
11 / 32
Principles 5/5
● Quality
– Projects don’t go faster by accepting lower quality. They don’t go
slower by demanding higher quality
– Do the job as well as you have time for now
● Baby Steps
– It´s always temting to make big changes in big steps.
– Waste is higher if a big change is aborted.
● Accepted responsability
– Responsability cannot be assigned, it can only be accepted.
– Person responsible for implementing a story is responsible for all
tasks
12 / 32
PRACTICES
● Primary Practices
– Are useful independent of what else you are doing
– They each can give you immediate improvement
– You can start safely with any of them
● Corollary practices:
– Are likely to be difficult without first mastering the primary
practices
13 / 32
PRIMARY PRACTICES 1/5
● Sit Together
– Develop in an open space big enough for the whole team.
● Whole Team
– Include people with all the skills and perspectives necessary
for the project to succeed
– Team size <12 (nº can confortably interact)
● Informative Workspace
– An observer should get a general idea of how the project is
going in 15 seconds
14 / 32
PRIMARY PRACTICES 2/5
● Energized Work
– Work only as many hours as you can be productive and you
can sustain
– When you’re tired you’re removing value.
● Pair Programming
– Pair programming is a dialog between two people trying to
program better
– Rotate pairs frequently (e.g: every couple of hours)
● Stories
– Plan using units of customer-visible functionality.
– As soon as a story is written, try to estimate. This gets
everyone thinking about how to get the greatest return from
the smallest investment.
15 / 32
PRIMARY PRACTICES 3/5
● Weekly Cycle
– Plan work at the beginning of every week (retro /pick stories/
break into tasks)
– The goal is to have deployable software at the end of the
week
● Quarterly Cycle
– Plan work at the beginning of every quarter. Focus on the
big picture (retro / pick themes / break into stories)
● Slack
– In any plan, include some minor tasks that can be dropped if
you get behind.
– It is important to meet your commitments.
16 / 32
PRIMARY PRACTICES 4/5
● Ten-Minute Build
– Automatically build the whole system and run all of the tests
in ten minutes (coffee time)
● Continuous Integration
– Integrate and test changes after 2 h (a pair programming
episode)
– Team programming is a divide, conquer, and integrate
problem.
● Test-First Programming
– Write a failing automated test before changing any code
17 / 32
PRIMARY PRACTICES 5/5
● Incremental Design
– Invest in the design of the system every day. Strive to make
the design of the system an excellent fit for the needs of the
system that day.
– Without daily attention to design, the cost of changes does
skyrocket. The result is poorly designed, brittle, hard-to-
change systems.
18 / 32
COROLLARY PRACTICES 1/4
● Real Customer Involvement
– Visionary customers part of quarterly/weekly planning
– No customer or a “proxy” leads to waste
● Incremental Deployment
– When replacing a legacy system, gradually take over its
workload beginning very early
– Reimplement and then cut over one Sunday night >> “That
trick never works”
● Team Continuity
– Keep effective teams together.
– Once a project is done “programming resources” go back
“into the pool”. This maximizes micro-efficiency but
undermines the organization-efficiency.
19 / 32
COROLLARY PRACTICES 2/4
● Shrinking Teams
– As a team grows in capability, keep its workload constant but
gradually reduce its size.
– Creating bigger and bigger teams, work so poorly
● Root-Cause Analysis
– Every time a defect is found, eliminate the defect and its
cause.
– Ask five times why a problem ocurred. It´s almost always a
people problem.
● Shared Code
– Anyone on the team can improve any part of the system at
any time.
20 / 32
COROLLARY PRACTICES 3/4
● Code and Tests
– Maintain only the code and the tests as permanent artifacts.
– Everything else is waste.
● Single Code Base
– There is only 1 code stream (temporary branch < a few
hours).
– If you have multiple code bases (enormous source of waste),
put a plan in place for reducing them gradually.
● Daily Deployment
– Put new software into production every night.
– A team deploy twelve times a year—one release and eleven
patches.
21 / 32
COROLLARY PRACTICES 4/4
● Negotiated Scope Contract
– Write contracts for software development that fix time, costs,
and quality but call for an ongoing negotiation of the precise
scope of the system
● Pay Per Use
– You charge for every time the system is used.
– Pay-per-release opposes the supplier’s interests and the
customer’s interests
– You might go to a subscription model, in which software is
purchased monthly or quarterly
– An even smaller change of business model is to weight
contracts more toward support fees and less toward up-front
revenue.
22 / 32
XP Roles
● Roles aren´t fixed and rigid
– Programmers can write stories
– PM can suggest architecture enhancements
● No one person to one role mapping:
– Architects sign up for programming tasks just like any
programmer.
– A technical writer can also test
23 / 32
XP Roles 1/5
● Tester:
– Help customers choose and write automated system-level tests
– Coach programmers on testing techniques (ask what should
happen if something goes wrong)
● Designer (UI):
– Write stories
– Evaluate usage of deployed system to find opportunities for new
stories.
● Architects:
– Execute large-scale refactorings (in small, safe steps)
– Write system-level tests, instead of writing specifications &
explaining them
24 / 32
XP Roles 2/5
● Project Managers
– Coordinate (not proxy/bottleneck) communication with
customers
– Should be creative to present project’s information to executives
– Are responsible for keeping plans synchronized with reality.
● Product Managers
– Write stories, pick themes and stories in the quarterly cycle, pick
stories in the weekly cycle, and answer questions (for under-
specified story areas)
– Help decide priorities (when team has overcommitted)
– The goal is a working system from the first week.
25 / 32
XP Roles 3/5
● Executives
– Jobs:
● Maintain corporate goals
● Monitoring and facilitating improvement.
● Ask for clear explanations in any decision-making process.
● Presenting the team positively to the rest of the organization.
Stand firm as bottleneck shift elsewhere
– Metrics:
● Number of defects found after development
● Time lag for an idea [From beginning to invest, to first
revenues]
26 / 32
XP Roles 4/5
● Technical Writers
– Provide early feedback about features (first to see them)
– Create closer relationships with users
– Track documentation usage > stop never read docs
● Users
– Help write and pick stories.
– Most valuable if they have broad knowledge & strong
relationships with the larger user community
27 / 32
XP Roles 5/5
● Programmers
– Estimate stories and tasks, break stories into tasks,
– Write tests, write code to implement features,
– Automate tedious development process, and gradually improve
the design of the system.
● Human Resources. Two challenges:
– Reviews/raises. Focus on team performance or a mix
– Hiring :
● More emphasis on teamwork and social skills
● Best interview = 1 day work with the team
28 / 32
The theory of constraints
● In any system there is one constraint at a time. To
improve:
– First: Find the constraint;
– Second: Make sure it is working full speed;
– Third: Find ways of either
● increase the capacity of the constraint,
● offload some of the work onto non-constraints,
● eliminate the constraint entirely.
● Work piles up in front of the constraint.
● Focused on overall throughput (not in Micro-
optimization)
● When we eliminate one constraint we create another.
29 / 32
PLANNING: Managing scope
● We use feedback to improve our estimates and make
decisions as late as possible so they are based on the
best possible information.
– In a week, hold five one-day iterations.
– In the middle of a cycle, slower than planned, ask the
customer to choose which stories to see completed first
● Help everyone on the team make choices aligned with
team’s goals
● “Complete” means ready for deployment
30 / 32
PLANNING: Managing scope
● Plan at every timescale:
– 1. List the items of work that may need to be done.
– 2. Estimate the items.
– 3. Set a budget for the planning cycle.
– 4. Agree on the work that needs to be done within the
budget. As you negotiate, don’t change the estimates or the
budget
31 / 32
TESTING
● Defects destroy the trust required for effective sw
development
● XP practices aims to:
– Defects don´t arise
– Team use them to learn how to avoid future similar problems
● >>Double checking:
– Code and 1st unitary test[
– 2nd test system as a whole (user´s perspective)
● >>Defect Cost Increase (DCI): The sooner you find a
defect, the cheaper it is to fix
32 / 32
TESTING
● Beta testing
– is a symptom of weak testing and poor communication with
customers. Eliminate all post-development testing
● All testing is automated.
– Run load and stress tests continuously and automatically
● Write tests in advance of implementation

More Related Content

PDF
Extreme Programming 1st.pdf
PDF
Agile Methodologies by TechDesti
PDF
Analisis iso 25010
PPTX
Introduction to Agile Software Development
PDF
Introduction to Extreme Programming
PDF
Kuberntes Ingress with Kong
PDF
Agile requirements management
PPTX
Software engineering tutorial
Extreme Programming 1st.pdf
Agile Methodologies by TechDesti
Analisis iso 25010
Introduction to Agile Software Development
Introduction to Extreme Programming
Kuberntes Ingress with Kong
Agile requirements management
Software engineering tutorial

What's hot (20)

PDF
What is agile model?Working of agile model
PPTX
Extreme programming
PPTX
Software Configuration Management
PPT
Selection of an appropriate project approach
PDF
Integrating Automated Testing into DevOps
PPTX
Code Review
PPTX
Non Functional Requirement.
PDF
A split screen-viable UI event system - Unite Copenhagen 2019
PDF
Feature driven development
PPTX
Chapter1(hci)
PPT
Agile Scrum
PDF
Agile vs Waterfall
PDF
Agile - DevOps : la boite à outils
PDF
Agile Team Working Agreements
PPTX
DevOps: Age Of CI/CD
PDF
Engineering Software Products: 5. cloud based software
PDF
Talking TUF: Securing Software Distribution
PPSX
Scrum Agile Methodlogy
PPTX
Scaling agile
PPT
Chapter 21 project management concepts
What is agile model?Working of agile model
Extreme programming
Software Configuration Management
Selection of an appropriate project approach
Integrating Automated Testing into DevOps
Code Review
Non Functional Requirement.
A split screen-viable UI event system - Unite Copenhagen 2019
Feature driven development
Chapter1(hci)
Agile Scrum
Agile vs Waterfall
Agile - DevOps : la boite à outils
Agile Team Working Agreements
DevOps: Age Of CI/CD
Engineering Software Products: 5. cloud based software
Talking TUF: Securing Software Distribution
Scrum Agile Methodlogy
Scaling agile
Chapter 21 project management concepts
Ad

Similar to Extreme programming - Kent Beck (20)

PDF
August: DevOps 101 (in lieu of DevOps Patterns Distilled)
PDF
Deeply Embedding UX Practices Into Your Organization by Grafting them Into Yo...
ODP
What is xp
PPTX
Lecture 5 -6(CSC205).pptx jsksnxbbxjxksnsnz
PDF
Agile software development
PDF
Extreme programming
PDF
Managing software projects & teams effectively
PDF
Process & Methodologies (1.0)
PDF
Process & Methodologies (1.1)
PDF
Process & Methodologies (1.2)
PDF
4. ch 3-agile process
PPTX
Introduction to agile and scrum
PPTX
SPM 11 SOFTWARE PROJECT MANAGEMENT RESOURCES
PPTX
module I.pptx
PDF
Agile Course
PDF
Agile course Part 1
PPTX
Introduction to Software Engineering
PDF
The Holistic Programmer
PDF
Unit_1_Agile development.pdf about the script of software
PDF
SE18_Lec 05_Agile Software Development
August: DevOps 101 (in lieu of DevOps Patterns Distilled)
Deeply Embedding UX Practices Into Your Organization by Grafting them Into Yo...
What is xp
Lecture 5 -6(CSC205).pptx jsksnxbbxjxksnsnz
Agile software development
Extreme programming
Managing software projects & teams effectively
Process & Methodologies (1.0)
Process & Methodologies (1.1)
Process & Methodologies (1.2)
4. ch 3-agile process
Introduction to agile and scrum
SPM 11 SOFTWARE PROJECT MANAGEMENT RESOURCES
module I.pptx
Agile Course
Agile course Part 1
Introduction to Software Engineering
The Holistic Programmer
Unit_1_Agile development.pdf about the script of software
SE18_Lec 05_Agile Software Development
Ad

Recently uploaded (20)

PPTX
Operating system designcfffgfgggggggvggggggggg
PPTX
Reimagine Home Health with the Power of Agentic AI​
PDF
Product Update: Alluxio AI 3.7 Now with Sub-Millisecond Latency
PDF
Download FL Studio Crack Latest version 2025 ?
PPTX
AMADEUS TRAVEL AGENT SOFTWARE | AMADEUS TICKETING SYSTEM
PPTX
Why Generative AI is the Future of Content, Code & Creativity?
PPTX
Embracing Complexity in Serverless! GOTO Serverless Bengaluru
PDF
Wondershare Filmora 15 Crack With Activation Key [2025
PPTX
Weekly report ppt - harsh dattuprasad patel.pptx
PDF
AI-Powered Threat Modeling: The Future of Cybersecurity by Arun Kumar Elengov...
PDF
Designing Intelligence for the Shop Floor.pdf
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PDF
Website Design Services for Small Businesses.pdf
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
PDF
Digital Systems & Binary Numbers (comprehensive )
PDF
Nekopoi APK 2025 free lastest update
PPTX
Monitoring Stack: Grafana, Loki & Promtail
PPTX
WiFi Honeypot Detecscfddssdffsedfseztor.pptx
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
Operating system designcfffgfgggggggvggggggggg
Reimagine Home Health with the Power of Agentic AI​
Product Update: Alluxio AI 3.7 Now with Sub-Millisecond Latency
Download FL Studio Crack Latest version 2025 ?
AMADEUS TRAVEL AGENT SOFTWARE | AMADEUS TICKETING SYSTEM
Why Generative AI is the Future of Content, Code & Creativity?
Embracing Complexity in Serverless! GOTO Serverless Bengaluru
Wondershare Filmora 15 Crack With Activation Key [2025
Weekly report ppt - harsh dattuprasad patel.pptx
AI-Powered Threat Modeling: The Future of Cybersecurity by Arun Kumar Elengov...
Designing Intelligence for the Shop Floor.pdf
Adobe Illustrator 28.6 Crack My Vision of Vector Design
Website Design Services for Small Businesses.pdf
Navsoft: AI-Powered Business Solutions & Custom Software Development
Digital Systems & Binary Numbers (comprehensive )
Nekopoi APK 2025 free lastest update
Monitoring Stack: Grafana, Loki & Promtail
WiFi Honeypot Detecscfddssdffsedfseztor.pptx
Internet Downloader Manager (IDM) Crack 6.42 Build 41
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025

Extreme programming - Kent Beck

  • 1. 1 / 32 EXtreme Programming 1999 2005 Angel Luis Blasco Conde Feb 2019
  • 2. 2 / 32 What´s XP ● XP is [1º edition]: – a lightweight methodology – for small-to-medium-sized teams developing software – in the face of vague or rapidly changing requirements. ● XP is a style of software development focusing on: – excellent application of programming techniques, – clear communication – and teamwork
  • 3. 3 / 32 What´s XP ● XP is: – giving up old, ineffective technical and social habits – fully appreciating yourself for total effort today. – striving to do better tomorrow. – evaluating by the contribution to the team’s shared goals. ● It’s my job to do my best and to communicate clearly
  • 4. 4 / 32 XP paradigm ● Learning to drive ● XP paradigm: Stay aware. Adapt. Change – Customers drive the content of the system – The whole team drives the development process – Everything in sw change (requirements, design, business, technology, team), and the problem is our inhability to cope with change.
  • 5. 5 / 32 XP: Values, principles & practices Values bring purpose to practices Practices are evidence of values Are universal Are clear Are domain specific guidelines for life
  • 6. 6 / 32 5 Values ● Communication. – For every problem: find a solution and/or to avoid fail again ● Simplicity. – “What is the simplest thing that could possibly work?” ● Feedback. – XP teams strive to generate as much feedback as they can handle as quickly as possible. ● Courage – It is effective action in the face of fear. ● Respect: – Every person has equal value as a human being
  • 7. 7 / 32 Principles 1/5 ● Humanity – XP practices meet both business and personal needs – Balance the needs of the team with the needs of the individual ● Economics – Make sure what you are doing has business value, meets business goals, and serves business needs. – Time value of mone – Options for the future. ● Traceability for safety-critical systems – At any time you should be able to trace a path from the work done back to an explicitly expressed need from the users.
  • 8. 8 / 32 Principles 2/5 ● Mutual benefits – Every activity should benefit all concerned. – Solutions that cost one person while benefitting another, they are always a net loss ● Self-similarity – Try copying the structure of one solution into a new context – Likewise, a unique solution doesn’t mean it’s bad. ● Improvement – “Best is the enemy of good enough” – The cycle is to do the best you can today
  • 9. 9 / 32 Principles 3/5 ● Diversity – Teams with a variety of skills and attitudes. – Two ideas present an opportunity not a problem ● Reflection – Think about why they succeeded or failed – You can also learn from “negative” emotions ● Flow – Flow is delivering a steady flow of valuable software – The larger the chunk, the higher the risk.
  • 10. 10 / 32 Principles 4/5 ● Opportunity – Problems need to turn into opportunities for learning and improvement, not just survival. ● Redundancy – You can´t solve the defect problem with a single practice – Not to remove redundancy that serves a valid purpose ● Failure – Don’t know which of three ways to implement a story? Try all – Limit design discussions to 15 min. And then go implement sth
  • 11. 11 / 32 Principles 5/5 ● Quality – Projects don’t go faster by accepting lower quality. They don’t go slower by demanding higher quality – Do the job as well as you have time for now ● Baby Steps – It´s always temting to make big changes in big steps. – Waste is higher if a big change is aborted. ● Accepted responsability – Responsability cannot be assigned, it can only be accepted. – Person responsible for implementing a story is responsible for all tasks
  • 12. 12 / 32 PRACTICES ● Primary Practices – Are useful independent of what else you are doing – They each can give you immediate improvement – You can start safely with any of them ● Corollary practices: – Are likely to be difficult without first mastering the primary practices
  • 13. 13 / 32 PRIMARY PRACTICES 1/5 ● Sit Together – Develop in an open space big enough for the whole team. ● Whole Team – Include people with all the skills and perspectives necessary for the project to succeed – Team size <12 (nº can confortably interact) ● Informative Workspace – An observer should get a general idea of how the project is going in 15 seconds
  • 14. 14 / 32 PRIMARY PRACTICES 2/5 ● Energized Work – Work only as many hours as you can be productive and you can sustain – When you’re tired you’re removing value. ● Pair Programming – Pair programming is a dialog between two people trying to program better – Rotate pairs frequently (e.g: every couple of hours) ● Stories – Plan using units of customer-visible functionality. – As soon as a story is written, try to estimate. This gets everyone thinking about how to get the greatest return from the smallest investment.
  • 15. 15 / 32 PRIMARY PRACTICES 3/5 ● Weekly Cycle – Plan work at the beginning of every week (retro /pick stories/ break into tasks) – The goal is to have deployable software at the end of the week ● Quarterly Cycle – Plan work at the beginning of every quarter. Focus on the big picture (retro / pick themes / break into stories) ● Slack – In any plan, include some minor tasks that can be dropped if you get behind. – It is important to meet your commitments.
  • 16. 16 / 32 PRIMARY PRACTICES 4/5 ● Ten-Minute Build – Automatically build the whole system and run all of the tests in ten minutes (coffee time) ● Continuous Integration – Integrate and test changes after 2 h (a pair programming episode) – Team programming is a divide, conquer, and integrate problem. ● Test-First Programming – Write a failing automated test before changing any code
  • 17. 17 / 32 PRIMARY PRACTICES 5/5 ● Incremental Design – Invest in the design of the system every day. Strive to make the design of the system an excellent fit for the needs of the system that day. – Without daily attention to design, the cost of changes does skyrocket. The result is poorly designed, brittle, hard-to- change systems.
  • 18. 18 / 32 COROLLARY PRACTICES 1/4 ● Real Customer Involvement – Visionary customers part of quarterly/weekly planning – No customer or a “proxy” leads to waste ● Incremental Deployment – When replacing a legacy system, gradually take over its workload beginning very early – Reimplement and then cut over one Sunday night >> “That trick never works” ● Team Continuity – Keep effective teams together. – Once a project is done “programming resources” go back “into the pool”. This maximizes micro-efficiency but undermines the organization-efficiency.
  • 19. 19 / 32 COROLLARY PRACTICES 2/4 ● Shrinking Teams – As a team grows in capability, keep its workload constant but gradually reduce its size. – Creating bigger and bigger teams, work so poorly ● Root-Cause Analysis – Every time a defect is found, eliminate the defect and its cause. – Ask five times why a problem ocurred. It´s almost always a people problem. ● Shared Code – Anyone on the team can improve any part of the system at any time.
  • 20. 20 / 32 COROLLARY PRACTICES 3/4 ● Code and Tests – Maintain only the code and the tests as permanent artifacts. – Everything else is waste. ● Single Code Base – There is only 1 code stream (temporary branch < a few hours). – If you have multiple code bases (enormous source of waste), put a plan in place for reducing them gradually. ● Daily Deployment – Put new software into production every night. – A team deploy twelve times a year—one release and eleven patches.
  • 21. 21 / 32 COROLLARY PRACTICES 4/4 ● Negotiated Scope Contract – Write contracts for software development that fix time, costs, and quality but call for an ongoing negotiation of the precise scope of the system ● Pay Per Use – You charge for every time the system is used. – Pay-per-release opposes the supplier’s interests and the customer’s interests – You might go to a subscription model, in which software is purchased monthly or quarterly – An even smaller change of business model is to weight contracts more toward support fees and less toward up-front revenue.
  • 22. 22 / 32 XP Roles ● Roles aren´t fixed and rigid – Programmers can write stories – PM can suggest architecture enhancements ● No one person to one role mapping: – Architects sign up for programming tasks just like any programmer. – A technical writer can also test
  • 23. 23 / 32 XP Roles 1/5 ● Tester: – Help customers choose and write automated system-level tests – Coach programmers on testing techniques (ask what should happen if something goes wrong) ● Designer (UI): – Write stories – Evaluate usage of deployed system to find opportunities for new stories. ● Architects: – Execute large-scale refactorings (in small, safe steps) – Write system-level tests, instead of writing specifications & explaining them
  • 24. 24 / 32 XP Roles 2/5 ● Project Managers – Coordinate (not proxy/bottleneck) communication with customers – Should be creative to present project’s information to executives – Are responsible for keeping plans synchronized with reality. ● Product Managers – Write stories, pick themes and stories in the quarterly cycle, pick stories in the weekly cycle, and answer questions (for under- specified story areas) – Help decide priorities (when team has overcommitted) – The goal is a working system from the first week.
  • 25. 25 / 32 XP Roles 3/5 ● Executives – Jobs: ● Maintain corporate goals ● Monitoring and facilitating improvement. ● Ask for clear explanations in any decision-making process. ● Presenting the team positively to the rest of the organization. Stand firm as bottleneck shift elsewhere – Metrics: ● Number of defects found after development ● Time lag for an idea [From beginning to invest, to first revenues]
  • 26. 26 / 32 XP Roles 4/5 ● Technical Writers – Provide early feedback about features (first to see them) – Create closer relationships with users – Track documentation usage > stop never read docs ● Users – Help write and pick stories. – Most valuable if they have broad knowledge & strong relationships with the larger user community
  • 27. 27 / 32 XP Roles 5/5 ● Programmers – Estimate stories and tasks, break stories into tasks, – Write tests, write code to implement features, – Automate tedious development process, and gradually improve the design of the system. ● Human Resources. Two challenges: – Reviews/raises. Focus on team performance or a mix – Hiring : ● More emphasis on teamwork and social skills ● Best interview = 1 day work with the team
  • 28. 28 / 32 The theory of constraints ● In any system there is one constraint at a time. To improve: – First: Find the constraint; – Second: Make sure it is working full speed; – Third: Find ways of either ● increase the capacity of the constraint, ● offload some of the work onto non-constraints, ● eliminate the constraint entirely. ● Work piles up in front of the constraint. ● Focused on overall throughput (not in Micro- optimization) ● When we eliminate one constraint we create another.
  • 29. 29 / 32 PLANNING: Managing scope ● We use feedback to improve our estimates and make decisions as late as possible so they are based on the best possible information. – In a week, hold five one-day iterations. – In the middle of a cycle, slower than planned, ask the customer to choose which stories to see completed first ● Help everyone on the team make choices aligned with team’s goals ● “Complete” means ready for deployment
  • 30. 30 / 32 PLANNING: Managing scope ● Plan at every timescale: – 1. List the items of work that may need to be done. – 2. Estimate the items. – 3. Set a budget for the planning cycle. – 4. Agree on the work that needs to be done within the budget. As you negotiate, don’t change the estimates or the budget
  • 31. 31 / 32 TESTING ● Defects destroy the trust required for effective sw development ● XP practices aims to: – Defects don´t arise – Team use them to learn how to avoid future similar problems ● >>Double checking: – Code and 1st unitary test[ – 2nd test system as a whole (user´s perspective) ● >>Defect Cost Increase (DCI): The sooner you find a defect, the cheaper it is to fix
  • 32. 32 / 32 TESTING ● Beta testing – is a symptom of weak testing and poor communication with customers. Eliminate all post-development testing ● All testing is automated. – Run load and stress tests continuously and automatically ● Write tests in advance of implementation

Editor's Notes

  • #3: XP is my attempt to reconcile humanity and productivity
  • #4: - XP is giving up old habits in favor of new ones. . - It’s not my job to “manage” someone else’s expectations. - You don´t prepare for failure [&amp;quot;Mentality of sufficiency&amp;quot;]
  • #5: Learning to drive: “Driving is not about getting the car going in the right direction. Driving is about constantly paying attention, making a little correction this way, a little correction that way.”
  • #6: XP is a philosophy based: - On values - A body of practices - A set of complementary principles
  • #7: COMMUNICATION: - Most often someone already knows the solution for a problem. - Otherwise you can listen to people who have had similar problems, and talk as a team about how not to fail again SIMPLICITY: - Simple enough to solve only today’s problem. Yesterday’s simple solution may be fine today, or it may look simplistic or complex (you need to change to regain simplicity) COURAGE: - If you know what the problem is, do sth about it. Otherwise wait for the real problem to emerge. Courageis powerful in concert with the other values: - Courage to speak truth fosters communications and trust - Courage to discard failing solutions and seek new ones encourages simplicity
  • #8: HUMANITY - Personal needs [Basic Safety, identify with the group, expand their skills, contribute to society] - There are other human needs; such as rest, exercise, and socialization; that don’t need to be met in the work environment. Time away from the team gives each individual more energy and perspective to bring back to the team. Limiting work hours allows time for these other human needs and enhances each person’s contribution while he is with the team. ECONOMICS: 2 aspects of economics that affect sw development: - Time value of money says that a dollar today is worth more than a dollar tomorrow. Software development is more valuable when it earns money sooner and spends money later. - Options for the future. If I can redeploy my media scheduling program for a variety of scheduling-related tasks, it is much more valuable than if it can only be used for its originally intended purpose.
  • #9: MUTUAL BENEFITS - Mutual benefit is the most important XP principle and the most dificult to adhere to. - There are always solutions to any problem that cost one person while benefitting another. When the situation is desperate, these solutions seem attractive. They are always a net loss, however, because the ill will they create tears down relationships that we need to value. SELF-SIMILARITY: - When nature finds a shape that works, she uses it everywhere she can. The same principle applies to software development: try copying the structure of one solution into a new context, even at different scales. - Likewise, just because a solution is unique doesn’t mean it’s bad. The situation may really call for a unique solution. IMPROVEMENT: - There is no perfect process/design/... Perfect is a verb: you can perfect your process/design/... (excellence in software development through improvement) - “Best is the enemy of good enough” suggests that mediocrity is preferable to waiting. - The cycle is to do the best you can today (and not wait for perfection in order to begin). Find a starting place, get started and improve from there
  • #10: DIVERSITY - Teams need to bring together a variaty of skills, attitudes and perspectives. - Conflicts is the inevitable companion of diversity. Two ideas present an opportunity not a problem (both opinions should be valued) REFLECTION: - think about how they are working and why they are working. They analyze why they succeeded or failed - time for team reflection should not be limited to “oficial” opportunities: coffee breacks, conversation with a friend, vacation, non-software-related activities - Reflection isn’t a purely intellectual exercise. You can gain insight by analyzing data, but you can also learn from your gut. The “negative” emotions like fear, anger, and anxiety - To maximize feedback, reflection in XP teams is mixed with doing. FLOW: - Flow in software development is delivering a steady flow of valuable software by engaging in all the activities of development simultaneously - Software development has long delivered value in big chunks. Many teams make the problem worse by tending to respond to stress by making the chunks bigger, from deploying software less frequently to integrating less often. Less feedback makes the problem worse. The larger the chunk, the higher the risk.
  • #11: OPPORTUNITY: - To reach excellence, problems need to turn into opportunities for learning and improvement, not just survival. - Can’t make accurate long-term plans? Fine—have a quarterly cycle during which you refine your long-term plans. - A person alone makes too many mistakes? Fine—program in pairs. REDUNDANCY: - Defects are adddressed in XP by many of the practices, and some of these practices are certainly redundant. - You can´t solve the defect problem [or any critical problem in sw development] with a single practice - While redundancy can be wasteful, be careful not to remove redundancy that serves a valid purpose FAILURE: - Don’t know which of three ways to implement a story? Try it all three ways. Even if they all fail, you’ll certainly learn something valuable. - Isn’t failure waste? No, not if it imparts knowledge. Knowledge is valuable and sometimes hard to come by. Failure may not be avoidable waste. - By the time they were tired of talking, they could have implemented all the alternatives twice. &amp;gt;&amp;gt; limit design discussions to fifteen minutes. When the timer went off, two of them would go implement sth
  • #12: QUALITY: - Projects don’t go faster by accepting lower quality. They don’t go slower by demanding higher quality - People need to do work they are proud of - A concern for quality is no excuse for inaction. If you don’t know a clean way to do a job that has to be done, do it the best way you can. If you know a clean way but it would take too long, do the job as well as you have time for now. Resolve to finish doing it the clean way later. BABY STEPS: - It´s always temting to make big changes in big steps - Under the right conditions, people and teams can take many small steps so rapidly that they appear to be leaping. - Baby steps acknowledge that the overhead of small steps is much less than when a team wastefully recoils from aborted big changes. ACCEPTED RESPONSABILITY - Responsability cannot be assigned, it can only be accepted. - Person responsible for implementing a story is ultimately responsible for the design, implementation, and testing of the story. - With responsibility comes authority. Misalignments distort the team’s communication. When a process expert can tell me how to work, but doesn’t share in that work or its consequences, authority and responsibility are misaligned.
  • #13: - Change one thing at a time - Find your current position with respect to each of the practices - Dictating practices to a team destroys trust and creates resentment
  • #14: WHOLE TEAM: Include on the team people with all the skills and perspectives necessary for the project to succeed [This is dynamic]. The ready availability of all the resources necessary to succeed - People need a sense of &amp;quot;team&amp;quot; - Team size &amp;lt;12 (nº can confortably interact with each other in a day) &amp;lt;150 (nº of faces on your team you can recognise ) - Team of teams allows XP to scale up - Fractional people destroys the sense of team and is counterproductive
  • #15: PAIR PROGRAMMING: - Pair programming is tiring but satisfying - Rotate pairs frequently.(2h), switching at natural breaks in development. - Personal space must be respected for both parties to work well. STORIES: - “Provide a two-click way for users to dial frequently used numbers.” - Estimation gives the business and technical perspectives a chance to interact, which creates value early. Give stories short names in addition to a short prose or graphical description. Write the stories on index cards and put them on a frequently-passed wall. To choose a car wisely you need to know your constraints, both cost and intended use. All other things being equal, appeal comes into play.
  • #16: WEEKLY CYCLE: Plan work at the beginning of every week. During this meeting: 1. Review progress to date, including how actual progress for the previous week matched expected progress. 2. Have the customers pick a week’s worth of stories to implement this week. 3. Break the stories into tasks. Team members sign up for tasks and estimate them. The goal is to have deployable software at the end of the week which everyone can celebrate as progress. QUATERLY CYCLE: Plan work a quarter at a time. Once a quarter reflect on the team, the project, its progress, and its alignment with larger goals. During quarterly planning: ✧ Identify bottlenecks, especially those controlled outside the team. ✧ Initiate repairs. ✧ Plan the theme or themes for the quarter. ✧ Pick a quarter’s worth of stories to address those themes. ✧ Focus on the big picture, where the project fits within the organization SLACK: In any plan, include some minor tasks that can be dropped if you get behind. You can always add more stories later and deliver more than you promised. It is important in an atmosphere of distrust and broken promises to meet your commitments.
  • #17: TEN MINUTE BUILD: Automatically build the whole system and run all of the tests in ten minutes. A build that takes longer than ten minutes will be used much less often, missing the opportunity for feedback. A shorter build doesn’t give you time to drink your coffee. CONTINOUS INTEGRATION: Integrate and test changes after no more than a couple of hours (a pair programming episode) -&amp;gt; inherent reflection time Team programming isn’t a divide and conquer problem. It is a divide, conquer, and integrate problem. The integration step is unpredictable, but can easily take more time than the original programming.
  • #18: INCREMENTAL DESIGN: Invest in the design of the system every day. Strive to make the design of the system an excellent ?t for the needs of the system that day. Without daily attention to design, the cost of changes does skyrocket. The result is poorly designed, brittle, hard-to-change systems.
  • #19: REAL CUSTOMER INVOLVEMENT: Visionary customers can have a budget, a percentage of the available development capacity, to do with as they please No customer at all, or a “proxy” for a real customer, leads to waste as you develop features that aren’t used TEAM CONTINUITY: This strategy maximizes micro-ef?ciency but undermines the ef?ciency of the organization as a whole, striving for the illusory ef?ciency of keeping individuals busy typing while ignoring the value of enabling people to work mostly with those they know and trust.
  • #20: SHRINKING TEAMS: E.g: 5 people: 4 loaded at 100% and 1 at 30%. As enough wasted efforts are eliminated, then this fifth person is no longer needed. The other strategies I’ve seen for scaling up to larger workloads, like creating bigger and bigger teams, work so poorly ROOT-CAUSE ANALYSIS: The goal is not just that this one defect won’t ever recur, but that the team will never make the same kind of mistake again. Write an automated test SHARED CODE: Prerrequisite: The team has developed a sense of collective responsability
  • #21: CODE ANTE TEST: Customers pay for what the system does today and what the team can make the system do tomorrow. Any artifacts contributing to these two sources of value are themselves valuable. Everything else is waste SINGLE CODE BASE: There is only one code stream. You can develop in a temporary branch, but never let it live longer than a few hours. Multiple code streams are an enormous source of waste in software development. You can improve the build system to create several products from a single code base. You can move the variation into configuration files. DAILY DEPLOYMENT: Put new software into production every night. A programmer out of sync with the deployed software risks making decisions without getting accurate feedback
  • #22: PAY PER USE: With pay-per-use systems, you charge for every time the system is used. Money is the ultimate feedback Pay-per-release opposes the supplier’s interests and the customer’s interests You might go to a subscription model, in which software is purchased monthly or quarterly [the team at least has the retention rates (the number of customers that continue to subscribe)] An even smaller change of business model is to weight contracts more toward support fees and less toward up-front revenue..
  • #24: ARCHITECTS: Execute large-scale refactorings (in small, safe steps), write system-level tests that stress the architecture, and implement stories Architects sign up for programming tasks just like any programmer. Instead of writing specifications and then explaining them to developers (he was frustrated that he didn’t have time to code any more) &amp;gt;&amp;gt; I suggested he write a testing infrastructure and then use tests instead of specifications and explanations
  • #25: PROJECT MANAGERS: Coordinate (introduce the right person rather than act as a bottleneck) communication (bot way: into &amp; out the team) with customers, suppliers, PRODUCT MANAGERS: The system should be “whole” at the end of the first weekly cycle. Encourage communication between customers and programmers,
  • #26: EXECUTIVES: Provide an XP team with courage, confidence, and accountability. Jobs: 1. Articulating and maintaining large-scale/corporate goals 3. Ask for clear explanations of options in any decision-making process. If they don’t, the executive should expect the team to reflect and provide a clear explanation. After the constraint/bottleneck in the flow of value will shift elsewhere in the organization, executive must be prepared to stand firm in the face of demands that software development change back to keep other departments from looking bad.
  • #27: TECHNICAL WRITERS: Weaknesses in communication are fixed with further publications Weaknesses in the product turn into input for the planning process Track documentation usage &amp;gt; stop writing documents that are never read by users. USERS: Users are most valuable if they have broad knowledge and experience with systems similar to the one being built and if they have strong relationships with the larger user community that will use the system Users need to keep in mind that they are speaking for an entire community. They should defer decisions with broad consequences until they can talk with others in that community,
  • #28: HUMAN RESOURCES: 1)reviews Focus on team performance a) keep individual goals b) move to team based incentives and raises. d) mix the two 2)hiring Best interview is work with the team for a day (pair programming) &amp;gt; provides an excellent test of technical and social skills.
  • #29: Reward system and culture need to align with overall throughput (not on individual productivity A sad and repeated story: The new constraint (e.g. marketing, who can’t decide what they want fast enough) doesn’t like the spotlight. Nobody actually cares about organizational throughput. The “source” of the turmoil, XP, is blamed and eliminated If the bottleneck has nothing to do with sw development, then the anser must come from outside XP uses a pull model [waterfall is push model]: tasks are done just before they are needed