All writing
2 min read

The Conception Phase, or: Why a Dumpster Fire Is Not a Feature

Plan the backend now, or fight the dumpster fire at 3am. When the conception phase earns its keep, and when to skip it.

I used to think planning a backend was the most boring part of the job. Then I shipped enough unplanned ones to learn the truth, which fits on a sticky note: if you think you don't have time for a conception phase, you really don't have time for the dumpster fire that happens without one.

So when does the planning actually earn its keep?

  PLAN IT                          SKIP IT (mostly)
  ---------------------------      ---------------------------
  complex / event-driven           small, self-contained service
  distributed teams, many APIs     known stack, known patterns
  brand-new unproven tech          veteran team that's done it
  hard latency / high volume       tight agile loop, fast feedback
  picky stakeholders + regulators  (the Kanban board is the plan)

Left column, plan. Right column, stop reading and go build. Forcing a heavyweight design doc onto a three-day microservice is its own kind of malpractice.

When you do plan, you're really chasing five ghosts. Scalability - does your cache survive a thundering herd, or only a quiet Tuesday? Data integrity - consistency across distributed stores before corruption spreads. Security, plus the unglamorous siblings nobody loves: disaster recovery, backups, monitoring. Deployment - a half-baked Kubernetes config is just a planning gap biting you three months late. And honest tradeoffs, which is where dreams meet budget: elegant versus shipped this quarter, the shiny new database versus the 2am pages it bills you later.

Let me make it concrete with a scar. Early in my career I joined a startup whose VP of R&D announced "we move fast and break things," then left for a month-long "strategy retreat" in Bali. I inherited a codebase best described as haunted. No plan, no docs, no comments, just race conditions all the way down. I spent two weeks and an unsafe volume of energy drinks wrestling a deadlock in the withdrawal module, and somewhere around 3am I was fairly sure the billing invoice whispered "abandon all hope." That wasn't bad code. That was a haunting. And all of it because nobody spent two days thinking before they spent six months building.

None of this is a license to gold-plate everything. Premature optimization is a sin, and a design doc nobody reads is theater with extra steps. The actual skill is knowing which projects deserve the thinking and which deserve to ship today.

The bottom line

A little pain up front beats a lot of pain at 3am with the production server down and execs in your DMs. Plan the complex stuff, skip the simple stuff, and be honest in the risk register about what can actually blow up. Two days of thinking now, or six months of regret later. Pick.