(2024-06-24) Yegge The Death Of The Junior Developer
Steve Yegge: The Death of the Junior Developer. Warning: This blog post is somewhat speculative; the sky might not be falling. A lot of people picked a bad year to be a junior developer. A whole lot of people. I wouldn't want to be just getting started in the industry today. Not just the computer industry. Any industry. It's a bad year to be a junior anything.
Let's start by talking about what's happening to junior developers.
My buddy Gene Kim gave me permission to share this story about his friend who is a managing partner at a 50-person law firm.
all hell is breaking loose at said law firm because of ChatGPT, with some wondering whether the entire structure of their firm, which has been stable for a very long time, might now be completely wrong. Their whole comp structure, pensions, succession planning, everything is going through an existential crisis
The problem, you see, is that there could be a future where they don't need junior associates anymore.
Increasingly, they need only senior associates, who (a) describe the tasks to be done; i.e., create the prompts, and (b) review the resulting work for accuracy and correctness.
Catching the LLM in a hallucination, catching a junior associate in a mistake – pretty similar
the same chaos, which is undoubtedly unfolding across legal firms everywhere, could affect all writing and editorial jobs. You can imagine a world where demand for junior writers and editors starts to evaporate.
Gene, as an accomplished and senior author, is delighted with his productivity gains with his LLM of choice, Claude Opus.
I, too, have been replaced by a bubble-bath plant pod human who pretends to be a programmer, but is in fact outsourcing almost all of it.
Naturally, when I say "make ChatGPT do all the work", there is plenty of coding we still do by hand. What I mean is that chat-first is the default, and writing by hand (with completions, naturally!) is our fallback plan. My quantum friend and I are both finding much less need for that fallback recently.
there is a widespread perception that chat is for junior developers, and becomes less useful as you gain experience.
And truth be told, this wasn't entirely inaccurate prior to mid-May. The models weren't quite there yet.
Chat-based programming, which I will preemptively label Chat Oriented Programming (CHOP) or just "chop", because I suspect I'll be to be saying it a lot, is a brand-spanking new phenomenon. Like, seriously, just over a month old. I first noticed it when GPT-4o came out, which was mid-May.
From what I've seen, Google's Gemini and Anthropic's Claude 3 Opus have also cleared this hurdle. Which makes multi-model prompting a good bulwark against hallucinations
All AI coding assistants benefit from this upgrade, too. It has certainly been huge for our coding assistant Cody.
The model upgrade is arguably even more effective with our inline edits feature, which handles dropping the response directly into your code
This is where we learn the hard way why chat programming is for senior devs. Please keep your hands and limbs inside the carriage during the ride.
I had presented a small design problem to GPT, asking for an evaluation of my options. It's great for that. Chat-oriented programming (CHOP) isn't just about coding. There are a lot of design discussions too.
For some reason, this time ChatGPT launched full-bore into redesigning an entire subsystem of the framework I was stuck in, which had an issue I was trying to work around.
And the rewrite would have worked! It was a very direct solution to my problem. So it wasn't "wrong" per se.
There was only one teeny tiny issue with it, which is that it would have killed someone.
GPT's redesign was awful – but not when you looked directly at it. Up close it was downright cozy.
You had to pull back and look at the design in the broader context of its interactions with other subsystems, but also support, maintenance, upgrades, add-ons, and a bunch of other dimensions that are critically important to software design and engineering.
But it was wearing a superb disguise. A less experienced dev would surely have fallen for it. I could feel the power and the attraction of the approach it was espousing
My senior colleagues have recently recounted similar chat scenarios in which a more junior dev would have been completely taken in, potentially losing days to weeks of work going the wrong direction.
Stock in junior contributors is down, and there is concern there could be a market crash.
That presents a very serious problem for new people in those fields. What do you do? How do you learn the ropes, not to mention find gainful employment?
within a few years, the norm for source code will be that it is written and modified by LLMs via prompting
I could even see it happening in 12-18 months at the current rate of LLM progress
And one casualty might well be junior devs
what do I mean by "senior" here? Really just two things:
- You know what you want before the AI writes it.
- You can detect when it is giving you bad guidance.
If you want to survive the change, you'd better show up prepared and stay on top of it.
The rest of this post is just some direct, simple, and timeless advice for junior and aspiring software engineers
Get good, fast
You are competing with students from Waterloo, who have 2+ years of actual work experience by the time they graduate with a bachelor's in CS. You're also competing with the top 10% of all CS grads nationwide, who are, year after year, already effectively senior engineers, despite this being their first real job.
Gain experience anywhere and any way you can, before you even leave school. Get work experience, contribute to OSS, program on the side.
Don't over-index on programming language arcana
Understand how things are built. Make sure you know how every system in a computer works. Make sure you have an understanding of how every cloud service you depend on does its job.
Learn how to use frontier models to check other LLM models' work. Sign up for multiple services (e.g. Claude and ChatGPT) and send your important prompts to at least two big models. Have them evaluate each other's responses and study it all carefully. LLMs are better at reviewing and critiquing their own content than they are at producing it. So use a second LLM as your senior partner.
Read the O'Reilly/Google SRE book. Read it cover to cover. And find a good GitOps book, too;
Raw GPT-4o is still great.
I used to tell people to master an IDE, and even better, also Emacs or Neovim. But I'm not sure anymore. That might become obsolete soon
It doesn't matter what approach you take, as long as you start making heavy use of chat in programming.
Edited: | Tweet this! | Search Twitter for discussion
No twinpages!