First page Back Continue Last page Graphics
Agile Manifesto: Principle 9
Continuous attention to technical excellence and good design enhances agility.
Notes:
I've no idea how to measure the “agility” of a software development project – but I can affirm that good design makes it more able to endure changes. The distinguishing feature of good design is that each design decision is implemented in one identifiable place – which usually limits the impact of changing it.
[Aside: one of the reasons for my intermittent fascination with error handling (and especially exceptions) is that the application strategy for error handling doesn't seem to be suceptable to being implemented in a single place. This makes the cost of an incorrect design significant.]
However, I am more than a little concerned at the way this principle might be interpreted. There are plenty of developers for whom “technical excellence” means using the latest technologies or optimising the last possible clock cycle out of a function. There are also for many for whom a design is not good without abusing several of the GOF patterns.
I guess the context of this principle is that the development group knows good design from bad – and the force to be resolved is the desire to do bad design.