And doing incremental dev, so once a feature is done you can mostly ignore it.

If there is one good thing that the generative AI tools have shown beyond any doubt it's that the classic "good programming" practices are still useful and effective. Self-documenting code. Modular design. Clearly defined architecture. Incremental development. Coding standards. Automated tests. Automated everything.

If there's a second thing the generative AI tools have shown beyond any doubt it's that many of the more modern (relatively speaking) "best practices" that have always been over-hyped and questionably-evidenced really do tend to produce worse results. LLMs take these methods to their logical conclusions and show us the end result much sooner. You can't just iterate your way to a solution when you don't even know what problem you're trying to solve. If you don't have a clear spec then you don't know what a correct product looks like. You need to invest time in reviewing code properly. If you don't keep the big picture in mind then the big picture becomes a mess.

Maybe one day the LLMs will leave me out of a job but at least I'll feel validated first!

> If there is one good thing that the generative AI tools have shown beyond any doubt it's that the classic "good programming" practices are still useful and effective

If you apply those practice, then quickly you find yourself using the agent as merely a writing boost. And there’s an inflexion point when coding is no longer a bottleneck. Instead, you spend more time on thinking about design. You can see it in open source projects where most PRs are just a few line diffs. The bottleneck is knowledge and problem solving talent.

If you apply those practice, then quickly you find yourself using the agent as merely a writing boost.

I don't know what that means but I have seen no evidence so far that if you don't apply those practices then your code will be anything other than unmanageable spaghetti if you leave AI to maintain it for long.

Coding has never been the bottleneck for good developers. Part of the reason for that is that good developers know how to isolate different aspects of a system and so keep each individual aspect relatively simple and self-contained. Another part is that good developers were already standardising and automating a lot of the grunt work. These traits are also advantageous for keeping generative AI on the right track and keeping its proposed changes manageable.

Yeah and that design and insight is the tiring part and while fun a bit less satisfying in the way that writing a nice bit of boiler plate or populating the struct members for your data type can be. One thing is you can work on design and insight while taking a good walk around the block, which is nice.

I spend that time mostly on the sofa, or in front of a whiteboard. Or sometimes a live brainstorming. Typing code is actually relaxing. What looks like relaxing is actually hard thinking.