Whether your preferred Agile approach is the Scrum process framework, the Kanban pull-system or a tailored combination of both, neither will tell your developers how to develop once they understand the requirements and business priorities. This is when Extreme Programming (XP) is used, which essentially takes software development best practices to extreme levels.
There is more to it than this, of course, as any reader of Kent Beck’s ‘Extreme Programming Explained: Embrace Change’ 1st and 2nd Edition will tell you, so the following is a brief overview of XP to give you some insight into why we like to use it (where applicable) for mobile app and web development.
Activities: Coding, Testing, Listening and Designing
- Developers understand that code is the most important output, as without code there is no working product. Where it is difficult to explain a problem, code can be used to help communicate the problems and figure out the most suitable solution, as code cannot be interpreted in more than one way.
- Developers adhere to test driven development where they write all the automated unit tests that may ‘break’ the code. Coding is complete when all tests run successfully and every piece of code written is tested before moving on to the next feature. Acceptance tests verify that the requirements were understood by the developers and regular system-wide integration testing are encouraged to detect incompatible interfaces early.
- Developers listen to what the customer (Product Owner) needs the system to do and what business logic is needed. Developers understand these needs well enough to give the customer feedback about the technical aspects of how the problem might be solved or cannot be solved.
- Developers create a design structure that organises the logic in the system, so that dependencies and complexities within the system are reduced.
Values: Communication, Simplicity, Feedback, Courage and Respect
- For communication, developers prefer simple designs, common metaphors, collaboration with users, frequent verbal conversations and feedback over documentation (see the The Manifesto for Agile Software Development).
- Developers start with the simplest solution and can add extra functionality later. Coding and designing for uncertain future requirements raises the risk of spending resources on things that may not be needed, while delaying critical features. Simplicity in design and coding also improves the quality of communication.
- Developers get feedback from the system by writing unit tests and running integration tests, get feedback from testers and users through functional tests and acceptance tests and give feedback by estimating new requirements.
- Developers have the courage to design and code for today and not for tomorrow, feel comfortable with refactoring their code when necessary, know when to throw code away and when to be persistent to solve a problem.
- Developers have respect for others as well as self-respect.
Principles: Feedback, Assuming Simplicity and Embracing Change
Principles bridge the gap between values and practices. Kent Beck describes 14 principles, but the more commonly known three are Feedback, Assuming Simplicity and Embracing Change.
XP currently has 29 rules in the categories of Planning, Managing, Designing, Coding and Testing defined by Don Wells.
XP has 12 practices derived from software engineering best practices, which are grouped into four areas.
|Fine scale feedback
Collective code ownership
Refactoring or design improvement
As with any methodology, Extreme Programming is only as effective as the people involved and requires significant cultural change for it to be adopted fully. You can only start from where you are, so we start with the values and practices that can be introduced immediately alongside complementary Agile approaches.Share this post