by Benjamin Frech, Senior Software Engineer
Increasing a team’s productivity is a ubiquitous goal. But, how do you achieve that goal?
To many, it may be tempting to use velocity as a measure of productivity, but the value of a story point can vary significantly over time. Once you get past counterproductive answers like, “let’s inflate all our story points by 50%,” you’re left with options that can actually increase your team’s productivity or, at least, facilitate collaboration between team members.
In my experience, the top two methods of truly increasing productivity involve creating a comfortable work environment, and addressing technical debt and developer concerns.
Let’s address environment first.
The physical comfort of developers is one of the most frequent complaints. Developers who are provided more space, privacy, and a quiet environment have shown to be more productive. It makes logical sense, and numerous studies have confirmed that minimizing noise and distractions while allowing workers privacy and the ability to customize their environment has a dramatic positive effect on productivity. This article from The New Yorker illustrates well the challenges with open-plan office layouts.
Yet, Agile methodologies emphasize collaboration, so developers also require common areas for stand-ups and group programming when the situation calls for it. Still, minimizing uninterrupted stretches of time are important. To do so, minimizing meetings and other interruptions is key. Also, providing developers a way to indicate they are busy (i.e. wearing headphones or “do not disturb” signs), and ensuring everyone honors that indicator by not interrupting is crucial to increasing productivity.
Technical Debt is another area that can yield tangible results in improving a team’s productivity.
A team assumes technical debt when they either intentionally or inadvertently engineer something that later hinders production. Often this is a conscious decision by a programmer to cut corners in order to ship the product on schedule. Sometimes, on a long-running project, requirements change or dependencies are updated, which results in a product that no longer matches best practices.
These accumulated shortcuts or errors in design and implementation can be a major time sink for programmers. Lack of documentation or inconsistent programming standards can cause even trivial tasks to require time-consuming research into the existing code to implement. This is particularly true in legacy systems. It’s worth noting that while automated testing is an accepted part of the process of addressing technical debt, moving a legacy project to test-driven development alone won’t increase productivity. Numerous studies (such as these) show that moving from manual testing to a test-driven development process will slow development a bit in exchange for a much lower defect rate.
There are a number of techniques for improving productivity in an agile team, although not all of them are specific to agile. Providing a comfortable, distraction-free environment for developers is usually the easiest to implement and yields the fastest dividend. Removing technical impediments usually requires much more discipline, but it can also have a huge impact on improving the productivity of an agile team.