Extreme Programming
What is Extreme Programming (XP)? How to use XP and where to use XP?
Extreme Programming (XP) is a lightweight methodology used for small to medium sized software development teams in case of rapidly changing environment. XP is a lightweight process since it won’t overburden the developers. People, customers and developers are centered in this process. XP is a discipline which follows a practice. The final stage is software development.
Where Extreme Programming (XP) is used?
- For dynamic software situation.
- For automation and functional tests.
- Small and co-located development team.
- Fixed time project risk factors.
- Available participation of customers.
- Highly adaptive development.
Principles of Extreme Programming (XP):
XP follow the YAGNI and DRY principle. YAGNI means You Ain’t Gonna Need It where DRY means Don’t Repeat Yourself. They convey the meaning like don’t work the stuff until you need it or going to implement it. Similarly don’t just repeat things.
XP embraces the change and grows on incremental change. A team that works for quality feels proud of the outcome. They understand the feedback immediately and react to it right away. XP react to this in a more concrete way.
5 rules of Extreme Programming (XP):
- Communication – Each step requires all the team members communication
- Courage – Programmers evaluate their own results without any excuses.
- Respect – Every person is responsible for the project output.
- Feedback – Improve the outcome frequently based on the feedback.
- Simplicity – Writing simple code to improve value and reduce time and the cost.
Life cycle of Extreme Programming (XP):
XP is all about development of many small processes which result in big project and the small piece of work hold no meaning when seen individually. The main advantage is that it is more flexible compared to traditional software building lifecycle. It gives opportunities to add a lot of changes.
-
Planning:
The customers meet with the development team to share their requirements or to create user stories. Then the developer’s team plans the cost and time to finish the project with the developers to be working on the project.
-
Designing:
Choose a system metaphor and use CRC card for design sessions. Then create a spike session to reduce the risk. Design won’t add functionality in anticipation.
-
Coding:
The important phase where the code is generated based on the agreed metaphors. Pair programming is followed to develop high quality code.
-
Testing:
Before release all the code has to pass through unit test to avoid bugs. And Extreme Programming (XP) the testing happens with the development rather that at the end of the development process.
-
Listening:
It is one of the crucial methods followed in the XP. Along with customer the developer team also gets continuous feedback from the manager team.
Roles in Extreme Programming (XP):
- The coach: Someone used XP before and used to mentor the team members.
- The tracker: One of the team members used to keep track of the progress and to identify the area of improvement.
- The Developer: Everyone on the team is defined as developer with inter mix of skills.
- The customer: They make all the business decision of the project.
Extreme Programming (XP) practices:
- The test driven development
- The planning game
- On-site customer
- Pair programming
- Continuous Integration
- Code Refactoring
- Small Releases
- Simple design
- Collective Code Ownership
- System Metaphor
- Coding Standards
- 40-hour-week.
Difference between scrum and XP:
- Scrum has no engineering practices but XP have them
- Customer prioritize the work order in XP whereas in scrum developers choose the work order.
- XP are much more amenable to changes rather than scrum.
- Scrum works on sprints likely from two weeks to one month. XP works on iteration from one to two weeks.
- Scrum can be used with frameworks like XP or Kanban. Whereas XP can be directly applied to the team.
Advantages of Extreme Programming (XP):
- The whole process is visible and accountable.
- It helps the team to move in correct direction.
- XP improves employee satisfaction and retention.
- XP supports team works.
- Improved faster project output.
Conclusion:
Extreme Programming (XP) is a set of development practices in a project level. It is sometimes used in conjunction with scrum. Many of the practices are picked up by the development team who already follow agile principles.