What is XP?
Extreme Programming, or commonly known as “XP”, is an Agile method with a primary focus on software development, specifically software development best practices. As you read this article, see if you can think of ways that the below tools and techniques are applicable to your projects, teams and/or practices.
What can you learn from XP Core Practices?
There are 13 simple, but powerful, core practices part of the XP method. Let’s focus on the Top 5 that are suitable for every team and would boost the delivery quality:
- Collective Code Ownership
- Continuous Integration
- Code Standards
- Pair Programming
1. Collective Code Ownership
In most software development companies, the delivery team is used to the concept of individual code ownership, where an individual is responsible for a subset of a bigger system or even an entire code base. Unfortunately, in most of the cases, it results in poor code quality, poor coding style, useless or no code reviews, and a dependency on one individual. The good news is that there is no obligation to stick with individual code ownership. The team can be collectively responsible for the code by implementing a tested Agile XP technique called collective code ownership.
Collective code ownership means that every developer can improve or amend any code. This results in increased visibility as well as in a broader knowledge of the codebase by the entire team. Collective code ownership is a win-win scenario for the team, business, and clients with a focus on continuous knowledge sharing, efficient code reviews, improved code quality, and a great learning scope.
2. Continuous Integration
Continuous integration (CI) is a mandatory XP tool and an automated practice of integration of code changes from multiple contributors into a single software project. In other words, Continuous Integration involves bringing the code together and making sure it all compiles and works. This is a very critical practice because it brings problems to the surface at the right time before its too late and you have more code built on top of the faulty or incompatible designs.
The best practice is to check the code several times a day and pair the process with different integration tests that are running automatically. Such tests would highlight broken builds or problems with integration, so you can have the problems addressed immediately.
3. Code Standards
Every person is different, this also applies to code habits and manners. Most likely, after implementing collective code ownership and allowing everyone to amend any code, it would result in issues when team members take different approaches to coding. To address the risk, follow a consistent coding standard so that all the code looks as if it has been written by a single, knowledgeable programmer. Coding standards are a set of guidelines, best practices, programming styles and conventions that developers adhere to.
There is no ideal standard and this is less important than the team taking a consistent approach to writing code. Effective code standards are short, simple and concise rules that leave a lot of room for creativity. Your coding standards should check for both style issues and design problems. To make the process less stressful it is recommended to automate the checking of code standards application.
There is always room for improvement, even for the code. Refactoring being another XP core practice is the process of improving the existing code without affecting or altering its external behavior/adding new functionality. Have you heard about Tesla providing over the air updates to Teslas that boost performance by 5%? This is an example of refactoring happening behind the scenes and the customer receiving a bonus.
Refactoring focuses on removing duplicated code, lowering dependent connections between code modules, and increasing cohesion. It is important to find the right time for refactoring. For example, refactor first before adding any features. Think of code refactoring as cleaning the house. When you have an organized and clean home, it is so much easier to operate vs a chaotic and stressful environment.
5. Pair Programming
Pair Programming is an Agile (XP) technique when the production code is written by two developers working as a pair. One person writes the code, the other person reviews the code at the time it is being written, and the roles are frequently changed. It might seem inefficient at first, but the main benefit is that it saves time because issues are caught early and now you have two people with a larger knowledge base. It also helps to spread knowledge about the system to the team, boost communication among the team members, increase the overall product quality and team satisfaction.
I hope you found this information interesting and valuable. More management and organizational content are on the way, stay tuned!