What is Extreme Programming?
Extreme Programming (XP) is a methodology for agile software development. It is a good method for boosting software quality, accelerating the incorporation of customer feedback and is healthy for developers. It is one of the more vital methods in software development compared to phase based methods like waterfall or even scrum with its more rigid structure. Compared to other methods Extreme Programming emphasizes on engineering practices for software development. Extreme Programming comes with five values and a set of practices.
Values of Extreme Programming
- Respect: Is required for the team members as a foundation for good communication, feedback and working out solutions.
- Feedback: Feedback is the map that guides to implementing the right thing as well as the source for changes to the implementation.
- Communication: Communication is crucial in each team, not only in software development. It is the basis for a team to collaborate. Particularly important in context of XP is face to face communication as well as suitable communication.
- Courage: Basically courage to speak up if there is a need to speak up, either towards the team but also towards the organization. Courage includes discarding plans and change made for the sake of better alternatives. It requires courage to take the risk of doing mistakes and learn from them.
- Simplicity: Basically the question “what is the smallest possible change that will do the job?” is important. Simplicity means don’t build based upon assumptions and keep things as simple as possible.
Practices of Extreme Programming
The core practices that are attributable within the Extreme Programming method include:
- Whole Team: Everyone is an essential part when it comes to contribution. Business people or at least a business representative is part of the team.
- Planning Game: A very basic for of planning and forecasting.
- Small Releases: Software deliveries are small and frequent.
- Customer Tests: Customer is essential part in testing or creating the test cases.
- Simple Design: The value simplicity applies everywhere, also to software design.
- Pair Programming: Developers work in pairs or even small groups to write good quality code and have early feedback.
- Test Driven Development: Test are written and fail before any functional line of code is produced.
- Design Improvement: Constant attention is required and continuous improvements are done to the design.
- Continuous Integration: (Small) Changes to the code are integrated into working software continuously.
- Collective Code Ownership: Through pairing and permanent collaboration the whole team owns the code.
- Coding Standard: The code suffices define standards so that understanding and working with it is no effort for everyone.
- Metaphor: The team has a common and easy to understand representation of their system.
- Sustainable Pace: Work is done at a pace that allows to continue indefinitely.
Leave a Reply