The 3 mindsets required to consistently improve software engineering team velocity

As a VP of Engineering, I work with 30+ software engineering teams, and from time to time, we work in troubleshooting their velocity problems. I've recently written about why most attempts to improve velocity consistently fail. Here I try to summarize the three mindsets that help teams to work in a way that optimizes for speed:

Finish stuff before starting new stuff

If you want to optimize for speed, you need to finish what you start before switching to something else. Teams optimizing for velocity should start the day looking at what is closer to completion.

What makes it challenging: working in big batches, switching priorities too often, interruptions due to quality issues

Global optimization instead of local optimization

Teams need to optimize the goals of their team rather than each member's outputs. The entire team wins when a team member completes a task and loses when they cannot complete it.

What makes it challenging: a culture that rewards individual contributions vs. team contributions, knowledge silos or gaps among team members, a team of specialists.

Generalists vs. Specialists

We need people who can be flexible in the types of tasks they perform. If our team is composed of specialists, they won't have the skills to jump around and tackle the pending work that's causing a bottleneck.

What makes it challenging: people too focused on their specialty, people not willing to do other tasks, lack of cross-training

A team committed to improving velocity will need to embrace these mindsets to constantly adapt to the natural variability of bottlenecks in the development process. Achieving these mindsets might involve a radical transformation in how teams or organizations operate.


Follow me on Twitter for more articles on troubleshooting software engineering teams' problems.

Matias Lespiau

Matias Lespiau

Madrid, Spain