What’s Agile? Excellence (Principle #9)
Agile promotes the technical excellence that is the means to achieving quality.
The ninth principle of Agile is:
Continuous attention to technical excellence and good design enhances agility.Principles behind the Agile Manifesto
Agile is Technical Excellence
Technical excellence. I think there’s a double meaning in that. First, your work should be technically excellent. Second, your team members should constantly improving their skills.
On the other hand, you need to beware of over-engineering. Developers are notoriously fond of overdoing it.
Agile is Good Design
And that’s where “good design” comes in. You need design that accounts for the fact that things change. You should be able to embrace and harness change. Your design shouldn’t be so overly-engineered that it’s fragile in the face of change.
Keep it simple, but flexible. In fact, simple designs are usually the most flexible.
Often, in a sincere effort to create a design that is flexible, you end up spending too much time building it in the first place.
Often, it’s best to go with a simple approach, and then change it later if needed.
After all, you can’t anticipate all the possible changes. If you try to, you’ll end up with something that is flexible but only in the ways you anticipated. Changes that you didn’t anticipate are then difficult, costly, and infeasible.
Well-intentioned over-engineering is a major source of technical debt.
Agile is Continuous
Quality, technical excellence, and good design are best addressed continually. Planning it all up front would be waterfall, not Agile. The quality movement taught us not only that you have to build quality in, but that quality requires continuous attention and effort.
Many projects rely on occasional design sprints. Don’t do it. Instead, be Agile with your design, and practice good design in each sprint.
Develop your team’s technical excellence continuously. Don’t go at such an unsustainable pace that your team doesn’t have time to improve their technical excellence during the project.
You shouldn’t have to wait for breaks between projects. Instead, reserve time for it in each sprint. Make it continuous.
Don’t let your people get rusty. Continuously sharpen the saw.
Give me six hours to chop down a tree and I will spend the first four sharpening the axe.Abraham Lincoln
Read this next: What’s Agile? Simplicity (Principle #10)