lemon Lesson 4 of 7 · 4 minutes

Plan before code

Use a short plan to expose assumptions while they are still cheap to change.

For a tiny, obvious edit, a plan may be one sentence. For anything with real choices, ask the agent to inspect first and propose a short plan before it writes.

A useful plan contains decisions

It should tell you:

  • Which files or areas appear relevant.
  • What the agent intends to change.
  • How it will verify the result.
  • Which assumptions could change the shape of the solution.

A plan that merely repeats your request adds ceremony. A plan earns its keep when it exposes a fork: two reasonable interpretations, two storage choices, two trigger conditions, or a tradeoff between a local fix and a shared one.

Ask the agent to name those forks, recommend an option, and wait. It should do the investigation; you should retain the decision.

Keep approval small

Approve one bounded task, not a roadmap containing every future improvement. When the approved unit is small, you can compare the eventual diff directly to the plan that authorized it.

Skipping the plan does not skip the decisions. It hides them inside the code.

This really happened. An agent building a retry queue had to decide exactly when an item should go back in the queue. Two readings were possible. It quietly picked the one suggested by nearby code, and it picked wrong; the human had meant the other. The habit that prevents it: say the condition out loud, name the other reading, and wait for the pick. That pattern is entry AF-14 on the watch-out list.

When you are ready for a deeper version of this habit, continue to Make the agent interview you.

Try it

Make the call

Pick an option to see how the rest of the session plays out.

you

Add a “last updated” date to each page of my site.

agent

I’ve read the templates. There are two reasonable ways to get that date, and they behave differently over time.

The agent finds two reasonable approaches. What should happen next?

agent

Done. Each page now shows the date its file last changed.

you

I cleaned up formatting across the site this weekend, and now every page claims it was updated yesterday. When was this decided?

not yet

Speed here only hides the decision inside the diff, where it becomes harder to notice and more expensive to reverse. AF-14 · AF-15

agent

Option one: use the file’s last-changed time. Automatic, but any cleanup touches every date. Option two: a date you set by hand when the content really changes. A little more work, always honest. I’d pick option two. Which do you want?

you

Two. Good thing we caught that before it was buried in the code.

good call

The agent does the research and you retain the product decision. This is the useful division of labor.

agent

How would you like the dates to be sourced, stored, and displayed? I’ll wait for your design.

you

I don’t know this codebase. I was hoping you’d investigate and hand me a decision I can make in one minute.

close, but

That avoids a silent choice, but throws away the agent’s ability to investigate and recommend. Ask for a decision, not a blank page.

Take it to your tool

Try this in your agent

With the project open in your coding agent, paste:

Read the relevant files and propose a short plan before editing. Name any decision where two reasonable approaches would produce meaningfully different results. Recommend one, then wait for my approval.
Got the idea?

Mark it complete on this device. You can return or reset the course at any time.