If I write it myself, I know the interfaces will be solid and duplication will be the minimum necessary. Ill know why i did everything and there will be comments that explain anything tricky. The next time i need to work on this particular code, Ill have a good idea of where to start and I can similarly produce high quality code that is easy to read.
The way I see many "engineers" at work use LLMs is as an interface on top of anything, copy and pasting log lines into it, task descriptions, and yanking (as someone else put it) on the slot machine lever until they have something that works. It seems faster in the moment, but there is no understanding being built, which is as important as the code being produced. Next time the engineer is asked about the code, they just ask the LLM. So what exactly does this person do then to bring value to their job?
The LLMs can produce tight code if held on a tight leash, but they encourage the slot machine model. So maybe a harness that encourages starting from interfaces/etc? Either way the long term code quality and system functionality seem to favor a strong engineering team vs LLMs and some prompters.