Ubin.io All Articles
Engineering Culture

Velocity Is Not a Strategy: Escaping the Feature Treadmill

By Ubin.io Engineering Culture
Velocity Is Not a Strategy: Escaping the Feature Treadmill

There's a particular kind of exhaustion that hits engineering teams around month eighteen of a product's life. Everyone's been shipping. Sprint after sprint, the burndown charts look clean, the release notes keep getting longer, and the demo videos keep getting more elaborate. And yet — something feels off. Users aren't lighting up. Retention is flat. The product roadmap has ballooned into something nobody can explain without a slide deck.

Welcome to the feature treadmill. You're running hard. You're not going anywhere meaningful.

When Output Becomes the Metric

Here's how it usually starts. A team — often a good one, with smart people — gets pressure to show progress. Stakeholders want to see movement. So the team starts optimizing for the thing they can measure: features shipped per sprint, story points closed, tickets resolved. These are visible, countable, and easy to put in a report.

The problem is that none of those numbers tell you whether any of it mattered.

Feature volume is a proxy metric. It's a stand-in for the thing everyone actually wants, which is user value and business impact. But proxies are seductive because they're measurable, and over time teams start treating the proxy like the real thing. Shipping becomes the goal. The treadmill speeds up.

Before long you've got a product with forty-seven features, six of which people actually use, and a backlog so deep that the original rationale for half the items in it has been forgotten entirely.

The Hidden Cost Nobody's Tracking

Every feature you ship is a liability as much as it is an asset. It needs to be maintained. It interacts with every other feature. It has to be documented, tested, supported, and accounted for when you're planning the next thing. The more features you have, the more expensive every subsequent decision becomes.

This is the compounding cost that feature factories almost never account for. The team celebrates the launch, marks the ticket done, and moves on — leaving behind a quiet but growing weight that slows everything else down.

Product surface area is real. Codebase complexity is real. And both of them scale with every feature you ship, regardless of whether that feature earns its place.

Some of the fastest-growing developer tools in the US market right now are not the ones with the longest feature lists. They're the ones that do a small number of things exceptionally well and make it obvious what those things are. Simplicity is a product strategy. Restraint is a competitive advantage.

The Prioritization Problem

So why do teams keep falling into this pattern? Usually it comes down to how prioritization actually works in practice.

In theory, teams prioritize based on user research, impact estimates, and strategic alignment. In practice, prioritization often comes down to whoever asked loudest, what the sales team promised a customer, or what's easiest to scope for the upcoming sprint. These aren't inherently bad inputs, but they're not a coherent strategy either.

Metrics-driven prioritization sounds more rigorous, but it has its own failure modes. Optimizing for activation rates can lead you to build onboarding flows that game the metric without actually improving the user experience. Optimizing for feature requests means building for the loudest users, who are rarely the most representative ones.

A more honest approach starts with a harder question: what problem are we actually trying to solve, and how will we know if we've solved it? That question doesn't always have a clean answer, and that discomfort is usually a sign you're asking the right thing.

What a Healthier Model Looks Like

Teams that escape the feature treadmill tend to share a few habits.

First, they treat the backlog like a garden, not a queue. Items that have been sitting without clear rationale get pruned. The backlog is not a commitment — it's a hypothesis list, and hypotheses expire.

Second, they invest meaningfully in the work that doesn't show up in release notes. Refactoring, performance improvements, developer experience, documentation — this is the foundational work that determines how fast you can actually move six months from now. Teams that skip it consistently find themselves slowing down right when they need to accelerate.

Third, they measure outcomes alongside outputs. Not instead of — alongside. Story points still matter for planning. But they're paired with questions like: did users actually engage with this? Did it move the metric we thought it would? The answer to those questions should influence what gets prioritized next.

Finally, they get comfortable saying no. This is the hardest one, because saying no to a feature request feels like saying no to progress. But every yes is a commitment of engineering time, maintenance overhead, and product complexity. The best teams treat that commitment seriously.

Shipping Less, Better

None of this means slowing down. The goal isn't to ship fewer features as an end in itself — it's to make sure the things you do ship actually earn their place in the product.

The teams that figure this out tend to find something counterintuitive: when you stop optimizing purely for output, you often end up with more meaningful output. Engineers spend less time building things that get ignored and more time refining things that matter. The codebase stays healthier. The product gets clearer. Users actually notice the difference.

Velocity is a useful measure. It's just a terrible goal. Build faster by being more deliberate about what you build. That's not a productivity hack — it's a product philosophy.