Something’s been bugging me about how new devs and I need to talk about it. We’re at this weird inflection point in software development. Every junior dev I talk to has Copilot or Claude or GPT running 24/7. They’re shipping code faster than ever. But when I dig deeper into their understanding of what they’re shipping? That’s where things get concerning. Sure, the code works, but ask why it works that way instead of another way? Crickets. Ask about edge cases? Blank stares. The foundational knowledge that used to come from struggling through problems is just… missing. We’re trading deep understanding for quick fixes, and while it feels great in the moment, we’re going to pay for this later.
Namanyay, I’m sorry to say, sounds like a relative newbie when it comes to software development. The refrain “junior software developers can’t actually code” has been around as long as software development.
I remember when Stack Exchange first popped up, senior developers complained “junior developers don’t actually LEARN anything anymore; they just copy code off of Stack Exchange without understanding what it does!”
And before SE? We were doing the exact same thing in the comp.* newsgroups. And before that? When you started developing something, a senior dev dropped a bunch of books on your desk and said “when you’ve finished reading those, let’s talk.”
The truth is, ever since libraries have been a thing, the majority of developers have just used the libraries without really understanding what goes on inside them. And that’s not necessarily a bad thing — the entire point of abstraction is so that developers can focus on the stuff they need to get done while ignoring the already solved problems.
The issues arise when you place code monkeys in software architecture or senior development positions, and they’ve never had the curiosity to read through the header files for those libraries they use, but instead just let Claude code complete their way to functionality. Because then most style guides with teeth go out the window, as there’s no intention behind the choices made.
And this results in something that really irks (and always has) senior software developers: instead of writing really clean, performant and novel code, those senior devs have to spend all their time doing code reviews and editing and refactoring codebases that nobody else understands.
Same as it ever was.
From one senior dev to another, who remembers when O’Reily books were the gold standard, this, exactly this. Junior devs are junior because they don’t know how to code. The important bit is that they learn and become intermediate devs. If in another decade we’re sitting here complaining about intermediate and senior devs that don’t know how to program, then we’ll have a problem.
And let’s be honest, a certain percentage of junior devs never do learn. That’s always been the case, AI or not.
I suspect there are a lot of people who chased dollars with boot camps. They lack critical thinking skills, and don’t value curiosity and learning, which are pretty important to this field.
If they don’t know where to start and aren’t excited by figuring it out, they aren’t going to have a great time.
I say you’re wrong. If in dacade we are stilling complaining about the same dev, then we have failed to teach. In a decade that junior dev should be a senior and probably better than me. If they are still junior either they don’t have the ability to progress or I failed them. Most likely I failed them…m
This is exactly right.
I was guilty of copy and pasting from Stack Exchange to meet deadlines.
The only thing I would add is complaining that colleges don’t really teach coding for the real world and all boot camps are a waste of time and money unless that’s the most effective way you can learn.
In reality, coding is something you can learn on your own… or not. Colleges are good for teaching computing science and architectural design, but the good ones will assume you already know how to code. The problem of course, is that when you graduate you are unlikely to find a job as a computer scientist or software architect, and will most likely need to spend 5+ years as a junior programmer first.
Nobody but nobody has time to know what’s in every library they might need to use. Who among us truly understands their network stack, all 8 layers?
That’s OK we will just train AI to review and refactor for us! I’m sure everything will be fine.
Vulnerable code will be with us forever. The system will always be Swiss cheese. If you think you understand common mistakes, enough that you can review other peoples’ code for them, there’s work for you in infosec for sure.
Yep I remember the same complaint 10+ years ago. They are jr for a reason.