In almost every development team, there’s an invisible metric that drives behavior: lines shipped. Not official lines of code, not commits, not tickets closed, but the feeling that “we built a lot this sprint.”
It feels productive. It looks productive. It’s often the opposite.
The Trap of Visible Output
Developers love building. Product managers love roadmaps. Stakeholders love demos. So we optimize for visible output: new features, new screens, new integrations.
But here’s the uncomfortable truth:
Every line of code is a liability the moment it’s written.
Code must be:
- Maintained
- Understood
- Refactored
- Tested
- Secured
- Migrated
The more you ship, the more you owe your future self.
Yet most teams don’t measure maintenance cost. They measure feature velocity.
The Hidden Cost Curve
Early-stage products move fast because:
- The codebase is small
- Decisions are fresh in memory
- Architecture is flexible
- Technical debt hasn’t compounded
Over time:
- Edge cases multiply
- “Temporary” fixes fossilize
- Knowledge silos form
- Refactors become risky
Velocity drops. Meetings increase. Fear grows. And the solution often becomes: “Let’s move faster.” Which makes it worse.
Seniority Isn’t About Writing Code
Junior developers optimize for implementation.
Mid-level developers optimize for patterns.
Senior developers optimize for deletion.
The best engineers I’ve worked with didn’t impress me with how much they built — they impressed me with how much they simplified.
They:
- Removed abstractions that added no value
- Deleted dead features
- Replaced clever solutions with boring ones
- Chose stability over novelty
Boring systems scale. Clever systems collapse.
The Real Productivity Metric
What if instead of asking:
“How much did we ship?”
We asked:
“How much complexity did we remove?”
Imagine a sprint demo where the highlight is:
- Reduced service count from 12 to 8
- Deleted 3,000 lines of legacy code
- Simplified auth logic
- Removed one unnecessary configuration layer
That’s long-term velocity.
Practical Takeaways
If you’re part of a dev team, try this:
- Add a “deletion goal” each sprint.
- Refactor one painful area before adding new features.
- Document trade-offs, not just implementations.
- Reward simplicity in code reviews.
- Measure onboarding time for new engineers — it reflects system health.
Complexity compounds. So does clarity.
The best systems aren’t the ones that can do everything.
They’re the ones that are easy to change.
And in software, the ability to change is the only real competitive advantage.

Top comments (0)