Sadad Siddi · 12 March 2026 · 6 min read
Early software often has to do two jobs at once: prove value quickly, and avoid becoming a rewrite six months later. The way through that tension is not a heavier framework. It is a small set of boundaries that stay cheap to change.
Start with the workflow, not the stack
The most expensive architecture mistakes begin as misunderstood processes. Before we choose a database or a cloud service, we map the work people already do — approvals, exceptions, reports, and the moments where data is currently copied by hand. Software should compress those loops, not invent a parallel set of screens.
Keep the first cut boring on purpose
- One application boundary until a second one is forced by scale or team ownership.
- Postgres (or an equivalent relational store) before a zoo of specialist databases.
- Server-rendered pages where SEO and first load matter; client components only where interaction requires them.
- Explicit domain types instead of leaking transport shapes through the UI.
Design for the tenth change
A maintainable system is one where a new report, role, or integration does not require rewriting the core. We keep write paths obvious, isolate third-party vendors behind small adapters, and treat observability as part of the product — not a later operations project. That is how a first release stays honest as the business grows.
- architecture
- next.js
- product engineering