From waterfall to vibe coding and back to specs
Photo: Kiban — CC BY-SA 3.0 / Wikimedia Commons

SDLC before AI
flowchart LR
I@{ icon: "lucide:lightbulb", form: "circle", label: "Idea", pos: "b", h: 50 }
R@{ icon: "lucide:clipboard-list", form: "square", label: "Requirements", pos: "b", h: 40 }
D@{ icon: "lucide:palette", form: "square", label: "Design & Prototype", pos: "b", h: 40 }
Impl@{ icon: "lucide:code", form: "square", label: "Implementation", pos: "b", h: 40 }
AT@{ icon: "lucide:flask-conical", form: "square", label: "Automated Tests", pos: "b", h: 40 }
U@{ icon: "lucide:clipboard-check", form: "square", label: "UAT", pos: "b", h: 40 }
Dep@{ icon: "lucide:server", form: "square", label: "Deployment", pos: "b", h: 40 }
Rel@{ icon: "lucide:rocket", form: "circle", label: "Release", pos: "b", h: 50 }
I --> R --> D --> Impl --> AT --> U --> Dep --> Rel
class R,U pm
class D designer
class Impl,AT,Dep engineer
classDef pm fill:#eef0ff,color:#111928,stroke:#788cfc
classDef designer fill:#fdf2f8,color:#111928,stroke:#c084fc
classDef engineer fill:#def7ec,color:#111928,stroke:#25b51f
Prompt → generate → ship
flowchart LR
I@{ icon: "lucide:lightbulb", form: "circle", label: "Idea", pos: "b", h: 50 }
P@{ icon: "lucide:message-square", form: "square", label: "Prompt", pos: "b", h: 40 }
G@{ icon: "lucide:sparkles", form: "square", label: "Generate", pos: "b", h: 40 }
S@{ icon: "lucide:rocket", form: "circle", label: "Ship", pos: "b", h: 50 }
I --> P --> G --> S
class P human
class G ai
classDef human fill:#e0e7ff,color:#111928,stroke:#6366f1
classDef ai fill:#fef3c7,color:#111928,stroke:#f59e0b
Vibe coding = prompt → generate → ship, done by one person in real-time. No handoffs, no formal spec, no review gate.
Brilliant for solo prototypes and one-person exploration.
Hostile to teams, longevity, and anything that needs to be trusted.
Write the plan before the code
Write a detailed, reviewable implementation plan before writing code.
flowchart LR
I@{ icon: "lucide:lightbulb", form: "circle", label: "Idea", pos: "b", h: 50 }
R@{ icon: "lucide:clipboard-list", form: "square", label: "Requirements", pos: "b", h: 40 }
Gen@{ icon: "lucide:sparkles", form: "square", label: "Generate", pos: "b", h: 40 }
Proto@{ icon: "lucide:mouse-pointer-click", form: "square", label: "Interactive Prototype", pos: "b", h: 40 }
V@{ icon: "lucide:check-circle", form: "square", label: "Validate", pos: "b", h: 40 }
I --> R --> Gen --> Proto --> V
V -->|Refine| R
class R,Proto pm
class V stakeholder
class Gen ai
classDef pm fill:#eef0ff,color:#111928,stroke:#788cfc
classDef ai fill:#fef3c7,color:#111928,stroke:#f59e0b
classDef stakeholder fill:#ccfbf1,color:#111928,stroke:#14b8a6
flowchart LR
Spec@{ icon: "lucide:file-text", form: "square", label: "Spec", pos: "b", h: 40 }
Plan@{ icon: "lucide:list-checks", form: "square", label: "Plan Tickets", pos: "b", h: 40 }
Impl@{ icon: "lucide:code", form: "square", label: "Implement", pos: "b", h: 40 }
AT@{ icon: "lucide:flask-conical", form: "square", label: "Automated Tests", pos: "b", h: 40 }
U@{ icon: "lucide:clipboard-check", form: "square", label: "UAT", pos: "b", h: 40 }
Ship@{ icon: "lucide:rocket", form: "circle", label: "Ship", pos: "b", h: 50 }
Spec --> Plan --> Impl --> AT --> U --> Ship
class Spec,U pm
class Plan ai
class Impl,AT,Ship engineer
classDef pm fill:#eef0ff,color:#111928,stroke:#788cfc
classDef engineer fill:#def7ec,color:#111928,stroke:#25b51f
classDef ai fill:#fef3c7,color:#111928,stroke:#f59e0b
Spec it. Build it. Ship it.