Obsession climbs the abstraction ladder
Let me explain.
A few weeks back, I received a few messages from Radhakrishnan after our casual chat. This chart was part of the slides he sent. He mentioned he came up with it after the discussion with Priya Sebastian, and that it helped him think through software engineering roles deeply and his frameworks, Zero Maintenance Teams and Engineer.
This chart was fascinating, and I couldn’t agree more, as I am an advocate of product engineers. I was so into the concept that I renamed our entire engineering team and its roles to product engineering in 2021/22 after being introduced to it through an article by @GergelyOrosz.
The more I looked at and reflected on this ladder, the more I thought about how these roles reflect our obsession. Our focus. I see that as abstraction levels.
The more we obsess about code, the more we become programmers/developers. We started caring much about craft, we became software engineers. Obsession with value made us product engineers. Now it is all about systems, and that will make us system/platform engineers.
These roles are named after seeing the pattern of enough people caring about the same thing at the same time, and someone eventually put a word on it. The word stuck because it described a real group of people who were already there.
But not all obsessions become a role. The obsession at the operational level becomes a widespread role. And the obsessions that are tool-based do not become widespread roles. Of course, there are exceptions like Salesforce Engineer.
As we have better abstractions, tech, and tooling to cover the levels, the obsession moves a level up.
People obsessed over assembly until compilers became trustworthy. They obsessed over servers until the cloud became trustworthy. They obsessed over browser differences until the browsers stopped differing.
The attention relocated. It went to the highest layer that was still uncertain, because that is where being good at something still made a visible difference.
That is the pattern the ladder is describing. Every rung is a layer that used to be uncertain and then became dependable enough to stop thinking about.
Code generation is crossing that line as we speak. Writing code the way we used to write it is no longer where the difference shows up. The observation I keep coming back to is this. The entry baseline moved. It used to be code. Now it is craft.
We used to be able to walk in obsessed with code alone, and that was enough to start. That door is now closing. What is expected at the entrance now is judgment about how software should be built. Knowing why this abstraction will hurt in six months. Having some taste about boundaries and naming. Caring what happens when the thing fails.
That used to be the second rung. It is turning into the floor.
Each level carries the components of ones below it.
Craft contains code. Value contains craft. Systems contain all of it. Moving up is not leaving anything behind. A system engineer still reads a stack trace during an incident. They just do not build their identity around it.
Code awareness is not going anywhere. It is changing positions. It used to be the thing we were known for. Now it is the thing we need to judge what comes back at us.
Code obsession had a low ceiling. One could spend fifteen years getting very good at it and still end up as the person who could build anything and decide nothing. I have watched that happen to people who deserved better.
Craft is a better place to start. It is more portable, it ages well, and it points somewhere. If the floor of the industry is rising to craft, more people begin their career already asking the questions that used to take a decade to learn to ask.
If obsession keeps climbing, and each layer moves up as the one below it becomes dependable, then something sits above systems.
I do not know what it is called yet. The name always arrives late.
But it is worth watching for. Because whatever it is, it is where the attention is going next.