XP values simplicity. When implementing a feature, XP constantly asks the question “What is the simplest thing that could possibly work?“ (Beck & Andres, 2004)
Why simplicity? The problem of complexity
When implementing user stories, one argument for a complex solution is that the extra benefits or functionality the solution provides though not needed now, may be needed in future. However if there is uncertainty of its future utility, then the risk is that development time is being spent on functionality that may not be used or whose development could possibly be deferred. Because it is difficult predict the feature, complex solutions may turn out to be a wasted effort (Chromatic, 2003).
Simplicity – eliminating the wasted effort that can arise from complexity.
- Simplicity means:
- building just the system that needs to be built, and nothing more.
- building a system that solves today’s problem, based on the requirements we know for sure today
- “maximising the amount of work not done” ( as the Agile manifesto puts it )
- eliminating the waste (unneeded or deferrable cost) that can arise from complex solutions.
- Adding a feature only when it is required.
What simplicity is not
- Simplicity does not mean:
- a solution that is too simple to work in the context of definite, known requirements
- ignoring operational, security, reliability and scalability requirements. Simplicity only makes sense in context – to understand if a solution is simple, we need to keep in mind the full context of the functional and non-functional requirements. (Stephens & Rosenberg, 2003)
- the solution is easy. Changing a complex system to a more simple solution may in fact be hard. (Beck, 1999)
Simplicity and Communication
Simplicity requires close communication to understand the known requirements and there full context. It can involve discussion and negotiation to simplify the requirements. Simplicity works well when feedback can that can clear up uncertainties can be received in a short development cycle. Compared to complex solutions, simple solutions have a lower communication overhead required to document and explain the solution.