12 Days of Agile Principles! Principle #9

spaghetti lights

Welcome to Day 9 of 12 Days of Agile Principles!

Continuous attention to technical excellence and good design enhances agility

Strap in it’s going to get technical.   In essence paying attention to technical design and refactoring  allows the code base to maintain some functional integrity and at the same time expand for the next set of technical functionality, or features, required to meet a customer need. 


Here is Martin Fowler explaining it eloquently in his coining of the design stamina hypothesis



If you choose to do none of these things, i.e. keep tactically plopping on new functionality to your code base without attention to good design and without employing good engineering practices consistently, such as maintaining unit tests and performing peer reviews of the code and pair programming, then you are likely building up a massive ‘technical debt’ that will need to be re-paid one day. This will be in the shape of a big re-factoring effort or even a system re-write, thus limiting your agility.


So re-factor early and often, create automated unit tests and ensure you employ some degree of peer review and pair programming to keep your code base nice. It really will enable you to build on it faster, enhancing your agility. 


Tune in again for Agile Principle #10 or join the conversation at @TheRebootCo