Product
How We Ship Production Software in Under 2 Weeks
We regularly ship small production features in under two weeks. It’s not magic — it’s a combination of stack choices, guardrails, and ruthless scope control.
The stack
- Next.js for fast iteration and built-in routes - TypeScript to catch class of errors early - Tailwind for consistent UI without design friction - Vercel for deployments with atomic previews and instant rollbacks - Postgres (managed) for reliable storage
The process
Day 0: kickoff and constraints. We write a one-paragraph goal and three acceptance criteria. If it’s not testable in two weeks, we cut scope.
Day 1–2: skeleton and critical paths. We scaffold routes, types, and the minimum UI. No polish.
Day 3–5: core features. Connect the database, wire API routes, and add authentication. Build the happy path first, then one fallback.
Day 6–8: validation and tests. Write end-to-end tests, add simple unit tests for critical logic, and run a shadow deployment.
Day 9–10: polish, performance, and deploy. Fix obvious UX issues, tune queries, and deploy with canary traffic if available.
Delivery tactics
- Decouple features: prefer small independent pieces that can be deployed behind a feature flag. - Use previews aggressively: every PR gets a Vercel preview link and we demo in slack. - Prioritize observability: metrics, traces, and error alerts go live with the release. - Keep the team small: 1 product lead, 1 designer (shared across projects), 2 engineers.
Cultural rules
- No bike-shedding. If design decisions slow you, pick something reasonable and move on. - Defaults matter: we have design tokens, standard layouts, and shared components to avoid reinventing CSS. - Fail fast, revert faster: every release must be revertable in one click.
Examples
We shipped a quoting flow in ten days: API, UI, contract PDF generation, and payment hook. It moved from brief to deployed because we scoped to core acceptance criteria: collect customer data, calculate price, and persist the quote. We delayed email receipts and webhooks for later sprints.
Final thought
Speed without quality is chaos. Two-week delivery requires discipline: the right stack, clear acceptance criteria, tiny teams, and infrastructure that supports previews and rollbacks. When you control scope and instrument outcomes, fast shipping becomes a sustainable habit rather than a sprint-induced crisis.