All founder notes

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

All founder notes · Technical writing