A brief insight into an Agile Software Development framework - Extreme Programming. A brief description of extreme programming, It's various practices, values, and roles of various people indulged in extreme programming and also a insight into pair programming and its various benefits.
2. Contents
● Introduction
● When Applicable
● Values
● Practices
● Relationship between XP Practices
● Pair Programming
● Roles in XP
3. Introduction
Extreme Programming (XP) is an agile software development framework that
aims to produce higher quality software, and higher quality of life for the
development team. XP is the most specific of the agile frameworks regarding
appropriate engineering practices for software development.
4. When Applicable
● Dynamically changing software requirements
● Risks caused by fixed time projects using new technology
● Small, co-located extended development team
5. Values
Communication: Software development is inherently a team sport that relies on
communication to transfer knowledge from one team member to everyone else on
the team.
Simplicity: Simplicity means the simplest thing that will work. The purpose of
this is to avoid waste and do only absolutely necessary things such as keep the
design of the system as simple as possible so that it is easier to maintain, support,
and revise.
6. Values
Feedback: Through constant feedback about their previous efforts, teams can
identify areas for improvement and revise their practices.
Courage: Courage is effective action in the face of fear. It is a preference for
action based on other principles so that the results aren’t harmful to the team.
Respect: The members of your team need to respect each other in order to
communicate with each other, provide and accept feedback that honors your
relationship, and to work together to identify simple designs and solutions.
8. Practices
1. The planning game: This focuses on planning the next release.
2. Small releases: A software system is developed iteratively with small releases
adding system features and allowing rapid feedback.
3. Simple design: Keep things as simple as possible but not simpler.
4. Testing: Unit tests and acceptance tests must be continually developed and the
code must pass unit tests for development to continue.
5. Refactoring: This involves improving the system (e.g., to aid simplicity)without
changing the functionality.
6. Pair programming: All code is developed by developers working in pairs (at a
single machine).
9. 7. Collective ownership: Everyone owns all the code so anyone has the right to
change any of the code at any time in order to improve it.
8. Continuous integration: New code is integrated and the system rebuilt every
time a task is completed (which may be many times a day).
9. On-site customer: Have a real customer as part of the team, so that they are
always available to answer questions.
10. Coding standards: Have them and use them.
11. 40-hour week: Work no more than 40 hours a week so that the developers are
always fresh and ready for the challenges facing them.
12. System metaphor: Use the system metaphor to guide the whole
development. It is a metaphor for how the system operates (it is similar to the
architecture of the system but typically simpler).
12. Pair Programming
Pair programming is a style of programming in which two programmers work
side-by-side at one computer, sharing one screen, keyboard and mouse,
continuously collaborating on the same design, algorithm, code or test.
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.
13. Pair Programming – Advantages
● Many mistakes are detected at the time they are typed, rather than in QA
Testing or in the field.
● The end defect content is statistically lower.
● The designs are better and code length shorter.
● The team solves problems faster.
14. Pair Programming – Advantages
● People learn significantly more about the system and about software
development.
● The project ends up with multiple people understanding each piece of the
system.
● People learn to work together and talk more often together, giving better
information flow and team dynamics.
● People enjoy their work more.
15. Roles in Extreme Programming
The Roles that have been found effective in Extreme Programming are −
● Developer (also called Programmer by some teams)
● Customer
● Manager (also called tracker)
● Coach
16. Developer
The role of developer is the most important one in Extreme Programming.
Developer Rights
● You have the right to know what is needed, with clear declarations of priority.
● You have the right to produce quality work at all times.
Major responsibilities that you will be accountable for −
● Estimate stories
● Define tasks from stories
Developer Skills
● Pair Programming
● Communication – that is necessary and to the sufficient detail
17. Customer
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 −
● Writing required stories to the necessary and sufficient detail.
● Developing an attitude for the success of the project.
18. Customer
The customer is required to be in constant communication with the team and speak as a
single voice to the team. This is required since −
● Customer could be multiple stakeholders.
● Customer could be a community.
● Customer is not always the PRINCIPAL (proxies).
● Customer can be a team with the following potential members − Product Managers,
Marketing, Sales, Business Analysts, End Users, their Manager, Business/System
Operations
19. Manager
In Extreme Programming, the major responsibilities of the manager are −
● Define the rules of planning game.
● 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.
● Schedule and conduct release planning and iteration planning meetings.
20. 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.
The responsibilities of the coach are −
● Understand, in depth, the application of Extreme Programming to the project.
● Identify the Extreme Programming practices that help in case of any
problem.
● Remain calm even when everyone else is panicking.