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
Comments
No comments yet. Start the discussion.