January 27, 2026
Complexity always sends the invoice later
Every queue, service, abstraction, integration, and dashboard feels reasonable when you add it. The cost appears later, usually when you are alone maintaining it.
The reasonable-addition trap
“This microservice will only handle webhooks.” “We might need a queue someday.” “Let’s add a second database for analytics.” Each decision has a polite rationale. None of them pay rent on day one.
Solo founders and tiny teams pay the invoice in attention: deploy pipelines, failure modes, and docs that never got written.
Where the cost shows up
When the integration breaks and you forgot which key rotates where. When the queue backs up and you have no runbook. When you cannot answer “what happens if this step fails?” without reading code you wrote six months ago.
The invoice is always due; interest accrues while you ship the next feature.
Rules for saying no
If you cannot name the owner, defer it. If you cannot delete it in one afternoon, simplify it. If it does not change a decision or a customer outcome this quarter, it waits.
Prefer buying boring managed services over owning exotic infrastructure.
How to apply it
- Maintain a “complexity ledger”: what you added, why, and what it costs monthly in mindshare.
- Default to one deployable until metrics force a split.
- Delete a chart, service, or integration every quarter.
- Ask: “Would I still add this if I were on vacation next week?”