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.
I’ve said it before, but this is a 20-year-old problem.
After Y2K, all those shops that over-porked on devs began shedding the most pricey ones; worse in ‘at will’ states.
Who were those devs? Mentors. They shipped less code, closed fewer tickets, cost more, but their value wasn’t in tickets and code: it was investing in the next generation. And they had to go because #numbersGoUp
And they left. And the first gen of devs with no mentorship joined and started their careers. No idea about edge cases, missing middles or memory management. No lint, no warnings, build and ship and fix the bugs as they come.
And then another generation. And these were the true ‘lost boys’ of dev. C is dumb, C++ is dumb, perl is dumb, it’s all old, supply chain exploits don’t exist, I made it go so I’m done, fuck support, look at my numbers. It’s all low-attention span, baling wire and trophies because #numbersGoUp.
And let’s be fair: they’re good at this game, the new way of working where it’s a fast finish, a head-pat, and someone else’s problem. That’s what the companies want, and that’s what they built.
They say now that relying on Ai makes one never really exercise critical thought and problem-solving, and I see it when I’m forced to write fucking YAML for fucking Ansible. I let the GPTs do that for me, without worrying that I won’t learn to code YAML for Ansible. Coding YAML for Ansible is NEVER going to be on my list of things I want to remember. But we’re seeing people do that with actual work; with go and rust code, and yeah, no concept of why we want to check for completeness let alone a concept of how.
What do we do, though?
If we’re in a position to do so, FAIL some code reviews on corner cases. Fail some reviews on ISO27002 and supply chain and role sep. Fail some deployments when they’re using dev tools in prod. And use them all as teachable moments. Honestly, some of them got no mentorship in college if they went, and no mentorship in their first ten years as a pro. It’s going to be hard getting over themselves, but the sooner they realise they still have a bunch to learn, the better we can rebuild coders. The hardest part will be weaning them off GPT for the cheats. I don’t have a solution for this.
One day these new devs will proudly install a patch in the RTOS flashed into your heart monitor and that annoying beep will go away. Sleep tight.
I have seen this too much. My current gripe isn’t fresh devs, as long as they are teachable and care.
My main pain over the last several years has been the bulk of ‘give-no-shit’ perms/contractors who don’t want to think or try when they can avoid it.
They run a web of lies until it is no longer sustainable (or the project is done for contractors) and then again its someone else’s problem.
There are plenty of 10/20 year plus and devs who don’t know what they are doing and don’t care whose problem it will be as long as it isnt theirs.
I’m sick of writing coding 101 standards for 1k+ a day ‘experts’. More sick of PR feedback where it’s a battle to get things done in a maintainable manner from said ‘experts’.
No one wants mentors. The way to move up in IT is to switch jobs every 24 months. So when you’re paying mentors huge salaries to train juniors who are velocity drags into velocity boosters, you do it knowing they are going to leave and take all that investment with them for a higher paycheck.
I don’t say this is right, but that’s the reality from the paycheck side of things and I think there needs to be radical change for both sides. Like a trade union or something. Union takes responsibility for certifying skills and suitability, companies can be more confident of hires, juniors have mentors to learn from, mentors ensure juniors have aptitude and intellectual curiosity necessary to do the job well, and I guess pay is more skill/experience based so developers don’t have to hop jobs to get paid what they are worth.
Yeah those job hoppers are the worst. You can always tell right away what kind of person those are. I’ve had to work with a “senior” dev who had 15 years of experience and to be honest he sucked at his job. He couldn’t do simple tasks, didn’t think before he started writing code and often got stuck asking other people for help. But he got paid big bucks, because all he did his entire career was work somewhere for 2-3 years and then job hop and trade up. By the time the company figured out the dude was useless, he went on to the next company.
Such a shitty attitude, which is a shame because he was a good dude otherwise. I got along with him on a personal level. And honestly good on him for making the most he can, fuck the company. But I personally couldn’t do that, I take pride in my work.
I let the GPTs do that for me, without worrying that I won’t learn to code YAML for Ansible.
And this is the perfect use case. There’s a good chance someone has done exactly what you want, and AI can regurgitate that for you.
That’s not true of any interesting software project though.
FAIL some code reviews on corner cases. Fail some reviews on ISO27002 and supply chain and role sep. Fail some deployments when they’re using dev tools in prod. And use them all as teachable moments.
Fortunately, I work at an org that does this. It turns out that if our product breaks in prod, our customers could lose millions, which means they could go to a competitor. We build software to satisfy regulators, regulators that have the power to shut down everything if the ts aren’t crossed just so.
Maybe that’s the problem, maybe the stakes are low enough that quality isn’t important anymore. Idk, what I do know is that I go hard on reviews.
and I see it when I’m forced to write fucking YAML for fucking Ansible. I let the GPTs do that for me, without worrying that I won’t learn to code YAML for Ansible. Coding YAML for Ansible is NEVER going to be on my list of things I want to remember.
Feels like this is the attitude towards programming in general nowadays.
To be fair, YAML sucks. It’s a config language that someone thought should cover everything, but excel at nothing.
Just use TOML, JSON, or old-school INI. YAML will just give you an aneurism. Use the best tool for the job, which is often not the prettiest one.
Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.
Antoine de Saint-Exupéry
Kids these days with their fancy stuff, you don’t need all that to write good software. YAML is the quintessential “jack of all trades, master of none” nonsense. It’s a config file, just make it easy to parse and document how to edit it. That’s it.
While there is some truth to what you said, it sounded to me too much like “old man yells at clouds” because you are over-generalizing. Not everything new is bad. Don’t get stuck in the past, that’s just as dumb as relying on AI.
I’ve said it before, but this is a 20-year-old problem.
After Y2K, all those shops that over-porked on devs began shedding the most pricey ones; worse in ‘at will’ states.
Who were those devs? Mentors. They shipped less code, closed fewer tickets, cost more, but their value wasn’t in tickets and code: it was investing in the next generation. And they had to go because #numbersGoUp
And they left. And the first gen of devs with no mentorship joined and started their careers. No idea about edge cases, missing middles or memory management. No lint, no warnings, build and ship and fix the bugs as they come.
And then another generation. And these were the true ‘lost boys’ of dev. C is dumb, C++ is dumb, perl is dumb, it’s all old, supply chain exploits don’t exist, I made it go so I’m done, fuck support, look at my numbers. It’s all low-attention span, baling wire and trophies because #numbersGoUp.
And let’s be fair: they’re good at this game, the new way of working where it’s a fast finish, a head-pat, and someone else’s problem. That’s what the companies want, and that’s what they built.
They say now that relying on Ai makes one never really exercise critical thought and problem-solving, and I see it when I’m forced to write fucking YAML for fucking Ansible. I let the GPTs do that for me, without worrying that I won’t learn to code YAML for Ansible. Coding YAML for Ansible is NEVER going to be on my list of things I want to remember. But we’re seeing people do that with actual work; with go and rust code, and yeah, no concept of why we want to check for completeness let alone a concept of how.
What do we do, though?
If we’re in a position to do so, FAIL some code reviews on corner cases. Fail some reviews on ISO27002 and supply chain and role sep. Fail some deployments when they’re using dev tools in prod. And use them all as teachable moments. Honestly, some of them got no mentorship in college if they went, and no mentorship in their first ten years as a pro. It’s going to be hard getting over themselves, but the sooner they realise they still have a bunch to learn, the better we can rebuild coders. The hardest part will be weaning them off GPT for the cheats. I don’t have a solution for this.
One day these new devs will proudly install a patch in the RTOS flashed into your heart monitor and that annoying beep will go away. Sleep tight.
I have seen this too much. My current gripe isn’t fresh devs, as long as they are teachable and care.
My main pain over the last several years has been the bulk of ‘give-no-shit’ perms/contractors who don’t want to think or try when they can avoid it.
They run a web of lies until it is no longer sustainable (or the project is done for contractors) and then again its someone else’s problem.
There are plenty of 10/20 year plus and devs who don’t know what they are doing and don’t care whose problem it will be as long as it isnt theirs.
I’m sick of writing coding 101 standards for 1k+ a day ‘experts’. More sick of PR feedback where it’s a battle to get things done in a maintainable manner from said ‘experts’.
that is your leaderships fault
No one wants mentors. The way to move up in IT is to switch jobs every 24 months. So when you’re paying mentors huge salaries to train juniors who are velocity drags into velocity boosters, you do it knowing they are going to leave and take all that investment with them for a higher paycheck.
I don’t say this is right, but that’s the reality from the paycheck side of things and I think there needs to be radical change for both sides. Like a trade union or something. Union takes responsibility for certifying skills and suitability, companies can be more confident of hires, juniors have mentors to learn from, mentors ensure juniors have aptitude and intellectual curiosity necessary to do the job well, and I guess pay is more skill/experience based so developers don’t have to hop jobs to get paid what they are worth.
Fixed typos due to my iPhone hating me.
Yeah those job hoppers are the worst. You can always tell right away what kind of person those are. I’ve had to work with a “senior” dev who had 15 years of experience and to be honest he sucked at his job. He couldn’t do simple tasks, didn’t think before he started writing code and often got stuck asking other people for help. But he got paid big bucks, because all he did his entire career was work somewhere for 2-3 years and then job hop and trade up. By the time the company figured out the dude was useless, he went on to the next company.
Such a shitty attitude, which is a shame because he was a good dude otherwise. I got along with him on a personal level. And honestly good on him for making the most he can, fuck the company. But I personally couldn’t do that, I take pride in my work.
Maybe if people were paid more it wouldn’t be such an issue.
And this is the perfect use case. There’s a good chance someone has done exactly what you want, and AI can regurgitate that for you.
That’s not true of any interesting software project though.
Fortunately, I work at an org that does this. It turns out that if our product breaks in prod, our customers could lose millions, which means they could go to a competitor. We build software to satisfy regulators, regulators that have the power to shut down everything if the ts aren’t crossed just so.
Maybe that’s the problem, maybe the stakes are low enough that quality isn’t important anymore. Idk, what I do know is that I go hard on reviews.
Feels like this is the attitude towards programming in general nowadays.
To be fair, YAML sucks. It’s a config language that someone thought should cover everything, but excel at nothing.
Just use TOML, JSON, or old-school INI. YAML will just give you an aneurism. Use the best tool for the job, which is often not the prettiest one.
Kids these days with their fancy stuff, you don’t need all that to write good software. YAML is the quintessential “jack of all trades, master of none” nonsense. It’s a config file, just make it easy to parse and document how to edit it. That’s it.
While there is some truth to what you said, it sounded to me too much like “old man yells at clouds” because you are over-generalizing. Not everything new is bad. Don’t get stuck in the past, that’s just as dumb as relying on AI.
You and I read a very different comment, apparently. There was nothing there saying new is bad. Maybe read it again.