A deep-dive into each phase of the PUDO cycle: what happens, who does what, and when to move on.
┌──────────┐
│ PLAN │ Define what & why
└────┬─────┘
│
▼
┌──────────────┐
│ UNDERSTAND │ Research where & how
└──────┬───────┘
│
▼
┌──────────┐
│ DEVELOP │ Build it
└────┬─────┘
│
▼
┌───────────┐
│ OPTIMIZE │ Make it better
└─────┬─────┘
│
└──────→ Back to PLAN (next task)
Goal: Define what you’re building and why it matters.
| Activity | Description |
|---|---|
| Scope definition | What’s in scope? What’s explicitly out of scope? |
| Success criteria | How will you know it’s done? What does “good” look like? |
| Constraints | Time, tech stack, backward compatibility, performance budgets |
| Risk identification | What could go wrong? What are the unknowns? |
| Implementation plan | High-level approach — components, data flow, key decisions |
Goal: Build a confident mental model of the existing system.
| Activity | Description |
|---|---|
| Codebase analysis | Read and map the relevant code. Understand the architecture. |
| Dependency audit | What libraries, APIs, and services does this code touch? |
| Pattern recognition | What conventions does this codebase follow? Match them. |
| Risk assessment | Where are the fragile spots? What’s likely to break? |
| Knowledge gaps | What do you need to learn before building? |
Goal: Write the code, make it work, prove it with tests.
| Activity | Description |
|---|---|
| Task breakdown | Break the plan into a checklist of concrete sub-tasks |
| Implementation | Write code, following the plan and matching existing patterns |
| Testing | Write tests alongside the code, not after |
| Progress tracking | Update the task checklist as you go |
| Deviation management | When reality diverges from the plan, decide: adapt or re-plan |
Goal: Elevate the implementation from “works” to “good.”
| Activity | Description |
|---|---|
| Code review | Review for readability, consistency, and maintainability |
| Performance check | Profile, benchmark, and optimize bottlenecks |
| Refactoring | Clean up any rushed code, reduce duplication, improve naming |
| Documentation | Write/update docs, add comments for non-obvious decisions |
| Walkthrough | Create a summary of what changed and why |
PUDO is a cycle, not a straight line. Here’s when to loop back:
| You’re In | Signal | Go Back To |
|---|---|---|
| Understand | “The scope was wrong” | Plan |
| Develop | “I don’t understand this part of the code” | Understand |
| Develop | “The approach isn’t feasible” | Plan |
| Optimize | “This needs a fundamental rethink” | Plan |
| Optimize | “I found a bug in an area I don’t understand” | Understand |
The key rule: Going back is not failure. Going back is the system working as designed. It’s far cheaper to revisit a phase than to ship a broken feature.
Run through the phases quickly, even mentally. A brief Plan (“I need to fix this button alignment”) and a quick Understand (“let me check the CSS”) is enough.
Full written cycle. Plan with an implementation doc, Understand by analyzing relevant code, Develop with a task checklist, Optimize with a self-review.
Nested PUDO cycles. The top-level PUDO plans the overall feature, then each component gets its own mini-PUDO cycle.
Feature PUDO (top-level)
├── Component A PUDO
│ ├── Plan → Understand → Develop → Optimize
├── Component B PUDO
│ ├── Plan → Understand → Develop → Optimize
└── Integration PUDO
├── Plan → Understand → Develop → Optimize