03 β€” Flawless Execution

Goal: plan development so implementation is clear, fast, and maintainable β€” and dissolve knowledge gaps on the fly without stalling.

The core principle: The cost of a bug or a rewrite is cheapest at the planning moment. Ten minutes of structured breakdown saves ten hours of unclear implementation. A feature is not "started" when you open the editor β€” it is started when the plan is written.


Part 1 β€” The pre-implementation planning system

1.1 The feature one-pager (write before code β€” 30–45 min)

Every feature above ~1 day of work gets this document (in the ticket, not a side file):

Section Content Exits when…
Problem One sentence: user pain + why now Stakeholders agree it's the actual problem
Success metric The number that proves it worked (INP, conversion, usage, error rate) You can name the measurement point
Contract API shape, types, URL structure, event names Backend/QA signed off (01 influence)
UI states Empty / loading / error / offline / success / edge (per state, not one happy path) The list is exhaustive enough to hand QA
Behavior spec Interactions as Given/When/Then (3–8 scenarios) A QA engineer could test from it without asking you
Rollout Flag name, canary plan, rollback trigger It fits the release discipline (02)

1.2 Task breakdown β€” the 4-hour rule

Break the feature into tasks with a hard rule: no task larger than 4 hours of focused work (ideally 1–2). If a task can't be broken that small, you don't understand it yet β€” see Part 2.

Each task carries:

Dependency graph, not a list: order tasks so each commit leaves the app working (vertical slices: thin end-to-end first, then thicken). Never order as "all backend β†’ all UI β†’ all tests" β€” that's how weeks go dark with nothing shippable (01's visibility killer).

1.3 The implementation loop (per task)

  1. Read the DoD aloud β€” if you can't say what "done" looks like, you're not ready to code.
  2. Write the test names first (the cases from 1.2) β€” test names are the truest spec.
  3. Implement against the tests (TDD where the logic is non-trivial; for UI, write the state/behavior tests around the component).
  4. Run the pre-PR gate (04) before opening the PR.
  5. Self-review the diff as a stranger (04's fresh-eyes pass) before requesting review.

1.4 Estimation that survives contact


Part 2 β€” Killing knowledge gaps on the fly

2.1 The 30-minute rule (structured unblocking)

When stuck, run this ladder β€” never skip a rung, never stay stuck:

  1. 0–5 min β€” Reformulate the question. Write the exact error/symptom + what you expected. Half of "unknowns" dissolve when precisely stated (this is the debugging discipline of 04, applied early).
  2. 5–10 min β€” Official docs first. Framework docs (Next.js docs for App Router/caching, React docs, TS handbook), not blog posts. Docs answer versions; blogs answer vibes.
  3. 10–15 min β€” Targeted search. Search the exact error string (quotes), filter by version, check the GitHub issue tracker for your framework version β€” a closed issue with a fix is the fastest answer on earth.
  4. 15–25 min β€” Reproduce minimally. Strip the problem to the smallest repro (a sandbox or a 30-line file). If you can't reproduce small, you don't know what's failing.
  5. 25–30 min β€” Escalate WITH evidence. Ask the team/backend with: what I tried, the minimal repro, and the specific question. A colleague answers a good question in 2 minutes; a vague one takes an hour of back-and-forth.

The rule: if you've spent 30 minutes without narrowing the problem, you are spinning β€” escalate. Spinning is not diligence; narrowing is.

2.2 The AI pair-debugging protocol (Claude Code / Copilot)

AI is exceptional at narrowing, mediocre at deciding:

2.3 The knowledge-gap inventory (prevention)


Part 3 β€” The daily execution cadence


βœ… The execution checklist (per feature)

β†’ Next: 04 β€” QA & Reliability Β· Back: 02 β€” Architectural Mastery

← Architectural Mastery