Extreme Programming (XP)
The first Extreme Programming (XP) project was started March 6, 1996. Extreme Programming is one of several popular Agile processes. Extreme Programming is an Agile software development framework that aims to deliver higher quality software and higher personal satisfaction for the development team. XP is the most explicit of the frameworks in regards to suitable design practices for software development.
XP focuses on bringing in best practices to software engineering. It stresses code refactoring and paired programming. XP highly values teamwork, collaboration, and shared workspaces.
12 Practices of XP
-
Pair Programming
-
Planning Game
-
Test Driven Development (TDD)
-
Whole team
-
Continuous Integration
-
Refactoring
-
Small Releases
-
Sustainable Pace
-
Collective Code Ownership
-
Coding Standard
-
Simple Design
-
System Metaphor
Extreme Programming is successful because it stresses customer satisfaction. Instead of delivering everything you could possibly want on some date far in the future this process delivers the software you need as you need it. Due to this aspect of the XP framework, it empowers developers to confidently respond to changing customer requirements, even late in the life cycle.
Extreme Programming emphasizes teamwork. Managers, customers, and developers are all equal partners in a collaborative team. Extreme Programming implements a simple, yet effective environment enabling teams to become highly productive. The team self-organizes around the problem to solve it as efficiently as possible.
Extreme Programming improves a software project in five essential ways:
-
Communication
-
Simplicity
-
Feedback
-
Respect
-
Courage
Extreme Programmers constantly communicate with their customers and fellow programmers. They keep their design simple and clean. They get feedback by testing their software starting on day one. They deliver the system to the customers as early as possible and implement changes as suggested. Every small success deepens their respect for the unique contributions of each and every team member. With this foundation Extreme Programmers are able to courageously respond to changing requirements and technology.
The most surprising aspect of Extreme Programming is its simple rules. Extreme Programming is a lot like a jig saw puzzle. There are many small pieces. make no sense, but when combined together a complete picture can be seen. The rules may seem awkward and perhaps even naive at first, but are based on sound values and principles.
Customers often appreciate being partners in the software development process, developers actively contribute regardless of experience level, and managers concentrate on communication and relationships. Unproductive activities have been trimmed to reduce costs and frustration of everyone involved.
XP Advantages:
-
The simplicity of the written code works as an advantage, since it allows for its improvement at any given time
-
The whole process and the whole cycle of XP development is visible, therefore creating goals for developers and showing results in a relatively fast way
-
Software development turns out to be more agile than in other methodologies, precisely because of the constant testing
-
XP also contributes to uplifting the talent of the teams and to their withholding.
XP Disadvantages:
-
The extreme focus on code can lead to less importance being paid to design, hence requiring extra attention to that matter;
-
This framework may not work in the best way possible if all team members are not working in the same geographical area;
-
In XP projects, a registry of possible errors is not always maintained, and that lack of monitoring can lead to similar bugs in the future.