SRE was always about understanding; understanding data flow, understanding bottlenecks, understanding logs, understanding application architecture, understanding end user functionality, understanding break points, SLIs, SLOs. Understanding how to mitigate, gracefully deteriorate, restart, restore, recreate, scale, etc.

There is no understanding with AI-generated applications, full stop.

For the last 10 years, I don't think I met a lot of senior architects or dev who could understand all that.

Companies loves to have "specialized experts" who skilled up in one afternoon in their field. It might be different in startup, but in consulting world in relatively large enterprises, it's just a fucking joke.

Really? I think that in most orgs up to medium size, you expect senior and especially staff engineers to have that scope

They wouldn't be able to draw it all onto a whiteboard from memory. But give them a half day and they will have mapped out the data flow

I've seen these people rapidly disappear in the last 5 years at a big tech co. Old UNIX heads that had experience back to the 80s being made redundant. Who is replacing them? Mostly offshore 20 something year olds on a fraction of the salary a tenured person had, being told to just follow runbooks, pasting the runbooks into Claude or ChatGPT. These people can't explain anything, didn't really cut their teeth on doing things out of curiosity, and if asked a question, will just be playing copy-paste-back-and-forth with a LLM.

The bigger the org, the more specialized they want you to be.

idk, I develop a lot of connected systems: Pis, Macs, lights, Google speakers, custom ESP32 boards. Understanding the capabilities and communication methods to pool them together is still very much part of what I do. If you're thinking one prompt -> production via AI, sure. But I don't think we are anywhere near that because there are so many moving pieces which still require human sign off: legal, design, QA, etc. To me, it just shift ups the level of understanding rather than replaces it.

> To me, it just shift ups the level of understanding rather than replaces it.

This just sounds like convoluted way of saying you understanding much less than you would otherwise.

Seems like an odd criticism given that programming has always been about abstraction. But sure, I don’t know tree-level details (functions) but I also wasn’t doing leaf-level (bits) understanding because that became obsolete. Now I’m on forest level and expanding to eco systems.

You can always know more but at a certain point, after you’ve built enough validation and safe guards, you find it’s not the best use of your time and the things you can make beyond your specialization is quite remarkable.

Also, I think the toothpaste isn’t going back in the tube with this

AI is not an abstraction.

Thank you!

The internet is full of people doing the “AI = compiler” comparison and it’s just wrong.

Maybe on a really small scale they can resemble a compiler because the number of possible outcomes is so small that it’s nearly deterministic.

But at any larger scale AI will not be deterministic anymore and at that point it will be relevant what the resulting code looks like. Because it can and will be slightly or very much off from your instruction.

If all inputs match a spec then why does it matter that the LLM is non-deterministic? I agree we might not be there yet, but the timelines for progress is shrinking and we are more likely to get there in a matter of months than not.

> You can always know more

But the direction is reversed.

I figure out how to do something, wrap it in a bunch of functions, and then kinda just use it. If it just keeps doing what it should, I may kinda forget how it works. But I don't forget that I made it, and that I understood it, that will never not have happened. So in a way, I am able to "forget" some things because I still know I knew them. And I trust that programmers who write programs that I dream about writing also know what they're doing.

With LLM, you accumulate stuff with from knows where, ultimately fished from a vast ocean named question mark, by whatever turns of phrase you and involved agents happened to use, and what the temperature was at that moment. Which is of course where all the harnessing and looping and running code on the output comes in, but still, ultimately you have no idea. Which is fine for prototypes, but long term? Good luck.

I can look at mystery code in the work app from five years ago, and know that I wrote it without any memory of doing so. I can remember the warty bits and pitfalls, maybe not in great detail but enough to jog the memory and I'll be more effective while working on it than someone seeing it for the first time.

I guess I'm just lost on things not being solved to a degree. Maybe its that I'm an iOS engineer where things are so locked down as far as goals and efficiencies that AI doing the work is verifiable by running the program, setting up some pre and post verification of code, and writing tests that look for certain edge cases. To be frank, it just seems like a trust thing. I trust it to the degree I am willing to to verify it.

“The purpose of abstraction is not to be vague, but to create a new semantic level in which one can be absolutely precise.” — Edsger Dijkstra

I've thought a lot about this quote, and the best abstractions I use are absolutely this. I love array indexing as an abstraction, but in the back of my head I have pointer + index * size. I like having the kernel do memory mapping, but I know there's a buddy allocator and TLB cache there.

[deleted]
[deleted]

There's a lot of chatter about how AI is advancing mathematics at the expense of human understanding. This is going to be true for software industry also at some point. The main gripe of mathematicians is how AI is discouraging young people from persevering. Right now job market is rough for junior SWE and unlike mathematics professors, nobody gives a damn. A few years down the line we'll see a real shortage of software engineers who "understands" and it will come back to bite the industry.

Agree up to certain levels but your examples are too specifc.

Understanding should come in different levels abstraction of what you are building,and managing.

There are different levels SREs, from beginner to say Fellow level.

Do you expect the Fellow level to understand nitty gritty details of each component his apps or services are interacting with and how each of them start? No. Especially when they have to deal with hundres or thousands of services each of them hosted by different teams, orgs, or different companies.

junior SREs, yeah probably got their hands dirty with those nitty gritty details you listed because they tend to deal with smaller or lower levels of components

So my point is, I agree withyour "Understanding" but not specific details as they differ per one's level of experience

There's nothing unique about junior SREs. They're replaceable with almost any "vanilla Dev". You don't really build a unique experience or expertise until Senior+.

The difference between a junior SRE and a dev is that during an outage the dev will take responsibility for their own code only[1]

While the SRE will follow the problem to the next layer or component and try understand what is going wrong there even though they never heard of the system 10 minutes ago.

[1] "I know I'm on call for this team but the guy who sits next to me wrote that code" is something I've heard way too many times.

Fair.

That's where my analogy breaks as all of them do.

My point is that @pluc comments suggests too specific and I wanted that his examples break down in different levels of expertise.

Nothing I mentioned deals with disposability of engineers.

Have the AI explain it to you. You probably won't understand it as well as if you created it yourself, but there is (the potential for) lots of understanding.

Or it could be just better instrumentation...

The same understanding most of the devs lack because they aren't.... curious. And thus, why they aren't SREs.

What would you think of easier-to-debug infrastructure building blocks? I'm building an easier-to-debug web server and reverse proxy, and I want to know how this would compare to trying to use AI SRE agent to reduce debugging friction. Or maybe both complement each other?

Dumbing down knowledge may be the solution, but it's a shitty solution. Things were fine before AI tried explaining them to us.

> There is no understanding with AI-generated applications, full stop.

Full slop, you mean.