I decided to write down my thoughts on Felix Rieseberg's new essay in which he announces the death of the traditional coding interview and his optimistic implication for junior engineers.
The essay is split into 4 parts: intro, vision, acts, future
- the intro announces the death of the coding interview and the devaluation of tenure by hunger.
- on vision elaborates a thesis on the power of ignorance; a power whose antithesis is precisely that no one cares about it.
- on acts lists out a series of things to be done: business impact over backlog, knowing the goals of your skip-level manager, focused but radical ideas, prototyping, etc
- on future announces his new hiring heuristics: taste, empathy, principled thinking.
Per the tweet announcing the essay and its introduction, the essay promised an optimistic message for junior engineers; however, while reading, I found myself asking the same question(s): did he actually write this essay for junior engineers? and if yes, what is the message?
The intro announces the death of coding interviews, but its lengthiest sections, vision and acts, seem to be his narrations for an employed individual. Interviews, on the other hand, are concerns of the unemployed, so clearly, there's a misalignment. But this will soon make sense.
The vision section celebrates the power of ignorance but what is power if no one cares about it, if no one submits to it, if no one takes a bet on it? It's precisely not! So yes, the classic junior engineer was powerless, and in fact this was by design. The quasi-formal tenure system that gave meaning to being a junior also had a framework to grow you laterally. It is this lateral growth that progressively handed you more autonomy and responsibility.[1]
The acts section contains a series of prescriptions whose successful execution, classically, would have signified the level of a senior or staff engineer. This is not to say that only senior engineers were proactive, but the level of skill, influence, autonomy, political tact and even access to information required to facilitate that style of execution was identified with the upper echelons of the career ladder. Knowing not to bury three good ideas inside a custom compiler is itself expertise. In fact, Ji-Pei, who appears in one of the anecdotes, was already a Senior Engineering Manager at Instagram with about 10years of experience when he became the new employee at Notion who turned Felix into the old-timer. Anthony Morris, who built cc-desktop over the weekend, had also held senior engineering roles at Stripe before Anthropic. These were new employees, not "junior" engineers. So yet another misalignment.
Untangling
The most interesting thing about Felix's essay is his decision to define a junior engineer as someone without social capital, status and power. In other words, someone without influence. He concedes that junior is the "wrong word", but within the frame of his essay, I think it's tracking a shift. This redefinition is what untangles the essay so we can extract its message for the classic junior engineer. The message is simple: the junior engineer is dead. Walk with me.
The classic, unemployed, junior engineer, the person who would care most about the extermination of leetcode, rarely or never had to worry about influence. They were defined by some technical ability they (potentially) possessed and qualifiers like junior, senior, and staff did nothing but locate them within the quasi-tenure system, in which schematics like career ladders were used to guide lateral growth. So why this reversal?
Well, once you conceptualize a junior engineer as a function of technical ability and social position, and you also hold the earnest belief that claude is better at every technical challenge(from react to assembly) that previously would have signified human capability, the reason for this purely social classification of the junior engineer becomes self-evident.
In the classic order of software engineering, where traditional coding interviews found their meaning, it was possible to get a job without influence.[2] Infact, coding interviews acted as entry points into the informal software-engineering tenure system. They were the portal through which people (academics, non-academics, kids from accra, etc) got in and became. From today, it seems you have to be before you become. This is the great reversal of our time and it's caused by the revenge of hunger.
Yes, classically, tenure tamed hunger using rational schematics like the career ladder. Hungry junior engineers went through the mill and learnt how to achieve goals without falling prey to the impulse to write a custom compiler or rewrite that critical service in rust. An engineer became tenured through the ladder. Today, tenure is being beaten by hunger. Tenure's ladder has been turned upside down; the classic junior engineer has to start from the top. If there's a message of optimism, it's that: junior engineers have to become staff engineers. [3]
If the classic coding interview was a system that ingested people looking for jobs and produced symptoms that approximated how sick or cracked they were, claude is now the illest of us all. Unfortunately, the cost of claude's illness is that unemployed junior engineers have to become staff engineers even before employment.[4] They have to demonstrate high taste, principled thought, empathy, high commercial awareness, good political disposition, etc.
So, not only has the classic junior engineer died, they might have also died with the midlevel engineer too. [5] The junior engineer is dead; long live the staff engineer.[6]
More Questions: What happens if this optimism becomes the norm in hiring? How scalable would it be to hire using subjective heuristics? Would claude or gpt become the way to judge these subjective heuristics at scale? Is good judgement a technical skill? Where are early careers going to develop their good judgement and principled thinking capacities? Where will the new code-reviewers come from? To what extent is a well designed prototype a form of influence? Will there be another reversal back to leetcode-style interviews? Paradoxically, is this the change that will finally formalize&rationalize the software engineering tenure system?
[1] Lateral growth is growth that spans not just the technical, but also the behavioural, the strategic, and the political — such that you can become an effective contributor in the company. On most career ladders, the first few levels (associate, engineer-1, etc) all have the same scope: task. Your influence and scope then grow simultaneously towards project, collective, and then finally, company. go back
[2] Do not read this as me romanticizing the traditional coding interview system. I think the best way to hire is based on instinct and bets. The rational pressure to "determine" someone's future trajectory is what results in all these formal systems. go back
[3] If my reconstruction is directionally correct, you will have to stop calling or marketing yourself as a junior engineer. You'll have to look for classic career ladders and measure your skills against the senior/staff levels. You'll have to operate like a staff. go back
[4] Inline with reversals, when claude gets extremely ill, a socioeconomic position seems to die. go back
[5] The floor has been raised so there's going to be alot of struggle to find a seat. Classically, there weren't many staff engineers: either due the company being tiny such that it doesn't require that fine distinction or by the laws of rational organisation, there being very limited seats. go back
[6] Holding this reconstruction as true makes Felix's essay clearer: the ladder that once gave meaning to stratification is broken, so those adjectives (junior, midlevel) track nothing. Employed, unemployed, tenured — it's straight up communism in these streets. But of course, the dynamics that cause stratification and specialization don't just disappear. The ruler/ruled distinction is central to social relations, but hey, we have political theory books for that. go back