When I was studying in college, many people switched to computer science from other departments. Nowadays, people ask me if they should get a CS degree. They are surprised by my answer because I don’t know. They expect me to have an encouraging answer, but I simply don’t have one. It really is an interesting time.

Instead of pretending to be an oracle, I tell them what I know. At work, we now hire entry-level engineers only through an internship programme. At university, I noticed fewer people in CS degree programmes. I also remember companies paying for immigration and relocation. In fact, that’s how I got into AWS. I rarely see that anymore, except maybe for executive roles. So many people are looking for a job. Why would you bother looking internationally?

Amidst everyone’s predictions of either an AI bubble or AI supremacy, some people believe we’ll need far fewer engineers or other knowledge workers. Others argue that we’ll have so much more demand for software that we’d need more engineers. I can see both sides of the coin. Nevertheless, people deciding on a degree or already studying don't have the luxury of waiting to see what happens.

A company can revisit a bad hiring strategy in a single quarter, but new grads can’t just undo the start of their careers. If we get our future talent needs wrong, by the time we figure out what we actually need, many of the engineers we could have trained might have already moved on.

Marty could go back. Hiring managers can't.Marty could go back. Hiring managers can't.

What If We Need Them?

Right now, most of the hiring I see is for experienced engineers. In fact, demand seems to be coming back in some form after the layoffs. Nonetheless, nobody seems particularly interested in hiring juniors.

I can understand why companies hesitate to invest in juniors if they expect AI to reduce the need for them. Anthropic recently reported that even as its technical hiring continues to grow, juniors make up a much smaller share of new hires. Its hiring managers are also placing more weight on autonomy and judgment, qualities we normally associate with experienced engineers. I wonder how many companies are making a similar calculation without knowing what they'll need in five years.

The issue, though, is that a new graduate won't spend five years looking for an entry level job. They might move into a different profession. That might not be easy nowadays either, but people will eventually look for other ways to make a living. We also know many people are still living with their parents. I'm guessing this is all contributing.

Let’s suppose the optimistic predictions are correct. Software development becomes cheap enough for new businesses to emerge. More software means more systems to operate and secure. Then we might want engineers back again. Companies can fix this issue, at least those that can afford to, by poaching engineers from others. But that doesn’t create more engineers.

The Missing Flight Hours

Something interesting happened in US aviation. Airlines encouraged pilots to retire early because there was little demand for flights during COVID. As restrictions eased, demand increased, but airlines fell short of experienced pilots.

Larger airlines hired experienced pilots from regional carriers, leaving those smaller airlines short of captains. Regional airlines could recruit new pilots, but they couldn't immediately turn them into captains. To become a captain, a pilot needs to accumulate enough flying hours. Without enough captains, first officers, or co-pilots, struggled to accumulate those hours at the normal pace.

The shortage was making it harder to develop the people who could eventually resolve it. At least aviation has flight hours to measure experience. In software engineering, we count years and assume the experience we're looking for happened somewhere along the way.

There's another difference. Airlines were able to recall some pilots from leave when demand returned. I've been thinking about what retirement might look like myself. I wonder how many experienced engineers are thinking about something similar. Once you've made enough money to say fuck it and walk away, a generous salary might not convince you to come back.

I know the industries are different. Aviation has formal licensing requirements that software engineering doesn't. But the human element and on the job experience are hard to replace. Perhaps we can better simulate real job experience in university programmes or even at work to help people gain experience faster. My gut, though, tells me that being on the job is a bit different, no matter what you do. The stress of an incident teaches you a few things that are hard to simulate. We still need experienced engineers to give others that opportunity. But if fewer people get that opportunity today, who will be around to offer it tomorrow?

Someone Else Needs to Train Them

Training engineers costs time and money, and the benefits are hard to see in the short term. A senior engineer with good AI tooling might get more done working alone than spending time training someone. Hiring experienced engineers directly circumvents that problem. You just hire someone else’s talent. So you don’t pay the upfront cost of training them. You pay a premium to get the best talent.

But there's another problem. Before investing in someone inexperienced, we need to decide whom to take a chance on. A CV, a portfolio, a take-home assignment, even a remote coding interview used to tell us something about a candidate’s effort and ability, because they took effort to produce. AI made them cheap. Someone can now look like an expert on paper and get considerable help during a remote interview. This existed before, but not to this degree.

On the flip side, an internship is different. It gives you three to six months to gauge someone’s willingness, ownership, and curiosity. I've come to the conclusion after years of hiring that attitude beats everything else.

The irony is that landing an internship still depends on passing the same CV screening and remote interviews we're becoming less confident about. The opportunity to actually prove yourself over time still depends on performing during a few artificial hours first. The trouble is that if an internship is the only opportunity for someone to enter the industry, it’s a very narrow path. Nobody hires that many interns, so we'll lose many people along the way.

When students or people who want to study CS ask me, I tell them to learn the fundamentals, build things that others actually use, and take responsibility for keeping them running. Even a small project with real users can teach you things that nothing else can replicate. I tell them to find an internship, because it's one of the few places left to learn alongside experienced engineers while proving what they can do. I just wonder how many opportunities we're leaving them to find one.