DEV Community

Cover image for features vs. decisions
Swapnil Varade
Swapnil Varade

Posted on

features vs. decisions

Most software doesn't become complicated because it has too many features.

It becomes complicated because it has too many decisions that can no longer be changed easily.

Early in a product, changing a database table is easy.

Changing an API contract is easy.

Renaming a field is easy.

Deleting a feature is easy.

Then users arrive.

That database column contains their data.

That API is integrated into their application.

That field exists in hundreds of records.

That “temporary” behavior is now part of someone's workflow.

The cost of a decision changes dramatically:

Before users:
“Let's refactor it.”

After users:
“How do we migrate this without breaking anything?”

That's why the period before launch is not only about shipping faster.

Some things deserve speed.

Some things deserve another day of thinking.

Especially:

→ data models
→ public APIs
→ authentication boundaries
→ permissions
→ multi-tenancy
→ storage contracts
→ anything customers will build on top of

You don't need a perfect architecture before launch.

But you should know which decisions are cheap to change later and which ones become expensive the moment the first customer depends on them.

Maybe technical debt isn't the biggest danger.

Maybe irreversible debt is.

ProductEngineering #SoftwareArchitecture #SaaS #SoftwareDevelopment #BuildInPublic #Engineering

Top comments (0)