Next Actions
Why to-do lists stall, and the one question that unsticks them.
A to-do list fails in a specific way: you read an item, feel a small wave of resistance, and move on to an easier one. The item wasn't a task — it was a decision you hadn't made yet. “Fix the website” isn't something a human being can do; it's a stack of unmade choices wearing a checkbox.
The fix, from David Allen's Getting Things Done, is to never store decisions as tasks. Ask of every item: what is the very next physical action? Not the goal, not the project — the motion. If the honest answer is “call the vendor,” write that. Deciding happens once, at capture. After that, the list is pure execution.
The anatomy of a next action
A well-formed action has a grammar. Each part answers a question your future self would otherwise have to stop and answer.
Five tests
Run any list item against these. It only counts as a next action if it passes all five.
- 01It starts with a verb. Call, email, draft, profile, book. If the first word isn't a motion, it's a project in disguise.
- 02You can picture yourself doing it. One sitting, one place. If it needs several sessions, break it down until one doesn't.
- 03The outcome is specific. Not “work on the deck” — “draft the three intro slides.” Specific enough that someone else could do it.
- 04Nothing is blocking it. You can start right now. If it's waiting on something, the real next action is chasing the dependency.
- 05Done is obvious. You'll know the moment it's finished, without having to decide whether it counts.
Worked examples
The grammar doesn't change with the job — only the verbs and the objects do. Pick yours.
Task templates
The rewrite
| Stalls on the list | Gets done |
|---|---|
| Improve inference performance | Profile GPU memory usage for batch size 16 on Mistral 7B |
| Fix the bug | Fix CUDA timeout error in multi-GPU load balancing (issue #142) |
| Work on caching | Implement LRU eviction policy for model weight cache |
| Research deployment options | Compare H100 vs A100 cost per token for production workload |
| Update documentation | Add rate limiting examples to API docs streaming section |
Task templates
The rewrite
| Stalls on the list | Gets done |
|---|---|
| Improve conversion | A/B test signup form with 3 vs 5 input fields |
| Work on SEO | Add meta descriptions to 10 highest traffic blog posts |
| Grow social media | Post 3 technical demos on Twitter with benchmark screenshots |
| Reach out to partners | Email 5 ML frameworks about integration partnership |
| Analyze metrics | Create dashboard showing daily active users by plan tier |
Task templates
The rewrite
| Stalls on the list | Gets done |
|---|---|
| Work on roadmap | Add estimated effort and impact scores to Q2 feature list |
| Talk to users | Schedule 30-min interviews with 5 users churned last month |
| Write specs | Draft user stories for batch inference API endpoints |
| Check metrics | Compare week-over-week API error rates by endpoint |
| Research competitors | Document OpenAI and Anthropic pricing tiers in spreadsheet |
The test that catches everything: if you can't picture yourself physically doing it, it isn't a next action — it's a project wearing a task's clothes. Projects are fine. They just don't belong on the list you execute from.