" I have to basically get the mental model of the codebase in my head no matter what."

This is a key insight, I'm unable to get around this.

It's the thing I require to have before I let go, and I want to make sure it's easy to grasp again aka clear in the docs.

Basically - the sys architecture, the mental model for key things, even the project structure, you have to have a pretty good feel for.

We're only not letting go because it's not quite there yet. Once AI is there, someone will let go, and to keep up with everyone else, you'll let go too.

Wait a bit longer and the next thing that's let go after you "let go" is you.

No, there's something missing.

We have very good abstractions for algorithms and especially functions.

Functions are an extremely good 'contract'.

With good functional programming you can totally 'let go' of the internals.

But classes and modules are not that - we don't have the abstractions.

We can't just let go of the AI designating all sorts of mechanics - unless - they are using really common patterns.

So without ways to really describe the patterns and without common patterns to rest on ... the AI can't really get there.

Fp is orthogonal to this. Speaking of which AI can do fp. You can let it off the leash and it can execute fp.