I respected Terence Tao but since listening to his "Mathematics in the age of AI" talk, I've become a fan. I have had nobody else explain so succinctly what is the purpose of Mathematical research, why it matters, and why it is so important to preserve the ways we do math. Even more importantly, I feel it resonates so well with every other field AI is taking over.

I also loved this talk (went through printed version: https://news.ycombinator.com/item?id=49362728)

Tao talks how this has become even more valuable in maths: understanding, verification, exposition, community judgment, synthesis and canonicalization given how proof generation has become easy (which has historically been considered most valuable). So I just mapped this to coding also in my expereience and broader industry sentiment. Code generation was always the hardest and most valuable part. Now that is the cheapest part with claude code and other AI tools. But taking the candidate output (code) and building harness around it like verification, exposition, human understandability have become all the more important. Not just generate code, but generate code that other engineers can confidently modify and extend. Or even better - generate reusable canonical abstractions that improve codebase.

Exactly my thoughts. There are people out there claiming code itself has become disposable, and maintenance and refactoring are cheap now. Which escapes the fact that a. all these are heavily subsidized now and unsustainable in the long run and b. when it comes to critical software and code, it's not really disposable and maintaining a vibe-coded codebase is going to be more costly.

Even before LLMs were a thing, it wasn't this way: rapidly generating code was not the most valuable skill. As you say, it's much more important that the code can be confidently modified and extended, and reused, not just now, but then. In a mature product, the initial writing of the code will be the least of the work; maintenance is much more expensive. Ideally, design decisions should appear only once in the code when this can be achieved, because then there's one place to fix or one place to modify, instead of dependencies on some detail that appear all over the code. It's too easy with auto-generated code to wind up with redundancy and code duplication, resulting in a brittle mess.

[flagged]