features vs. decisions
DEV Community

features vs. decisions

Complexity Comes from 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.

When Users Arrive

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?”

Worth Another Day of Thinking

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

Irreversible Debt

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

Read on DEV Community ↗ ← Back to News

Comments

No comments yet. Start the discussion.