It really depends on th SDLC of the codebase. I've sat in the park with a pad and pen and wrote down ideas for a small-ish utility that had both a DB and some low level systems interaction. I designed all the interfaces, control flow, and user facing ui. A decade ago I was designing class diagrams with public and private methods, then coding it up. Today I can articulate it with loose words and have it come to life.
The secrete ingredient here is... Im an experienced programmer, I know what to ask and what to look out for. I know sockets and how devices work under the hood and which knobs are available for me to turn. Juniors just don't have enough experience. The question should really be "what do inspiring programmers do?"
People loke you're the minority. Most people use the brilliant strategy if "prompt and pray"
Because of AI speed is valued over everything else