We have mentioned time and again that the goal of agile is satisfying the customer. However, each principle we explore provides ways to accomplish that goal. The principle we focus on in this episode reminds us that we are still building software. There are certain traits any good team or system will have. Good design and technical excellence are tools for building the best solution.
Continuous attention to technical excellence
and good design enhances agility.
Good Design, Not Good Documentation
Some people say that Agile is an approach that avoids documentation and limits design. Likewise, detractors accuse it of jumping too quickly into implementation. This principle puts the lie to those accusations. We can do all manner of good things but still need to pay attention to the details and plan our approach. Therefore, good design is an essential step in any agile approach.
The idea of technical excellence is not some lofty goal. It is a practical objective that leads to better software. You can think of examples of shoddy (not excellent) work in buildings. One that is the height of excellence will look good, withstand the elements, and generally be a better product. Software is no different. Our goals of sustainable, scalable, scalable, and others all hinge on how well we incorporate technical excellence. It is not hard to find examples of lesser solutions that crash often, are slow to respond, or are impossible to extend.
In short, this principle points out to us the critical things we need to do as part of satisfying the customer. The Agile process is not a complete replacement for what has been done in the past. Instead, it is a refinement of the valuable things where the less valuable ones are removed. That may sound familiar as it is laid out in the summary. If you remember, they pointed to some tasks as having more value than others so we will aim to do better with those greater valued tasks.