Agile is the most popular development methodology in the industry, and for good reason: software development being malleable and an iterative process, it makes perfect sense to adopt a methodology that fits its flexible nature. However, the results that some companies are getting from Agile are far from being all rainbows and unicorns. Whether the responsibility lies in companies’ implementation of Agile or in the methodology itself is up for debate and out of the scope of this article. Instead, we’ll focus on a specific aspect that can cause significant problems down the road if you’re not paying close attention: focusing too much on velocity.
Overfocusing on velocity, which includes working with rigid estimates and focusing exclusively on the development of new features, among other things, is a pretty insidious thing. Initially, it brings great results: velocity is on the rise and you’re able to ship faster and faster. Then, it slowly decreases over time, typically not in a way that’s significant enough to pay immediate attention. And after a while, it's not uncommon to hear that things take 10x longer to get done.
As a result, managers get frustrated, not understanding why simple tasks that used to take hours are now taking weeks. Deadlines aren’t met anymore, delays are getting longer and longer, and more pressure is put on the development teams to deliver, only accentuating the very reason that led to this situation. The teams are now in a vicious cycle from which it is very difficult to escape as the price to pay might be too high.
Here’s how it happens: as optimizing for velocity requires the development team to take shortcuts, code quality decreases over time and technical debt starts to build up. The clean, high productivity environment progressively becomes a maintenance nightmare. A powerful metaphor is that the development team eventually finds itself having to run through mud up to its neck. It shouldn’t therefore come as a surprise that things are taking so long to get done at this point.
In long-term projects, code quality is one of the most important metrics managers should be evaluating on a continuous basis. High quality code is indeed a key enabler for the development teams to operate at their full potential at all times. The challenge here is that software isn’t like buildings that allow people to enter and look around. Therefore, an ongoing discussion on code quality between the development teams and the management is required to plan accordingly and ensure that the codebases stay in a state that allows for high performance development.
Of all the aspects of software development, code quality is probably the one that is most often overlooked by the management, despite the fact that it has a dramatic impact on the performance of the organization. So, make sure to make code quality considerations an integral part of your development process!