Extreme Programming Quick Guide
Extreme Programming Quick Guide
Extreme Programming Quick Guide
What is Agile?
The word ‘agile’ means −
In business, ‘agile’ is used for describing ways of planning and doing work wherein it is
understood that making changes as needed is an important part of the job.
Business‘agililty’ means that a company is always in a position to take account of the
market changes.
In software development, the term ‘agile’ is adapted to mean ‘the ability to respond to
changes − changes from Requirements, Technology and People.’
Agile Manifesto
A team of software developers published the Agile Manifesto in 2001, highlighting the
importance of the development team, accommodating changing requirements and
customer involvement.
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 1/67
7/11/2019 Extreme Programming Quick Guide
We are uncovering better ways of developing software by doing it and helping others do it.
Through this work, we have come to value −
That is, while there is value in the items on the right, we value the items on the left more.
Characteristics of Agility
Following are the characteristics of Agility −
Agility in Agile Software Development focuses on the culture of the whole team
with multi-discipline, cross-functional teams that are empowered and
selforganizing.
Frequent and continuous deliveries ensure quick feedback that in in turn enable the
team align to the requirements.
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 2/67
7/11/2019 Extreme Programming Quick Guide
Find and eliminate defects early in the development life cycle in order to cut the
defect-fix costs.
Measure and track the process itself. This becomes expensive because of −
Monitoring and tracking at the task level and at the resource level.
Management intervention.
Coding, which is the heart of development is not given enough emphasis. The
reasons being −
Developers, who are responsible for the production, are usually not in
constant communication with the customers.
Testers are made responsible and accountable for the product quality
though they were not involved during the entire course of development.
Team burnout.
Attrition.
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 3/67
7/11/2019 Extreme Programming Quick Guide
Creativity
Iterations
Extreme Programming builds on these activities and coding. It is the detailed (not the
only) design activity with multiple tight feedback loops through effective implementation,
testing and refactoring continuously.
Communication
Simplicity
Feedback
Courage
Respect
eXtreme Programming (XP) was conceived and developed to address the specific needs of
software development by small teams in the face of vague and changing requirements.
Embrace Change
A key assumption of Extreme Programming is that the cost of changing a program can be
held mostly constant over time.
Short iterations
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 4/67
7/11/2019 Extreme Programming Quick Guide
Writing unit tests before programming and keeping all of the tests running at all
times. The unit tests are automated and eliminates defects early, thus reducing the
costs.
Starting with a simple design just enough to code the features at hand and
redesigning when required.
Putting a minimal working system into the production quickly and upgrading it
whenever required.
Keeping the customer involved all the time and obtaining constant feedback.
Iterating facilitates the accommodating changes as the software evolves with the changing
requirements.
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 5/67
7/11/2019 Extreme Programming Quick Guide
Code reviews are effective as the code is reviewed all the time.
Short iterations are effective as the planning game for release planning and
iteration planning.
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 6/67
7/11/2019 Extreme Programming Quick Guide
In Mid-80s, Kent Beck and Ward Cunningham initiated Pair Programming at Tektronix. In
the 80s and 90s, Smalltalk Culture produced Refactoring, Continuous Integration, constant
testing, and close customer involvement. This culture was later generalized to the other
environments.
In the Early 90s, Core Values were developed within the Patterns Community, Hillside
Group. In 1995, Kent summarized these in Smalltalk Best Practices, and in 1996, Ward
summarized it in episodes.
In 1996, Kent added unit testing and metaphor at Hewitt. In 1996, Kent had taken the
Chrysler C3 project, to which Ron Jeffries was added as a coach. The practices were
refined on C3 and published on Wiki.
Scrum practices were incorporated and adapted as the planning game. In 1999, Kent
published his book, ‘Extreme Programming Explained’. In the same year, Fowler published
his book, Refactoring.
Extreme Programming has been evolving since then, and the evolution continues through
today.
Success in Industry
The success of projects, which follow Extreme Programming practices, is due to −
Rapid development.
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 7/67
7/11/2019 Extreme Programming Quick Guide
Reduced costs.
Costs incurred in changes − Extensive and ongoing testing makes sure the
changes do not break the existing functionality. A running working system always
ensures sufficient time for accommodating changes such that the current
operations are not affected.
Staff turnover − Intensive team collaboration ensures enthusiasm and good will.
Cohesion of multi-disciplines fosters the team spirit.
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 8/67
7/11/2019 Extreme Programming Quick Guide
Communication
Simplicity
Feedback
Courage
Respect
Communication
Communication plays a major role in the success of a project. Problems with projects often
arise due to lack of communication. Many circumstances may lead to the breakdown in
communication. Some of the common problems are −
A developer may not tell someone else about a critical change in the design.
A developer may not ask the customer the right questions, and so a critical domain
decision is blown.
A manager may not ask a developer the right question, and project progress is
misreported.
XP employs a coach whose job is to notice when the people are not communicating and
reintroduce them. Face-to-Face communication is preferred and is achieved with pair
programming and a customer representative is always onsite.
Simplicity
Extreme Programming believes in ‘it is better to do a simple thing today and pay a little
more tomorrow to change it’ than ‘to do a more complicated thing today that may never
be used anyway’.
''Do the simplest thing that could possibly work'' The DTSTTCPW principle.
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 9/67
7/11/2019 Extreme Programming Quick Guide
Refactor the system to be the simplest possible code with the current
feature set. This will maximize the value created for the investment made
till date.
Take small simple steps to your goal and mitigate failures as they happen.
Create something that you are proud of and maintain it for a long term for
reasonable costs.
Never implement a feature you do not need now i.e. the ‘You Aren’t Going to Need
It’ (YAGNI) principle.
The more you communicate the clearer you can see exactly what needs to be done, and
you gain more confidence about what really need not be done.
The simpler your system is, the less you have to communicate about the fewer developers
that you require. This leads to better communication.
Feedback
Every iteration commitment is taken seriously by delivering a working software. The
software is delivered early to the customer and a feedback is taken so that necessary
changes can be made if needed. Concrete feedback about the current state of the system
is priceless. The value of the feedback is a continuously running system that delivers
information about itself in a reliable way.
Customers tell the developers what features they are interested in so that the
developers can focus only on those features.
The system and the code provides feedback on the state of development to the
managers, stakeholders and the customers.
Frequent releases enable the customer to perform acceptance tests and provide
feedback and developers to work based on that feedback.
When the customers write new features/user stories, the developers estimate the
time required to deliver the changes, to set the expectations with the customer
and managers.
Indicates progress
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 10/67
7/11/2019 Extreme Programming Quick Guide
Gives confidence to the developers that they are on the right track
Courage
Extreme Programming provides courage to the developers in the following way −
This is possible as no one is working alone and the coach guides the team continuously.
Respect
Respect is a deep value, one that lies below the surface of the other four values. In
Extreme Programming,
Management respects the right of the developers to accept the responsibility and
receive authority over their own work.
Communication supports courage because it opens the possibility for more high-
risk, high-reward experiments.
Simplicity supports courage because you can afford to be much more courageous
with a simple system. You are much less likely to break it unknowingly.
Concrete feedback supports courage because you feel much safer trying radical
modifications to the code, if you can see the tests turn green at the end. If any of
the tests do not turn green, you know that you can throw the code away.
The values are important, but they are vague, in the sense that it may not be possible to
decide if something is valuable. For example, something that is simple from someone’s
point of view may be complex from someone else’s point of view.
Hence, in Extreme Programming, the basic principles are derived from the values so that
the development practices can be checked against these principles. Each principle
embodies the values and is more concrete, i.e. rapid feedback − you either, have it or you
do not.
Rapid feedback
Assume simplicity
Incremental change
Embracing change
Quality work
Rapid Feedback
Rapid feedback is to get the feedback, understand it, and put the learning back into the
system as quickly as possible.
The developers design, implement and test the system, and use that feedback in
seconds or minutes instead of days, weeks, or months.
The customers review the system to check how best it can contribute, and give
feedback in days or weeks instead of months or years.
Assume Simplicity
To assume simplicity is to treat every problem as if it can be solved with simplicity.
Traditionally, you are told to plan for the future, to design for reuse. The result of this
approach may turn into ‘what is required today by the customer is not met and what is
ultimately delivered may be obsolete and difficult to change.’
‘Assume Simplicity’ means ‘do a good job of solving today's job today and trust your ability
to add complexity in the future where you need it.’ In Extreme Programming, you are told
to do a good job (tests, refactoring, and communication) focusing on what is important
today.
With good unit tests, you can easily refactor your code to do additional tests.
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 12/67
7/11/2019 Extreme Programming Quick Guide
Incremental Change
In any situation, big changes made all at once just do not work. Any problem is solved
with a series of the smallest change that makes a difference.
Embracing Change
The best strategy is the one that preserves the most options while actually solving your
most pressing problem.
Quality Work
Everyone likes doing a good job. They try to produce the quality that they are proud of.
The team
Works well
Coding
Testing
Listening
Designing
These four basic activities need to be structured in the light of the Extreme Programming
principles. To accomplish this, the Extreme Programming practices are defined.
These 12 Extreme Programming practices achieve the Extreme Programming objective and
wherever one of the practices is weak, the strengths of the other practices will make up for
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 13/67
7/11/2019 Extreme Programming Quick Guide
it.
Short Releases
Metaphor
Simple Design
Testing
Refactoring
Pair Programming
Collective Ownership
Continuous Integration
40 hour Week
On-site Customer
Coding Standards
Testing
On-site customer
Pair programming
Continuous Process −
Continuous Integration
Refactoring
Short Releases
Shared Understanding −
Simple Design
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 14/67
7/11/2019 Extreme Programming Quick Guide
Metaphor
Collective Ownership
Coding Standards
Developer Welfare −
Forty-Hour Week
In this chapter, you will understand the Extreme Programming practices in detail and the
advantages of each of these practices.
Business and development need to make the decisions in tandem. The business decisions
and the development’s technical decisions have to align with each other.
Scope − How much of a problem must be solved for the system to be valuable in
production? The businessperson is in a position to understand how much is not
enough and how much is too much.
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 15/67
7/11/2019 Extreme Programming Quick Guide
Priority − If you are given an option, which one do you want? The businessperson
is in a position to determine this, more than a developer with inputs from the
customer.
Composition of releases − How much or how little needs to be done before the
business is better off with the software than without it? The developer's intuition
about this question can be wildly wrong.
Dates of releases − What are important dates at which the presence of the
software (or some of the software) would make a big difference?
Consequences − There are strategic business decisions that should be made only
when informed about the technical consequences. Development needs to explain
the consequences.
Process − How will the work and the team be organized? The team needs to fit
the culture in which it will operate. The software must be written well rather than
preserve the irrationality of an enclosing culture.
Detailed Scheduling − Within a release, which stories should be done first? The
developers need the freedom to schedule the riskiest segments of development
first, to reduce the overall risk of the project. Within that constraint, they still tend
to move business priorities earlier in the development, reducing the chance that
important stories will have to be dropped towards the end of the development of a
release due to time constraints.
Thus, plan is a result of collaboration between the customer, businessperson and the
developers.
Short Releases
You should put a simple system into production quickly, and then release new versions in
very short cycles. Every release should be as small as possible, so that it is −
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 16/67
7/11/2019 Extreme Programming Quick Guide
A working system
The duration of the short cycle may vary with the software that needs to be built.
However, it needs to be ensured that the minimum possible duration is chosen.
Frequent feedback
Tracking
Metaphor
According to Cambridge online dictionary- A Metaphor is an expression, often found in
literature that describes a person or object by referring to something that is considered to
have similar characteristics to that person or object. For example, ‘The mind is an ocean’
and ‘the city is a jungle’ are both Metaphors.
You should guide the entire development with a simple shared story of how the whole
system works. You can think of metaphor as the architecture of the system to be built in a
way that it is easily understandable by everyone involved in the development.
The metaphor consists of domain specific elements and shows their interconnectivity. The
language used is the domain language. To identify the technical entities, the words used in
the metaphor need to be taken consistently.
As the development proceeds and the metaphor matures, the whole team will find new
inspiration from examining the metaphor.
The goal of a good architecture is to give everyone a coherent story within which to work,
a story that can easily be shared by both the business and the technical members.Hence,
in Extreme Programming, by asking for a metaphor, we are likely to get an architecture
that is easy to communicate and elaborate.
Metaphor – Advantages
The advantages of Metaphor are −
Simple Design
The system should be designed as simply as possible at any given moment. Extra
complexity is removed as soon as it is discovered.
The right design for the software at any given time is the one that −
To get a simple design, eliminate any design element that you can, without violating the
first three rules. This is opposite to the advice- Implement for today, design for tomorrow.
If you believe that the future is uncertain and you can quickly enhance the design, then do
not put any functionality on speculation.
Testing
The developers continually write unit tests, which need to pass for the development to
continue. The customers write tests to verify that the features are implemented. The tests
are automated so that they become a part of the system and can be continuously run to
ensure the working of the system. The result is a system that is capable of accepting
change.
Testing – Advantages
The advantages of testing are −
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 18/67
7/11/2019 Extreme Programming Quick Guide
Refactoring
When implementing a feature, the developers always ask if there is a way of changing the
existing code to make adding the feature simple. After they have added a feature, the
developers ask if they now can see how to make the code simpler, while still running all of
the tests. They restructure the system without changing its behavior to remove
duplication, improve communication, simplify, or add flexibility. This is called Refactoring.
Refactoring – Advantages
The advantages of Refactoring are −
Pair Programming
In Pair programing, the entire code is written with two developers at one machine, with
one keyboard and one mouse.
The first developer (the one with the keyboard and the mouse) thinks about the
best way to implement this method right here.
What are some other test cases that might not work yet?
Is there some way to simplify the whole system so the current problem
just disappears?
The pairing is dynamic. It means that the two Roles A and B may exchange their places, or
they may pair up with other team members. More often, anyone on the team will do as a
partner. For example, if you have a responsibility for a task in an area that is unfamiliar to
you, you might ask someone with recent experience to pair with you.
Focus
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 19/67
7/11/2019 Extreme Programming Quick Guide
What are some test cases that may not work yet?
Collective Ownership
In Extreme Programming, the entire team takes responsibility for the whole of the system.
Not everyone knows every part equally well, although everyone knows something about
every part.
If a pair is working and they see an opportunity to improve the code, they go ahead and
improve it.
Promotes the developers to take responsibility for the system as a whole rather
than parts of the system.
Continuous Integration
Code is integrated and tested many times a day, one set of changes at a time. A simple
way to do this is to have a machine dedicated to integration. A pair with code ready to
integrate −
Integrating one set of changes at a time helps in knowing who should fix a test that fails.
The answer- is the present pair, since the last pair left the tests at 100%. They may have
to throw away what they have done and start all over, as they might not have known
enough to code that feature.
Enables the short releases practice as the time required before release is minimal.
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 20/67
7/11/2019 Extreme Programming Quick Guide
40-Hour Week
Extreme Programming emphasizes on the limited number of hours of work per week for
every team members, based on their sustainability, to a maximum of 45 hours a week. If
someone works for more time than that, it is considered as overtime. Overtime is allowed
for at most one week. This practice is to ensure that every team member be fresh,
creative, careful and confident.
On-Site Customer
Include a real, live user on the team, available full-time to answer the questions, resolve
disputes and set small-scale priorities. This user may not have to spend 40 hours on this
role only and can focus on other work too.
Can give quick and knowledgeable answers to the real development questions.
Coding Standards
Developers write all code in accordance with the rules emphasizing-
Consistent with the “once and only once” rule (no duplicate code).
These rules are necessary in Extreme Programming because all the developers −
Can change from one part of the system to another part of the system.
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 21/67
7/11/2019 Extreme Programming Quick Guide
If the rules are not followed, the developers will tend to have different sets of coding
practices, the code becomes inconsistent over time and it becomes impossible to say who
on the team wrote what code.
Reduces the amount of time developers spend reformatting other peoples’ code.
In this chapter, we will focus on the possible weakness of each practice if implemented in
isolation. We will see how Extreme Programming can support this practice to overcome the
weakness when implemented in conjunction with other practices.
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 22/67
7/11/2019 Extreme Programming Quick Guide
In this section, we will see the weaknesses of the Planning Game are and how the other XP
practices support it.
In planning game, the customer is also involved in updating the plan, based on the
estimates provided by the developers.
You make short releases so that any mistake in the plan would have at the most a
few weeks or months of impact.
Your customer sits with the team, so they could spot potential changes and
opportunities for improvement quickly (on-line customer).
Continuous testing helps the developers and the customer to decide what is
required immediately.
Thus, you can start development with a simple plan, and continually refine it as you go
along.
The planning game helps you work on the most valuable stories, so even a small
system will have business value.
Testing reduces the defect rate enough so that a lengthy test cycle is not required
before a release.
You can make a simple design, sufficient for this release, not for all time.
Thus, you can make Short Releases, soon after the development begins.
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 23/67
7/11/2019 Extreme Programming Quick Guide
With pair programming, you will have quick concrete feedback from the
implemented code and tests about whether the metaphor is working fine.
Your on-site customer is comfortable talking about the system in terms of the
metaphor.
You cannot possibly have just enough design for today's code and your design may not
continue to evolve the system.
With an overall metaphor, you are sure that the future design changes would tend
to follow a convergent path.
Pair programming helps you to be confident that you are making a simple design
that works.
Continuous unit testing and customer testing ensures that your simple design is on
the track.
Thus, you can do the best possible design for today, without speculation.
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 24/67
7/11/2019 Extreme Programming Quick Guide
Testing - Disadvantages
You may think that −
With pair programming, even if you cannot think of another test, your partner can.
You can allow your partner to run the tests handing over the keyboard and you feel
confident when you see the tests all running.
Continuous integration and immediately running the tests for every set of changes
made by a pair ensures −
That if any test fails, it is that pair’s code that is failing the system so that
the changes can be immediately reversed and the pair can start afresh with
coding with the clarity on the feature they are implementing.
Short releases ensure that a working system is available for the customer to run
the tests and give feedback.
On-line customer will have time to run all the tests and provide feedback
immediately on the working system.
Planning game ensures to take the feedback from the customer after testing to
plan for the next release.
Thus, the developers and the customers will write tests. Further, the tests are automated
to ensure the working of the rest of the Extreme Programming.
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 25/67
7/11/2019 Extreme Programming Quick Guide
With collective ownership, you can make changes wherever they are needed.
With pair programming, you can have the courage to tackle a tough refactoring.
With testing, you are less likely to break something without knowing it.
With 40-hour week, you are rested and so you have more courage and are less
likely to make mistakes.
Reduce duplication
You cannot possibly write all the code in pairs. It will be too slow. It makes the situation
difficult if two people do not get along well.
With 40-hour work, everyone is fresh and focused, reducing further the chance of
unnecessary discussions.
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 26/67
7/11/2019 Extreme Programming Quick Guide
The pairs write tests together, giving them a chance to align their understanding
before tackling the implementation part.
Metaphor helps the pairs to ground their decisions about naming and the basic
Design
Refactoring helps the pair to discuss and make combined decisions in making the
system simple.
Collective Ownership enables the team to mix and match and allows them to
maintain a cordial relationship.
Thus, you can write all the code in pairs. On the other hand, if the team works in solo,
they are more likely to make mistakes, overdesign and overlook the other practices.
With Pair Programming, you are less likely to break the code, and developers learn
faster what they can profitably change.
With Coding Standards, you will not have conflicts on the code.
With Refactoring, you maintain the system simple so that everyone understands it.
Thus, you can have anyone change code anywhere in the system when they see the
chance to improve it. On the other hand, without collective ownership the rate of evolution
of the design slows dramatically.
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 27/67
7/11/2019 Extreme Programming Quick Guide
Testing quickly helps you to know that you have not broken anything.
With pair programming, there are half as many streams of changes to integrate.
With refactoring, there are smaller pieces, reducing the chance of conflicts.
Collective ownership ensures that whoever changes the code and integrates will
have a whole view of the system.
Thus, you can integrate after a few hours. On the other hand, if you do not integrate
quickly, then the chance of conflicts rises and the cost of integration goes up steeply.
The planning game provides you what more valuable work to do.
The combination of the planning game and testing ensures that you have to work
on only what you thought.
Simple design and refactoring allows you to stay focused and complete on time.
Pair programming helps you to work on what you can do, sharing the other work
with your partner.
The practices as a whole help you develop at top speed, and hence you cannot go
any faster.
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 28/67
7/11/2019 Extreme Programming Quick Guide
Thus, you can produce enough business value in 40-hour weeks. On the other hand, if the
team does not stay fresh and energetic, then they won't be able to execute the rest of the
practices.
In Planning Game, by making priority and scope decisions for the developers.
Thus, they can produce more value for the organization by contributing to the project.
Pair Programming makes them adapt to the necessary Coding Standards easily.
Following table shows how the Extreme Programming practices are being evolved.
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 29/67
7/11/2019 Extreme Programming Quick Guide
Release Planning
The Planning Game
Iteration Planning
Acceptance Testing
Test-Driven Development
The customer provides requirements, sets priorities and steers the project. This enables
the customer to understand the practical details of development and set the priorities and
expectations accordingly. This changes from “As customer asks the development” to “As
the customer understands and cooperates with the development”.
The project goals are a shared responsibility and the development is an ongoing
conversation across the whole team. It is a cooperative game of invention and
communication. It is found that face-to-face communication is the most efficient and the
most effective method in the path of development and eliminates wait times and delays.
Release planning sets long-term goals, with an overall big-picture at hand. The customer
presents required features, the developers estimate and the release dates are mutually
agreed and committed. As the release plan is revised after every release, it becomes more
precise as the project progresses.
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 30/67
7/11/2019 Extreme Programming Quick Guide
Iteration planning sets short-term time-boxes with iterations, typically ranging from 1
week to 1 month. The main objective of iteration planning is a working software at the end
of each iteration. The developers choose the features/stories for the iteration, break them
down into tasks, estimate tasks and commit to the allocated tasks. Sustainable pace is
ensured by balancing the load factor across the team, considering 40-hour week.
Acceptance Testing
The customer writes one or more automated acceptance tests for a feature, to ensure that
the system implements the desired features correctly. The acceptance tests are written
along with the stories and provided prior to implementation.
Team automates these tests to verify that a feature is implemented correctly. Once the
test runs, the team ensures that it keeps running correctly thereafter, at the time of
regression, by executing all the acceptance tests implemented till then.
Unit Testing
The developer writes unit tests with sufficient coverage, incorporating the intent and usage
of the code modules and methods. Unit tests are automated, with clear pass/fail. Most
languages have a xUnit framework (e.g., nUnit, jUnit).
All unit tests are executed very frequently and the code cannot be checked-in until all unit
tests pass. The unit test results also help in refactoring.
In Test Driven Development, the developer writes a unit test prior to writing code. The
intent is to make the unit test fail. As the code is not yet implemented, the unit test fails.
The developer writes just enough code to make the unit test pass and then, the developer
refactors to ensure that the code is simple and clean (with no duplications and
complexity).
The developer iterates till the coding is complete and the acceptance test passes.
The Unit Tests are all collected together and each time a pair integrates and releases code
to the repository, the pair needs to ensure that every test runs correctly. If any test fails,
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 31/67
7/11/2019 Extreme Programming Quick Guide
the pair knows that it is their code that needs to be corrected as the prior integrations
passed without any defects.
Test Driven Development tends to result in 100% unit test coverage and ensures the code
to be simple and minimal.
Fatigue and stress reduce productivity and also the quality of the product. It may
lead to staff-turnover.
Development does not stop with a sprint, and it should be aiming at long term
objectives
Unless the team agrees on expectations there will not be commitment and
accountability.
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 32/67
7/11/2019 Extreme Programming Quick Guide
Extreme Programming employs a coach whose job is noticing when people are not
communicating and reintroduce them.
Code reviews
Unit testing
Releases
Iterations
Tasks
Development
Feedback
Each of the activity levels provides the minimal inputs required for the next level. They are
−
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 33/67
7/11/2019 Extreme Programming Quick Guide
Feedback is a continuous activity throughout the project and across all the above activity
levels.
Releases
This is also referred to as the Commitment phase. In this activity −
Progress is reviewed.
The developers determine the technical approach and risk. They provide first-level
estimates and options.
The customer prioritizes the stories and chooses target release time box.
The customer and developers commit themselves to the functionality that are to be
included and the date of the next release.
The developers −
Iterations
This is also referred to as the Steering phase. The whole team gathers so that the progress
is reviewed and the plan can be adjusted. The customer presents stories for the iteration
and the stories are discussed in greater detail.
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 34/67
7/11/2019 Extreme Programming Quick Guide
The developers −
Tasks
The developers Sign-up for the tasks and begin development episodes to implement the
stories. They ensure the tasks for the iteration are complete. The developers also ensure
that the stories for the iteration are complete with acceptance tests.
Development
The developers form pairs, which can be a continuous and dynamic activity.
Each Pair −
Begins test-driven development, i.e., write unit test, implement code to pass the
unit test, refactor to make the code simple.
Feedback
Pairs constantly communicate within themselves and outward to the team as well. On-line
customer is also involved in the communication on a continuous basis. Certain teams
resort to daily stand-up meetings to discuss the overall team status quickly and the
possible re-synchronization and micro-planning if necessary.
The iteration and release reviews provide overall status and points for process adjustment
and improvement.
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 35/67
7/11/2019 Extreme Programming Quick Guide
One programmer, termed as the driver, has control of the keyboard/mouse and actively
implements the code or writes a test. The other programmer, termed as the navigator,
continuously observes the work of the driver to identify defects and also thinks
strategically about the direction of the work.
When necessary, the two programmers brainstorm on any challenging problem. The two
programmers periodically switch roles and work together as equals to develop a software.
Many mistakes are detected at the time they are typed, rather than in QA Testing
or in the field.
People learn significantly more about the system and about software development.
The project ends up with multiple people understanding each piece of the system.
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 36/67
7/11/2019 Extreme Programming Quick Guide
People learn to work together and talk more often together, giving better
information flow and team dynamics.
University of Utah conducted experiments on pair programming. The results revealed that
−
Code written by pairs consistently passed more test cases than code written by
individuals.
According to Laurie A. Williams and Robert R. Kessler, in their book, ‘All I Really Need to
Know about Pair Programming I Learned in Kindergarten’, it is well explained of how to
nurture the skills that we all have learnt in Kindergarten to establish team cohesion, in
general and pair programming in particular.
The transition and on-going success as a pair programmer often involves practicing
everyday civility.
The following sections are an excerpt of this publication that help you in becoming
effective pair programmers.
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 37/67
7/11/2019 Extreme Programming Quick Guide
Kindergarten lessons
In Kindergarten, we have learnt the following −
Share everything
Play fair
Flush
Live a balanced life – learn some and think some and draw and paint and sing and
dance and play and work every day some
When you go out into the world, watch out for traffic, hold hands and stick
together
Be aware of wonder
Next, we look at the principles of Pair Programming in the context of the above given
teachings.
Share everything
In pair programming,
Two Programmers sit together and jointly produce one artifact (design, algorithm,
code, etc.)
One person is typing or writing, the other is continually reviewing the work. Both
Own everything
Play fair
In pair programming,
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 38/67
7/11/2019 Extreme Programming Quick Guide
One person drives, i.e. has control of the keyboard or is recording design ideas,
while the other is continuously reviewing the work.
They switch these roles periodically, even when one of them is significantly more
experienced than the other, to ensure equal participation.
While the person who is driving is thinking about implementation, the other
continuously reviews code, thinks about a possible simpler design that is possible,
how the current development fits in the overall system as of date.
Ensure your partner follows the prescribed coding standards and thus maintains
the commitment to the rest of the team.
In the pair programming survey, it is found that tremendous productivity gains and quality
improvements are realized. This is because −
Each one keeps their partner focused and on-task with no possibility of slack off.
You need to believe in your skills and your partner’s skills as well. Any negative
thoughts in this aspect are to be put in trash can.
You have to be sure that you express what you know and are open to learn from
your partner when required. You can learn from your partner by observing him or
taking his feedback instantly.
Together as a pair, you can solve problems that you could not solve alone.
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 39/67
7/11/2019 Extreme Programming Quick Guide
You will find that it is amazing to know how many obvious but unnoticed defects
are noticed by your partner.
You can remove these defects without the natural animosity that might develop in
a formal inspection meeting.
Having a “my way or the highway” attitude can prevent the programmer
from considering other’s ideas.
On the other hand, a person who always agrees with the partner so as not to
create tension also minimizes the benefits of collaborative work. For favorable idea
exchange, there should be some healthy disagreement/debate when required.
Thus, a fine balance between displaying too much and too little ego is necessary. Effective
pair programmers groom this balance during an initial adjustment period that can take
hours or days, depending on the individuals, the nature of work and their past experience
with pair programming.
Say you are sorry when you hurt somebody while moving furniture
The programmers must be able to sit side-by-side and program, simultaneously viewing
the computer screen and sharing the keyboard and the mouse. Extreme programmers
have a “slide the keyboard/don't move the chairs” rule.
To ensure effective communication, both within a collaborative pair and with other
collaborative pairs, without much effort, programmers need to see each other, ask each
other questions and make decisions on things such as integration issues. Programmers
also benefit from overhearing other conversations to which they can have vital
contributions.
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 40/67
7/11/2019 Extreme Programming Quick Guide
For success of pair programming, it is necessary that both the partners understand the
value of collaboration in programming, the benefits, and the joy of the experience. Any
skepticism in this regard needs to be stopped in the beginning itself.
Experience has shown that having one programmer, very positive and/or experienced in
pair programming, can lead the pair to become one jelled collaborative team victoriously.
The production of such a team is greater than that of the same people working in
un-jelled form.
The enjoyment that people derive from their work is greater than what you would
expect, given the nature of the work itself.
Flush
The pair programmers can work on something independently. However, when they rejoin,
they have to either review the independent work before incorporating it or flush and
rewrite the independent work along with continuous review of the work, which identifies
additional defects.
Never incorporate any independent work without the review by the partner. This is for the
reason that studies have indicated that the independent work has defects as compared to
the work produced by the pair.
During the break, it is best to disconnect from the task and approach it with a freshness
when restarting. Suggested activities are checking email, making a phone call, browsing
the web, or taking a Snack-break.
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 41/67
7/11/2019 Extreme Programming Quick Guide
There should be no competition between the two. Both must work together as if
the artifact is produced by a single mind.
The Partners need to trust each other’s judgement and each other’s loyalty to the
team.
A partner should never blame the other partner for any problems or defects.
A common set of this knowledge and these skills that enables them to
communicate effectively.
Come up with more than twice as many possible solutions than the two would have
when working alone.
Thus, pair programming is a powerful technique as there are two brains concentrating on
the same problem all the time. It forces one to concentrate fully on the problem at hand.
However, certain roles are required for an extreme programming project to work and the
persons who take these roles take the corresponding responsibilities and are accountable
for their contribution to these roles. It is advised to allocate the right people for the roles
rather than trying to change the people to fit into those roles.
Customer
Coach
Developer
The role of developer is the most important one in Extreme Programming. To be a
developer in Extreme Programming, you need to be accustomed with the following −
Developer Rights
You have the right to know what is needed, with clear declarations of
priority.
You have the right to ask for and receive help from peers, superiors, and
customers.
You have the right to make and update your own estimates.
You have the right to accept your responsibilities instead of having them
assigned to you.
Estimate stories
Estimate tasks
Refactor
Integrate continuously
Developer Skills
Pair Programming
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 43/67
7/11/2019 Extreme Programming Quick Guide
Maintain simplicity
Collective Ownership
If someone changes the code that you wrote, in whatever part of the
system, you have to trust the changes and learn. In case the changes are
wrong-headed, you are responsible for making things better, but be careful
not to blame anyone.
Programmer.
Customer
In Extreme Programming, the customer role is as crucial as the developer role as it is the
customer who should know what to program, while the developer should know how to
program.
This triggers the necessity of certain skills for the customer role −
Making decisions that are required time to time on the extent of functionality that
is required.
Product Managers
Marketing, Sales
Business Analysts
Business/System Operations
Explain stories
Manager
In Extreme Programming, the major responsibilities of the manager are −
Familiarize the team and the customer on the rules of the planning game.
Monitor the planning game, fix any deviations, modify the rules if and when
required.
Participate with the team while they estimate in order to provide feedback on how
reality conformed to their prior estimates, both at team level and individual level
that eventually help them to come up with better estimates next time.
Ensure that the team is working towards the next release as they progress through
the iterations with committed schedule and committed functionality.
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 45/67
7/11/2019 Extreme Programming Quick Guide
Adapt an ability to get all the required information without disturbing the team’s
work. The Manager is Accountable for these Responsibilities.
Coach
Extreme Programming is the responsibility of everyone in the team. However, if the team
is new to Extreme Programming, the role of a coach is crucial.
Identify the Extreme Programming practices that help in case of any problem.
Observe the team silently and intervene only when a significant problem is
foreseen and make the team also see the problem.
Be ready to help.
XP – Activities
In Extreme Programming, the four basic activities are −
Coding
Testing
Listening
Designing
Coding
In pair programming, coding is considered the heart of development. You code because if
you do not code, at the end of the day you have not done anything.
Testing
In pair programming, testing needs to be done to ensure that the coding is done. If you do
not test, you do not know when you have finished coding.
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 46/67
7/11/2019 Extreme Programming Quick Guide
Listening
In pair programming, you listen to know what to code or what to test. If you do not listen,
you do not know what to code or what to test.
Designing
In pair programming, you design so that you can keep coding and testing and listening
indefinitely, as good design allows extension of the system, with changes in only one
place.
Release Planning
Iteration Planning
Implementation
Release Planning
In Release planning, both the customer and the developers jointly arrive at the plan for
the next release, agreeing on the user stories for the release and the next release date.
Exploration Phase
Commitment Phase
Steering Phase
The developers gather requirements and estimates the work impact of each of
those requirements.
The Requirements are written down on user story cards. For writing a story, the customer
will come with a problem in a meeting with the developers. Developers will try to define
this problem and get requirements. Based on this discussion, a story will be written by
customer, pointing out what they want a part of the system to do. It is important that the
developers have no influence on this story.
The Developers need to understand "What the customer is asking for" and "What
requirements are of high value".
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 47/67
7/11/2019 Extreme Programming Quick Guide
The customer needs to understand along with the developers about what scenarios
contribute to these values to write the story.
Though the customer writes the requirements on user story cards, you need to listen to
Obtain clarity
Avoid ambiguity
This phase involves the determination of costs, benefits, and schedule impact. In this
phase,
The user stories that will be finished in the next release will be selected.
Based on the user stories and the estimates, the release date is determined.
The developers need to understand what functionality they need to code for the
current release and the effort and duration (estimates) required to deliver this
functionality.
The customer and the developers need to understand the feasibility for
commitment on the date of next release.
To make changes in individual user stories and the relative priorities of different
user stories.
To understand −
Iteration Planning
In Iteration Planning, the developers are involved to plan the activities and tasks for the
iteration. In this, the customer is not involved.
Exploration phase.
Commitment phase.
Steering phase.
The developers estimate the time it will take to implement each task.
If the developers cannot estimate a task because it is too small or too big, they
need to combine or split the task.
The developer accepts the tasks for which he or she takes responsibility.
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 49/67
7/11/2019 Extreme Programming Quick Guide
The developer estimates the time it takes to complete the task because the
developer is now responsible for the task, and he or she should give the eventual
estimation of the task.
Load balancing is done after all the developers within the team have been assigned
tasks.
A comparison is made between the estimated time of the tasks and the load factor.
The load factor represents the ideal amount of hands-on development time per
developer within one iteration assuming a 40-hour week.
Then the tasks are balanced out among the developers. If a developer is
overcommitted, other developers must take over some of his or her Tasks and vice
versa.
The developer gets the task card for one of the tasks to which he or she has
committed.
The developer will implement this task along with another developer following the
pair programming practice.
Implementation
The implementation of the tasks is done. The implementation includes design, writing unit
tests, coding, unit testing, refactoring, continuous integration to the code base, integration
testing and acceptance testing based on the task card and user story card.
Acceptance tests
Estimates
Release plan
Iteration plan
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 50/67
7/11/2019 Extreme Programming Quick Guide
Task cards
Design
Contains a short description of the behavior of the system from the point of
view of the customer.
Should only provide enough detail to make an estimate of how long the
story will take to implement.
Acceptance Tests
Acceptance tests must be one or more tests to verify that a story has been properly
implemented.
Release Plan
Release plan contains −
Task Cards
A Task card −
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 51/67
7/11/2019 Extreme Programming Quick Guide
Iteration Plan
Iteration plan contains −
Task assignments
Task estimates
Design
A design contains a simple design just enough for the implementation of a user story.
The rules provide a common reference for everyone on the team so that they remind
everyone of what and how they need to do when things go smoothly and also when they
are not going well.
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 52/67
7/11/2019 Extreme Programming Quick Guide
In Extreme Programming, the planning game begins with the first-release planning
meeting and ends with the final release.
You must define the rules of the Planning Game in line with the Extreme Programming
practices before the first release planning meeting and familiarize the rules to the business
and the team. You must manage the project ensuring that the rules are adhered to.
However, in software development, there is no way that a simple set of rules apply in
every project. They may have to vary according to the business and the team, not
compromising on the Extreme Programming practices. Hence, a set of rules with the
necessary goals can initially be put in place and they can be modified as the development
progresses only if required.
The goal of the game is to maximize the value of software produced by the team. From the
value of the software, you have to deduct the cost of its development, and the risk
incurred during development.
The strategy for the team is to invest as little as possible to put the most valuable
functionality into production as quickly as possible in conjunction with the design and
coding strategies to reduce risk.
In view of the technology and business lessons of this first working system, it becomes
clear to business what is now the most valuable functionality, and the team quickly puts
this into production.
This process continues with iterations and releases till the entire development is complete.
The basic rules of planning game can be categorized into the following areas −
Planning
Managing
Designing
Coding
Testing
Planning
Planning is done during release planning and iteration planning. The rules are same for
both.
In Release planning,
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 53/67
7/11/2019 Extreme Programming Quick Guide
In Iteration planning,
For each story selected for the iteration, the task cards are produced.
The team members have to estimate the tasks based on the task cards.
Each team member has to then re-estimate based on his or her assignment, for
Thus, the rules for who can make and change the estimates are clear.
Managing
Each workstation is to be arranged such that two developers can sit side by side
and easily slide the keyboard and mouse.
Sustainable pace is to be set (40-hour week and no overtime for more than one
week) and managed.
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 54/67
7/11/2019 Extreme Programming Quick Guide
not helpful
Measure the actual times and convey to team periodically so that each team
member will know the performance as against prediction. This ensures that the
team member improves in estimating.
Designing
The rules of designing are −
Put as much architecture in place now as you need to meet your current needs,
and trust that you can put more in later
Coding
The rules of coding are −
Developers should write all the code in accordance with rules emphasizing
communication through the code.
Write a unit test first, before the code is written for each piece of the system so
that it is much easier and faster to create your code. The combined time it takes to
create a unit test and create some code to make it pass is about the same as just
coding it up straight away. It eases regression testing.
When you are coding you should be wearing only one of the following four hats −
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 55/67
7/11/2019 Extreme Programming Quick Guide
Only one pair integrates code at a time and ensures all the tests are passed.
Testing
The rules of testing are −
Feedback Loops
The charm of Extreme Programming is continuous feedback that keeps everyone focused
and development continues in the right direction without any delays.
The following table illustrates the feedback events and the feedback duration.
Progress In a Day
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 56/67
7/11/2019 Extreme Programming Quick Guide
Project Management
In Extreme Programming, Project Management is not given emphasis and the manager
role performs the minimal and the most essential management activities.
Release Planning
Iteration Planning
Tracking
Velocity in terms of story points from actual time for implementation done
at project level.
Defect tracking
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 57/67
7/11/2019 Extreme Programming Quick Guide
Planning − In case the team completes many user stories in an iteration, make
the iterations smaller. Have the team consensus to alter a plan.
Later, it was observed that it is possible to scale Extreme Programming up to teams of 40-
50. However, it is recommended to do the scaling by building recursive teams. Build a
small team first, grow the team incrementally, using the first team to seed recursive
teams.
Documentation
Extreme Programming is not against any documentation. It encourages documenting what
is required, when it is required and only to the required and sufficient Detail. This may
differ from project to project and it is for the project to decide on the extent of
documentation. However, skipping documentation is not allowed by the Extreme
Programming practices.
Advantages of applying XP
Extreme Programming is found to be advantageous when applied in −
Internal projects
Joint ventures
Disdvantages of applying XP
Extreme Programming is found to be disadvantageous when −
Misconceptions of XP
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 58/67
7/11/2019 Extreme Programming Quick Guide
There are some misconceptions about Extreme Programming. The following table gives the
clarifications of the misconceptions that exist.
Misconception Clarification
Extreme Programming is the one, true way to Extreme Programming is effective only in
build software certain type of projects.
Extreme Programming in the current scenario focuses on the best practices that are
prevailing in the industry as of now and takes them to the extreme. The most prevalent
examples are Test Driven Development, Whole Team Approach, Sustainable Pace, etc.
XP – Flexibility as Technique
One of the reasons Extreme Programming is so popular is its flexible nature. Further,
Extreme Programming is more about technique than process and hence merges well with
the process-centric approaches. So, you can easily combine features of extreme
programming with other ideas, wherever
However, remember that any of the Extreme Programming Practices that you choose
should be implemented to its core. Otherwise, you cannot claim that you are using
Extreme Programming.
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 59/67
7/11/2019 Extreme Programming Quick Guide
In fact, this is true for any process that you take up. Mix-and-match is allowed, but only
when you are using complimentary features and you are not compromising on the values
of the features being used.
The most popular Extreme Programming hybrid that is currently in use is Scrum +
Extreme Programming hybrid. We will start with the basic and still prevalent Software
Development Methodology – Waterfall Model.
Waterfall Model
In Waterfall model, the development progresses in phases and no phase can begin before
the completion of the earlier phase.
What you need to remember is that no methodology is ideal for every situation and every
methodology will have its own merits and demerits. Hence, you have to understand which
methodology suits your context, your environment and your customer interests.
As the methodology is forward facing in one direction, feedback from any phase
cannot be taken back into any of the earlier phases, though more clarity is
obtained regarding the end product.
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 60/67
7/11/2019 Extreme Programming Quick Guide
The working product will not be available till the end of development and hence
nobody will have a clue on whether the right thing is being built though it is being
developed rightly.
Defect fixes and changes to the requirements are difficult to be absorbed as there
is a high chance of breaking the design and also the costs incurred are high.
If you predict such conditions in your development, the Agile methodologies are the most
suited.
Agile Methodologies
Agile Methodologies advocate −
Team-centric approach to make everyone responsible and accountable for the end
product.
Flexible planning that focuses on the delivery of value to the customer, meeting
customer expectations, return on investment.
Readiness to accept changes at any point of development so that the end product
that is delivered is not obsolete.
Several Agile methodologies came into existence, of which Scrum has become more
popular and is being widely used.
The requirements are called backlog items, the iterations are called sprints. Continuous
Testing with test-first approach will be adapted. The developers and the testers also
participate in the user story writing which are the backlog items. This gives an upfront
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 61/67
7/11/2019 Extreme Programming Quick Guide
view of the product’s behavior to everyone in the team and also helps in arriving at the
acceptance criteria at the beginning of the sprint itself.
Scrum, by its definition, again as we stated earlier, is effective in certain situations, but
has its own shortcomings as with any other development methodologies.
The time-boxed sprints will not allow any flexibility in the release schedule that
hampers both development and testing.
Hence, Scrum is usually combined with other Agile methodologies that focus more on the
development strategies.
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 62/67
7/11/2019 Extreme Programming Quick Guide
Task Progress
Project Velocity
Rapise tool is a test automation solution that can be integrated fully into your development
process and that be adapted to your changing needs. You can use it for testing desktop,
web and mobile applications. This tool can be used by developers, testers and business
users to generate acceptance tests.
ExtremePlanner
ExtremePlanner is a browser-based Agile Project management solution that is designed
specifically to support Agile methods including Scrum and Extreme Programming.
ExtremePlanner concentrates on planning and tracking the progress of features (or user
stories) that have actual business value to customers.
Supports the whole team including project managers, developers, QA, tech
support, and stakeholders.
Estimates and plans software releases with drag and drop ease.
Manages features, defects, test cases and development tasks in one place.
Has an integrated issue tracking to manage customer requests from start to finish.
Provided the latest changes with email notifications and project activity reports.
Calendars
Resource allocation
Targetprocess
Targetprocess is a Visual project management software that enables you to visually
manage complex work and focus on the things that matter.
Targetprocess gives the visibility and transparency you need across your organization.
From Kanban and Scrum to almost any operational process, Targetprocess flexibly adapts
to your management approach and organizational structure.
Targetprocess provides −
Boards for planning and progress tracking. Board view gives many options to
handle a large amount of cards seamlessly.
Boards that can be shared with any person to broadcast information outside. They
are flexible.
Graphical reports.
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 64/67
7/11/2019 Extreme Programming Quick Guide
Timelines.
Custom views.
Dashboards.
Content types −
Project − Project Managers can add multiple projects. For each project,
iterations and stories can be added by both the customers and employees.
Story − The customer can define new features by describing these feature
in a story.
Booking − While working on tasks the employees can track time and
easily book those at the end of the day.
Workflow.
Time tracker.
Release plan.
Iteration roundup.
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 65/67
7/11/2019 Extreme Programming Quick Guide
Initiate the project with the minimal essential Extreme Programming rules for the project.
Allow the rules to evolve for better implementation. Take into consideration the synergies
across the Extreme Programming practices. Allow sufficient time for the team to scale the
learning curve. Manage the team culture and change.
It is advised to take an internal project at first. Once you successfully implement that
project, you will have the team and the management to stand by you for the extension to
other suitable projects.
Advertisements
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 66/67
7/11/2019 Extreme Programming Quick Guide
https://www.tutorialspoint.com/extreme_programming/extreme_programming_quick_guide.htm 67/67