TL; DR - New college CS grads are mostly children who know very little and expect huge paychecks immediately because they watched Mr. Robot and maybe opened a browser on an RPi. Once.
Yeah, the person who barely has the skill to pump gas probably won't make it (they probably have some bigger problems, too), but...
Compared to the post dotcom crash (where it was a buyer's market) where you could pick the best and brightest and make super teams, there's a stark contrast in 2018, and it shows in the quality of the products.
I've been here 4 years, and some of the new-hires that came on my first year are now able to support mutliple projects and getting their sea-legs, but the burden on the senior programmers is still heavy, and I'm doing my best to retain those saints! Perhaps there will be an inflection point that doesn't involve customers and managers freaking out.
Or, heh, perhaps I'M the weak link.
Sure a professional would have made that in a week, but their next site will take half as long, and then half as long... until they are within striking distance of someone who does still know all those fundamentals. They will mostly be limited in what they can do, but most people don't really need developers that can do anything even if they pay for them without realizing that.
Programming is being commoditized. In the same way you don't see a doctor first thing when you go to one; you see a nurse, tech, or assistant. Not everything requires the most expensive learning investment. Most programming jobs don't require you to be able to write a proof of the code you copy paste from Stack Overflow.
It's easy for those small problems. It's hard when you're designing products that need to get to market quickly and solve a difficult problem without product sinking bugs. That's why developers and engineers get paid a lot more.
That's a very small part of software development.
They've, in my experience, struggled with highly distributed and scalable applications/systems.
However, we software engineers (as well as computer scientists and devs) tend to underestimate how much we've already learned and internalized. It becomes painfully obvious when you try to teach someone, and realize that you need to start at a much earlier point than you expected.
By the same token, if you want an app that will still be maintainable in 5 years, you need a professional. An amateur can build most requirements, but the architecture will seize up if it’s just layers of hacks.
It’s sort of an interesting situation for startups, because their business requirements for newly acquired users are often changing on <5 year timeframes. So actually throwing away the whole system every few years turns out to be an OK strategy.
The problem is previously acquired customers, who won’t generally deal well if you tell them half of your products features are going away for 18 months, or maybe forever.
You can sometimes hack around this by basically ditching all of your old customers and taking a high turnover strategy. That can work well for the middle of your growth curve. You burn a chunk of your addressable market in the long term. Also most companies don’t have the nerve to do it.
And it can cause cash problems.
But there are viable strategies that way.
When I say the architecture “seizes up” I mean it gets to the point where
1) a refactor that would shave 100 points off your annual planned work costs more than 100 points
and 2) hacks are slowing your pace to the point that a realistic estimate for your annual planned work is growing faster than your team is working it down.
Note that in such a situation you will still be “getting things done” but your costs are rising while your output is decreasing. Eventually that grinds to a halt and your team will demand a costly and often fatal 2.0 cycle.
A good developer can refactor as they work, and say no to unworkable plans, such that your cost per point grows only linearly, so you can maintain stable feature output while growing your staff linearly.
You need a team of experienced professionals, which virtually no longer exists. You could work at 10 different companies back to back and not come across a team that can do it. That's the industry now.
That's part of the issue. People have been making teams who CANT build apps still maintainable in 5 years. Everyone has and only a select few remember/know that it's possible.
At a previous job, I was in a meeting where we pointed out an app had become unmaintainable to the point of requiring a rewrite. One of the engineers who built it pointed out "Well, we built this app a year and a half ago, of course it's unmaintainable, what do you expect?". I choked on my drink.
> even if they pay for them without realizing that
In health care, you have doctors, physician assistants, nurses, administrators, etc. They have very different background, schooling and certifications as well as salaries.
In software, you have some differences (individual contributors, tech leads, managers, etc), but it's not granular at all within the categories. While the self taught html dev is making 90-100k, the MIT graduate builting complex systems with 5 years of experience is making 150k (Using round numbers here, don't read too much into it), when the difference is significantly bigger.
People are quick to point out at flukes: there's totally exceptions, the CMU grad who can't code themselves out of paper bag, and the random highschool dropout who has been coding since they were 7 who are now world famous geniuses...but they're exceptions yet treated as the rule.