The "new kids on the block" were the ones I saw that decided that statically typed languages suck and dynamic is the way forward, only to discover how static types help and now they are bolting on static types to their dynamic stack.
I'll also say that I am not trying to generalize the newer generation as bad programmers; I have worked with plenty of very smart younger devs. It's just much more harder to come across them now in a sea of mediocre bootcamp devs.
... said the nextjs/vercel/graphql/whateverishotthisweek developer. Ironically, your stack will be outdated next week.
This is a bad-faith argument. If you disagree with what they’re clearly trying to convey, and want to make a case against it, I’d be keen to hear one without cherry-picking some compiler engineering layoffs in a company where the vast majority of others are obviously doing something very different to that.
Try asking a typical Django or React developer today what a cache line even is.
You don't care about how many ticks you need to MOV with indirect addressing when you are developing Django.
Feels like complaining because someone that is not a Django developer doesn't know how proxy model inheritance works.
Are we cool with surgeons not knowing what mitochondria are, or how cells work? All you gotta know is where to put the scalpel, bro. I'm sure it will work out just fine.
I don’t expect my doctor to know the component parts of atoms. Nor do I need them to.
I don’t expect a designer to know how a pixel works.
At some point in the stack we have to draw a line and say this level of detailed knowledge is not generally useful to the majority.
In terms of generic web development today, I would be fine at drawing that line at low level system concerns (memory allocation, cpu cycles, hell even compilation)
It is not possible either now - there is just too much complexity for people to know all layers of a stack. Look at how much more complex just a CPU is. Transistor counts in CPUs have gone up by five or six orders of magnitude since the 8 bit era. We now have all kinds of complex optimisations like out of order execution.
These days, if you're a sysadmin who can program, you're considered some sort of wizard.
More fancy sysadmins who were "modern" would learn Ruby.
The issue with "sysadmin" was that it suffered an inflation treadmill, what used to be a very difficult job where you would need to understand programming, debugging, compilers, OS design, distributed systems and so forth became a title for senior helpdesk staff; who, naturally, did not know those things.
Lots of people here completely missing the point - understanding assembly in the age of infinite cloud computing resources is equivalent to saying a guy who can build a wood hut on his own is more able to get jobs than a modern day construction worker. Even though they have some random or deeper technical knowledge, it doesn’t make them any more employable or relevant
Nowadays... unplug a modern computer from the internet and it's mostly useless.
Want to write a simple document, using a basic word preocessor? You're going to need at least 1GB ram, mate.
VisualBasic allowed writing GUI-enabled applications that would be essentially be standalone, shipped as executable files sized at (usually) less than a megabyte that would mostly "just work". Nowadays most people write GUI app in the form of frame-less web browsers displaying html and running Javascript, requiring more than one cpu core and 2-4 GB of ram to be barely usable.
Yeah I definitely can see how "The quality of your average tech worker has completely nosedived in the last 10-15 years".
As a system engineer... I have worked with some developers that constantly had memory issue ("I need more memory to run my containers, please increase the memory quota in the (kubernetes cluster) namespace") and reasoning about memory was just a non-existant skill. They just had no idea what was using memory in their software. Literally, their ass was mostly saved by the fact that process management nowadays is "good" at restarting software and managing retries on failures. Knowledge about the underlying operating system was also very very basic.
Such people, while surely filled with good intentions, were mostly useless without some random Medium article instructing how to apply some generic fixes, or without some stackoverflow question covering their exact use case.
But wait, it's way worse than this. There also are people that got promoted to managers, don't have a solid technological background (besides the little coding they've been doing before being promoted) and just can't understand the willingness to optimize and "geek out" on performance issues (and the value of such activities).
Oh and don't even get me started on nowadays a "senior developer" is somebody that is good at "delivering value to customers" instead of somebody that knows the ins and outs of the problem domain and has mastery over the technological stack.
Working in tech nowadays is a lot less about tech, it seems.
But I agree that the layoffs probably aren't based on programmer quality. When big companies lay off, they generally select products, and if you are unlucky enough to be working on that product...off you go. Merit-based layoffs are more stealthy and continuous, those are definitely being ramped up now, but probably not in the numbers companies need to cut due to overhiring or hiring in the wrong areas.
Yeah, Windows 95 BSOD'd a lot; however the people developing it were doing it for the very first time, largely with single-digits of megabytes of memory to work with and with a CPU that not only contained bugs[0] but was so slow that every single operation would take milliseconds of wall time[1].
It's not comparable, it's almost to the level that rendering a character on my screen right now consumes more CPU cycles than the entire operating system would have done in a day.
PHP was good, actually, but it's borne of its time- it's easy to use 20:20 vision of history to say it's a bad design when fundamentally:
A) it solved problems
B) it was working with the best of human knowledge in language design at the time
C) it remains one of the most well optimised web languages to this day, even a variant from the era would easily outperform any django webapp, I'd put money on this.
We stand on the shoulders of giants, good abstractions and lessons from these periods are what make our software so robust today. We made it a lot slower though.
[0]: https://en.wikipedia.org/wiki/Pentium_FDIV_bug
[1]: a 60Hz CPU executes an clock tick once every 16ms, Pentium 1 was the most popular CPU when Windows 95 released, and it had a clock speed of 60/66MHz; it was the first to be able to do two instructions per clock, meaning it had a best case scenario of 7.5ms assuming the 66MHz option was available.
BSODs were mostly avoided by using MS-authored drivers.
I was around back then. We didn’t have a magical browser box that you could type a couple of key terms into to get a thousand articles, code samples, philosophical discussions from hundreds of smarter people than you who have already solved your problem a dozen different ways and got to chose, and improve one. You didn’t have hundreds of languages, libraries, and frameworks where you could selectively pick the right tool. Back then you had your problem and you experimented and invented until you solved it generally with the one or two tools that were available at the time.
And with the benefit of nearly 40 years in tech…I can attest to the OP’s opinion that the quality of the average tech worker has nosedived since then.
It would be like if there was a housing boom and residential house framing ramped up base hourly pay to $100/hour with lunches provided and relaxation chambers onsite. You would see a huge influx of people going to it for the money rather than someone who is really into construction, knows load bearing tolerances, code for hurricanes or earthquakes, how to properly frame stairs, etc.
I find this opinion hilarious: Almost 30 years ago the second most popular software product was Windows 95 (Doom was the #1), which couldn't run for a few hours without BSODing. Almost 20 years ago the average tech worker was building atrocities with Visual Basic, MS Access and PHP.
Meanwhile today it was announced that Google decided to lay off several compiler engineers working on LLVM, but sure, please tell me more about those low quality bootcamp kiddos that are ruining everything...