>I've also found reviewing LLM generated code to be much more difficult and grueling than reviewing my own or another human's code.
absolute opposite here.
LLMs , for better or worse, generally stick to paradigms if they have the codebase in front of them to read.
This is rarely the case when dealing with an amateur's code.
Amateurs write functional-ish code. TDD-ish tests. If the language they're using supports it types will be spotty or inconsistent. Variable naming schemes will change with the current trend when the author wrote that snippet ; and whatever format they want to use that day will use randomized vocabulary with lots of non-speak like 'value', or 'entry' in ambiguous roles.
LLMs write gibberish all day, BUT will generally abide by style documents fairly well. Humams... don't.
These things evolve as the codebase matures, obviously, but that's because it was polished into something good. LLMs can't reason well and their logic sometimes sucks, but if the AGENTS.md says that all variables shall be cat breeds -- damnit that's what it'll do (to a fault).
but my point : real logic and reasoning problems become easier to spot when you're not correcting stupid things all day. it's essentially always about knowing how to use the model and whatever platform it's jumping from. Don't give it the keys to create the logical foundation of the code, use it to polish brass.
garbage in -> garbage out ain't going anywhere.