When I write the code I know what my intention is with each line. Sure I can (and do) make mistakes, but identifying those mistakes during debugging is relatively easy during debugging because I can clearly see the discrepancy between what I intended and what I did.
With an LLM I must first understand (usually really just infer and guess) its intention, which is much more difficult.