Remix.run Logo
▲ ModernMech 4 hours ago

Your code is only as good as what you can prove. Understanding the code is not the goal, it’s only important insofar as it helps you evolve the codebase predictably and without bugs or regressions, and understanding is not easily measurable or transferable.

Moreover, when your codebase is hundreds of thousands to millions LOC, I question how much you can ever truly understand it at the level you’re saying.

▲layer8 4 hours ago | parent [-]

Regarding the last part, the strategy is to not have everything depend on everything, to instead modularize with succinct interfaces, so that you can reason locally. Of course beyond a certain project size, there is no single person who understands every part in detail. But for every part you can have someone who understands it, and can reason about it in terms of the interface contracts with the other parts. It’s also not essential that every detail is still understood at every point in time, as long as it’s sufficiently documented. What is essential is that for every part someone did reason through it with the necessary rigor at some point.

▲ModernMech 3 hours ago | parent [-]

> to instead modularize with succinct interfaces, so that you can reason locally

Okay but how does AI change any of that? You can still do that with AI.

> as long as it’s sufficiently documented.

AI definitely helps with that.

> What is essential is that for every part someone did reason through it with the necessary rigor at some point.

Why is that essential though? What if the person who reasoned about it dies or leaves? Moreover, why is it imperative the reasoning happens at the source code level?

▲discreteevent 3 hours ago | parent [-]

>> to instead modularize with succinct interfaces, so that you can reason locally

> Okay but how does AI change any of that? You can still do that with AI

With your own code you reasoned about it which contributed to its stability. This meant that you could treat it like a black box. And if the abstraction leaked or was unstable, the code was still fresh enough in your head that you could evolve it and still preserve its invariants etc.

With unreviewed AI gen nobody ever understood or reasoned about the code, including the AI.

▲ModernMech 2 hours ago | parent [-]

> With your own code you reasoned about it which contributed to its stability.

Okay but to what extent? People say this but there's no way to measure it really. Did you live through the 90s? People reasoned through all that code and it was very often quite unstable. I'm sure everyone involved with Windows ME reasoned about it quite a lot, probably elements of it locally were very sound, yet in totality it was an unstable mess.

What fixed that situation wasn't that engineers today are reasoning better than engineers in the 90s, but IMO better tooling. Which brings me back to: your codebase is only as good as what it can prove. If there's any question, I just show you the proof rather than appealing to my reasoning being sound.

> With unreviewed AI gen nobody ever understood or reasoned about the code, including the AI.

And? You haven't established reasoning about it is actually necessary and it certainly isn't sufficient.