Writing code directly takes longer to warm up. Usually, I'd keep tens of thousands of lines in my head. In the past, I spent a lot of time designing error propagation and execution contexts. (Talented people might figure it out right away, but unfortunately I don't have that kind of talent.) So I'd have to think about things like Result<T> and how far to propagate errors—and worry about whether my approach would conflict with the existing codebase.
But these days, AI just generates code following the existing patterns of the codebase. In the past, staring at a blank screen meant going through a checklist of things to design—starting from policies and writing everything down step by step. Now, I just ask AI and it gives me a template—which is great. Then if the AI makes a mistake, I fix it manually.
Of course, I still hand-code sometimes—but only in the areas I enjoy. Most of the time, I use AI coding. Both are fun, and they complement each other in interesting ways. Doing both together is actually enjoyable.
For me, coding is either a flow state (when I have huge swaths of code to write) or deeply thinking about just a few lines (mostly to figure if I caught everything). The latter case is when I procrastinate the most, because I usually have an idea of a solution, but don’t want to do the work of actually verifying if it’s correct. Using AI then is skipping the enjoyable part (writing the code) to the unpleasant part (formulating hypothesis and verifying them).
> But these days, AI just generates code following the existing patterns of the codebase
Is this sarcasm?