n o ren
Systems & Organizations

Overengineering Kills Team Velocity

A 20-person team spent 6 months on a single feature.

When teams overengineer, they prioritize perfection over progress, leading to a significant decrease in team velocity. This happens because overengineering creates a culture of fear, where team members are more focused on avoiding mistakes than on delivering value. For instance, consider a hypothetical 15-person team that spent 9 months building a highly scalable architecture for a product that ended up having only 100 users. The team's focus on scalability led to a complex system that was difficult to maintain and update, ultimately slowing down the team's ability to deliver new features. This approach not only delays the delivery of value to customers but also leads to a higher risk of project failure. The twist is that overengineering is often driven by a desire to avoid technical debt, but it ultimately creates a different kind of debt - the debt of delayed value delivery.

Overengineering prioritizes perfection over progress, leading to decreased team velocity.
A culture of fear drives overengineering, where team members focus on avoiding mistakes rather than delivering value.
Overengineering creates a different kind of debt - the debt of delayed value delivery.

If teams ignore this, they risk delivering no value to customers, leading to project cancellation and financial losses.

Additionally, overengineering can also lead to a decrease in team morale, as team members become frustrated with the slow pace of progress.

1
Open your last 5 completed projects and count how many features were delayed due to overengineering.
2
Conduct a retrospective meeting with your team to discuss the trade-offs between perfection and progress.

The concept of overengineering is related to the idea of "analysis paralysis," where teams become so focused on analyzing and perfecting their solutions that they fail to take action. This idea is also connected to the concept of "good enough," where teams aim to deliver a solution that is good enough to meet customer needs, rather than striving for perfection.

The idea of overengineering is also linked to the concept of "technical debt," where teams prioritize short-term solutions over long-term maintainability. However, overengineering can also create a different kind of technical debt, where the complexity of the system makes it difficult to update and maintain.