Challenges in Hiring and Growing Juniors in the age of LLM
Software engineering has been traditional split in roughly 3 levels.
Junior
Mid
Senior
Junior developers had the role of doing the grunt work of transforming a clear task into computer code. Beside coding themselves, they are not expected to think too much. They are not expected to ask themselves if the direction the team is taking is correct. Or to worry about business deliverable and organization success.
Senior developers operate on the other side of the spectrum. They keep asking themselves if they are building the right thing, in the right way, using the right resources and if they are having the right impact on the team. They write the clear tasks that junior developers implement.
Mid-developers are somehow a middle, operating a bit like a bridge.
What changed
Over the last two years we assisted to an explosion of LLM and GenAI.
With an LLM it is possible to generate code that looks and perform as well as the one that junior developers will produce. Without the extra latency and context switch of creating a task, communication, resource allocation, make sure everything is well understood, etc…
For a senior it would be faster to learn how to use an LLM and do most of the work themselves.
Are junior is still needed?
In the short term, no - they are not.
However, they are fundamental for the long term success of any organization.
If they were all to leave today, for months the teams will not be as badly affected - if anything there will be a spike of productivity.
Less mentoring, less task, less context switch - just quickly get stuff done with an LLM producing most of the grunt work.
But in the long term, any org without junior will miss the manpower to scale up and take more, and more ambitious projects.
However, the real question is different. Are junior still available?
Lack of demand, or lack of supply?
Are juniors still available? For my experience interviewing, no they are not.
Even when the organization wants to hire them, they are so below the bar that the organization has set for itself, that those juniors cannot be hired.
Coding is always been a passion of mine, and I learned to code before university. But coding assignments, and group projects, were a fundamental part of my university curriculum.
While coding assignments and group projects still are fundamental, universities are struggling to get students to actually code themselves - LLMs and GenAI is producing a lot of the code that goes into those classes.
This is not a problem, strictly of computer science, but in all STEM and beyond.
Students seems to get always busier and busier, and I understand their position.
However, the only way to get better at doing something, anything, is by doing it. Over and over. Copying the output of a LLM will definitely not help.
And this is awfully clear during interviews.
The lack of suitable junior, along with a less demand of them, is a huge problem for the industry.
There are a few ways that I see this problem evolving:
Hiring by credentials
Traditionally, tech is always been the great leveler - doesn’t matter if you come from MIT or the most unknown community college.
You get a technical interview and either you pass or you fail it.
I can see now big tech companies interested in giving interviews only to candidate from top university.
With the (flawed) assumptions that those candidates actually code their school projects themselves.
Hiring for potential
I myself mentored a few very promising engineers, that grew up in very capable engineers.
They all knew the basics, they all passed a standard interview process, they all could code already well. But still they were young and without all the knowledge necessary to really do well.
Teaching the basics of “handwriting code” would not take too much time, and the company could just drop those unwilling to actually learn.
Maybe it could be even another level, or an apprenticeship level. But it is a possibility.
Organizations adapt to LLM coding
I can imagine a future in which companies start relying on LLMs more and more.
At that point, the skill of “handwriting code” will become obsolete and there won’t be need anymore of coders that actually type code - but only chats.
In such environment, a young engineers, with advanced skills on LLMs and prompt engineers, etc… will actually have a small edge over the old and rusty engineers.
I don’t see this a practical solution, most of the work in big tech is about writing the least possible amount of code, creating the least amount of technical debts, while understanding the business requirements around it. LLMs are not great at this sort of work.
Prestigious organizations stop hiring junior and start hiring only at mid-level
Junior provide the backbone for growth of an organization. But so do mid-level developers. A possibility would be for top organizations to simply stop hiring juniors, let other organizations hire and promote them, and finally poach those talents with better perks and compensation.
This approach tend to dilute the company culture. People at mid-level already know at least ONE way of working. Not everyone will find it easy to adapt to the organization way of working.
But it is definitely a fast and cheap possibility.
Learning has changed, and we are still behind
A bit of controversial take on this article is that, one way or another, for better or worse, how people study and learn has changed.
It would be easy to blame students that are using LLMs to “cheat” on their assignments - but reality is more complex than this.
I don’t know what is the best way of learning. And what does even mean “best” in this context? But for sure we, as an industry, are not ready for this shift.