Method

Do the thinking before the code

The change that made the biggest difference, and the one I resisted longest.

What I do now

Nothing gets built until there is a written understanding of the product and a first slice chosen. The document comes out of a conversation rather than a template.

I talk, usually into voice-to-text, usually badly, changing my mind halfway through a sentence. Then I ask for the mess to be sorted into decisions, ideas, and things nobody has answered yet. Transcription errors are fine to fix quietly. Anything that would change the product gets raised with me first.

The most useful prompt I have

What is missing?

Then the follow-ups. What can you not answer yet. What would you have to guess to start. What have I not told you. The answers are consistently better than anything I thought to ask directly, and it is the fastest way to discover that something I considered settled was never actually decided.

After a round of this I want a plain summary of what is now decided and what is still open. If the summary sounds more confident than the conversation felt, something has been quietly promoted from idea to decision and needs putting back.

Unfamiliar decisions

Plenty of what comes up sits outside what I know well. For those I ask for a recommendation with the consequences spelt out, plus a note of what stays deferred. Then I approve it or change it.

Approving takes a minute. Finding out weeks later that nobody chose takes considerably longer.

Why this matters more than it sounds

I made three attempts at one app before this order clicked, and all three failed the same way. I started at the interface, got something that looked close, then spent every later change fighting the one before it.

The foundations were never wrong on purpose. They were just never decided, and nothing in the loop stops on an undecided question unless you put something there.