If you’ve ever been challenged to explain why you should consider adopting agile development, one good reason is that agile development – executed properly – focuses on all aspects of software development, from delivering value to technical excellence. This includes performing work that too often gets short-changed under intense schedule pressure: refactoring.
(This is an admittedly simple example, but it illustrates how focusing on feature delivery at the expense of looking at the big picture can hurt you in the long run.)
Let’s say that you are in a race. Both you and a competitor are vying to dominate a market with similar applications, and you are both starting from scratch. You are an agile development shop and your competitor isn’t; for them, cranking out the features is everything.
The picture below shows that your competitor establishes an early lead…
Your features take longer to deliver because you are paying attention to the complete picture. For you, quality is more than a defect count; it is the state of the software design and craftsmanship. You’re in this for the long haul, so you will be slower on a feature-by-feature basis because you are taking the time to refactor the code to keep it clean and manageable. And that is your secret weapon.
As time marches on, chinks in your competitor’s armor begin to show. Their code base is becoming unwieldy, and it is taking them longer and longer to produce features. You, on the other hand, are maintaining a regular cadence:
You are catching up and overtaking your competitor. But it’s still a close race. And then comes the big day. Your competitor hits the wall. They need to stop and re-write their system because they can’t add another feature. They’ve created a mess while you’ve been able to reduce the time is takes to deliver features because you’ve been steadily learning and improving. You’ve been eliminating overhead and working in new ways that accelerate the flow of value to your customers:
Suddenly, or so it appears, you’re able to streak far ahead of your competition, and you are even stealing customers away from your competition because the quality of your software is superior. Not a bad position to be in!
Let’s go back in time for a moment. What if your competition – recognizing that you are onto a good thing – introduces agile development during their product life cycle? Can they begin competing with you head-to-head?
No, they can’t magically get onto the same track that you are… Not yet. Their objective is to avoid hitting the wall. They have some debt to pay down first, like refactoring/redesigning the critical pieces of their code base at the very least. The bad news for them is that despite the length of time and pain they are experiencing in delivering features now, they need to spend even more time delivering features – if they want to prevent a worse experience from happening later.
Agile development isn’t a silver bullet, but it does focus your attention on the full picture. It’s a disciplined approach to delivering software designed to keep you and your software viable in the long term.