Hacker News new | ask | show | jobs
by twawaaay 1316 days ago
Nothing further from truth.

Companies still desperately need developers to make their business goals reality. This is not changing anytime soon. There has been no advancement that makes developers less relevant.

What changed is how companies react to perceived bumps on the road and productivity. Companies learned that global recession can affect them and it pays to prepare. Companies also learned that fast hiring causes low productivity down the line. The easiest way to fix this is to fire a bunch of people at a time rather than individually and then blame it on perceived recession (even if it barely affects the company).

My experience is also that large proportion of hires can barely program at all and got into business because every other job they could get pales when compared to software development. There are multiple reasons why these people got successfully hired (broken hiring, enormous pressures, etc.) I can't blame people for trying to do their best but from our point of view it has a huge effect on entire IT business.

Also companies started playing a kind of chicken game, it seems. Everybody waits for one company to lay some people off so that they can use it as an excuse to do the same.

9 comments

> easiest way to fix this is to fire a bunch of people at a time rather than individually and then blame it on perceived recession

"Hence it is to be remarked that, in seizing a state, the usurper ought to examine closely into all those injuries which it is necessary for him to inflict, and to do them all at one stroke so as not to have to repeat them daily ... For injuries ought to be done all at one time, so that, being tasted less, they offend less; benefits ought to be given little by little, so that the flavour of them may last longer."

-- Nicolo Machiavelli

Oh, yes, this quote I lacked.

Also, when you fire one person, you have to explain in detail why this person. You open yourself to risk of being called for discrimination whether you intended it or not. All this scrutiny disappears when you do the same in bulk.

"One person losing their job is a tragedy; a million is a statistic"

-- Not Stalin

> My experience is also that large proportion of hires can barely program at all

This seems like an oft repeated myth, but you say it's your personal experience, so I'm really curious what you mean by this. These are folks you've seen in SWE who just like, not opening any PRs? Just pretending to do busy work while some nice coworkers do their assigned tasks? How does this work?

I wouldn’t say it’s a large proportion, but I’ve seen this at multiple companies over the course of 25 years. It manifests in 2-3 different ways that I’ve seen.

Sometimes they can code, but slowly and their output is unacceptable. This creates a burden on the rest of the team to either try to review it into something good (this doesn’t actually work) or to fix/rewrite it after it’s committed (typical in shops that don’t have a review/PR culture or process). IMO this is the worst of the three types. In it’s worst form it’s also the most obvious and these bad hires tend to get managed out fairly quickly.

Sometimes they can’t seem to get anything done on their own. Questions from new hires are expected, yes, but the questions are supposed to wane over time. This group doesn’t have that curve. Having talked to coworkers after these people have left, I’ve later realized that these people have bothered a lot of people on the team with a lot of questions, to the point where most of their work has been done by other people. This is only slightly better than the group above, but it’s still a waste of a lot of productivity.

Sometimes they just hide out. I guess they dodge questions about output from managers? Or are otherwise very poorly managed? I’ve only observed this in environments with a very weak management system. Honestly if I had to choose a bad hire situation, this would be my preference. They’re leeching from payroll but they mostly don’t get in the way of work that I have to get done.

Maybe only tangentially related, but I can share some of my personal experiences with hires at my current job. I work for a mid-size IT consultancy agency in the Netherlands which prides itself on almost exclusively hiring people with a masters in comp sci, or occasionally some other STEM field.

I'd say that 90% of the new graduates we hire straight up cannot program beyond what you'd need for your typical uni assignment (a few months ago one asked me what 'git' was). If they're motivated and eager to learn, I can usually get them to productivity in a month or two. The ones who are not take months to get up to speed and become a real drain on the team's productivity.

The more senior colleagues I interact with are kind of a mixed bag, some are really good and a pleasure to work with others have learned just enough to get by in their current role and become useless as soon as they have to do something slightly different.

That being said I do think that the level at my company is above average in relation to "the industry". If you want to see truly large amounts of non-contributing employees, have a look the IT-department of a large bank, pension fund, government agency or some other technology adjacent big organization. They can't hire the most talented engineers to start with and then most of them are actively kept from doing productive work by layers of middle-managers and bureaucratic procedures.

On my last team, I had an incompetent junior engineer. It was a time suck to do hold countless pairing sessions with them, answering the same questions again and again without having them learn anything.

On my new team, there is an incompetent senior engineer. Damn... how I miss my incompetent junior, who aside from wasting some time, never really affected the team. The incompetent senior produces impressive amounts of badly architected, untested code which breaks subtly and is impossible to maintain. They are also totally unreceptive to mentorship because they are so senior and know everything.

> new graduates we hire straight up cannot program beyond what you'd need for your typical uni assignment

That seems very logical. The outcome is in line with the optimization. For a different outcome choose a different optimization.

CS !== Programming

Yeah I struggle with this meme. Have been in the industry for nearly 25 years at this point. Never once have I had a colleague who straight up couldn't code. I've seen a number of crappy devs, but they could at least do soething.

And much more often than not, the underlying issue for those crappy devs was less their lack of coding skills and more general lack of critical thinking skills. Making bad decisions when faced with a choice, that sort of thing

> Yeah I struggle with this meme.

Same, in 25+ years I've never met these developers who can't code.

There are many who make problematic decisions in other aspects of the engineering lifecycle. But actual lack of being able to write working code, no.

Have you never had a coworker that needs so much help that they end up "costing" so much of other people's time and focus that you would have been better off if they weren't there at all? While I thankfully haven't encountered a lot of people that far out on the competency spectrum, I have met a few, or more than a few that are not too far off. Not a large proportion of hires, as OP said, but still.
Absolutely. On a small team, we had 2 underperforming devs.

One was doing absolutely nothing at all for months on end.

One was doing negative work - every line of code made things worse, every document was unintelligible, and they would approve every PR from other devs the second it was opened.

Suffice it to say, the dev that did nothing at all was the most productive of the two.

I would add to it that there are a lot of devs that can't build stuff but they try (frequently successfully) to sell that they are doing a lot of volume of work (like closed tickets, lines of code, hours clocked).

And these people frequently last surprisingly long at companies because it is pretty hard for managers to understand how individual team members contribute to overall productivity. Managers tend to focus on short term goals (like getting a feature delivered or a bug solved) but have hard time understanding long term implications of bad decisions their people make.

It is pretty easy to fix a bug or write a feature but a bad developer will cause large amount of debt along with it that will slowly deteriorate productivity in ways that will be difficult to understand. The people who understand what is happening -- senior devs -- will frequently not speak up about it or their voice will be downplayed ("Hey, this guy can't be that bad, he is delivering after all?")

If management does not pay close attention, doing sloppy work with many small bugs is the key to very high (measured) productivity:

  - You close a feature ticket by cutting all corners possible
  - Every corner cut will later become a bug ticket, that you can solve quickly as you are more familiar with the feature
Total: you have closed more tickets than a dev that did the feature right the first time... sad
Given how short tenures are across the board, those of us who are even around to notice long term outcomes are sort of wierdos to begin with. Many senior and staff engineers, architects, directors, etc. have never seen their own work 2 years down the line. Even if they stay at the company they switch teams, etc.
> deteriorate productivity in ways that will be difficult to understand

Exactly! This can be very difficult to quantify; as this kind of debt is undetectable by standard gates (linter, static analysis, etc.). Instead, it is more nefarious... introducing coupling, where none was needed, or long-winded tests; that test very little, and make the code hard to refactor. I don't have a measure for this beyond my intuition of working with code for decades.

What makes it all worse, is when the features are 'delivered' and marked as 'complete' by these folks, they are difficult to take back! Especially if their delivery was identified as a key objective to a quarter.

That's why my personal favourite tool to manage this is pair programming with people. I do pair programming for interviews and I do longer (at least a week) pair programming projects with all my devs at some point.

It not only lets me know how the person works, how they solve problems. It lets me remediate some of the problems. And just get to know the person on personal level.

The only issue with this is it takes time and does not scale. You can honestly manage up to a dozen devs this way and when I have larger teams I have to skip it (for example I no longer pair with juniors -- I pair with seniors and then teach them to pair with juniors more productively).

I've had one. I put them on a pip and they found a more senior role at another company.

Good luck to their new manager.

So you `pip install`ed them at a new company? I'll see myself out.
Not OP, but I can share my experience. Worked with two other people on a data lake project and their Python code was full of weird stuff, like if you just copy/paste SO snippets into the project. They eventually got outputs but the code was all-but-unmaintainable.

(For the record, I also copy SO code into my projects, but I at least leave a note on what specific problem I’m solving and a pointer back to the question.)

This is my experience as well. A large portion of hires can barely program. There is also a portion of hires that are 20-40% more than market, but yield more than double the outcome.

There are a large number of SWEs that are not worth keeping but the incentive structure is misaligned to deal with it. If tomorrow you realize more than half of your staff should be cut and replaced, how much effort would it be to do it, what do you gain and how much risk do you put on yourself if it back fires?

I recently watched a fellow leader try to go down this path to get stonewalled by HR about respect, moral and cultural values.

Disclaimer: Own personal opinions.

I wonder how much of this is just commonplace in any industry. Isn't mediocrity to be expected if people are, on average, well... average? When I walk into a bank I don't expect them all to be the best bankers in the world. Most of the restaurants I go to are fine, not earth shattering. Houses are built by crews of various competence. Government is run by the inept. Militaries are staffed with cannon fodder. Etc.

Why is it a problem that some people do the bare minimum? By and large they still contribute in some small way to the project, hopefully. I'd much rather work with people who are less competent but easy to get along with than someone who is above average but also cocky and inapproachable and won't take feedback well.

Most software and business problems aren't that hard. You don't need the best people to work on them. Superstar devs are sometimes just a pain in the ass and not worth the small improvements to code they can bring if they are a thorn in everyone's sides. Coding is just routine groupwork, not an Olympic sport.

My 2c as someone who's slightly below or slightly above average, can't really tell and don't really care lol.

I don't think anyone is saying that being average is bad. At least I'm not. My problem with these people is that the average is such a low quality of work and work ethics.

I want to be able to set a certain bar of quality and work ethics and I want the average developer to meet that bar, not for them to be so far below it that I have to hire way above average people just to reach the bar.

I agree with you that you want people that you can work with. The star developers with the attitude you describe is not someone I want to hire. However doing the bare minimum is so way below the bar that this better not be what the average developer does. I want those people to be the exceptions - way below average.

Maybe I've just been lucky, but I've never actually seen one of these in the wild (a supposed programmer who can't code even mediocrely). Even the interns at my current job are pretty proficient (and better at some things I am!). And in the right cultural atmosphere, people support each other and help them learn and grow... they don't stay a beginner for long.

These people with terrible work quality and work ethics... how do you end up with them to begin with? There can't be THAT many of them. Are you working for a huge company that hires by the hundreds and just don't have time to properly vet/interview individual hires? I don't even mean LeetCode, just casual questioning, code samples, etc.

I believe you, I just have a hard time understanding how somebody so terrible gets onto your teams to begin with. None of the coworkers I've ever worked with have ever been like that, and though all we all start at different skill levels for different things when we start, that tends to equalize itself after a few months of working together.

One reason could be that our "bars" are different. I say that because you said:

    Why is it a problem that some people do the bare minimum? By and large they still contribute in some small way to the project
I sense that your bar might be quite a bit lower than the bar I would apply, solely based on that comment. If you think doing the bare minimum is OK, your bar very likely is below the bar that I set. While it's hard to actually define and talk about the standards we think are to be met or not, here is one thing I value and that thus goes into the bar.

You should put 100% of your effort into your work, when you work. I'm against the overwork culture that exists in a lot of Corporate America. Don't do 150%. Don't work 60 hour weeks. That doesn't impress me. What I expect from an employee is that they work however many hours their contract says they should ("nominal hours" if you will in places where this isn't well defined by contracts) and that they give 100% of what they can do during that time. After that time is done, stop working. Do other things. Be with family. Be with friends. Go on a date and start a family or whatever floats your boat but stay away from work. But if I see you on your phone, looking through Facebook or Reddit or HN every time I enter the room (and you quickly put it away) we're not going to be friends. I love WFH btw. Never want to go back into the office. But you better not "do the bare minimum", i.e. be on HN 80% of your time that you "work".

EDIT: And of course that doesn't mean you can't ever check stuff on your phone or whatever during the workday. But there is a strong correlation between people with sub-par output and those behaviors, especially if they tend to quickly put their phones away as if you "caught them".

Do you not have internal coding standards / guidelines? Ideally this is what a PR process is for - reviewing new code and making sure it adheres to the team’s expectations.

If code is not where you want it to be, reject the PR, leave specific comments about what was done well and what was done poorly, then repeat the cycle until code is where you need it to be.

I don't know why you mention this in reply to my comment. I don't see how this is related.

Now with that said, of course we have standards. That's the bar ;)

The point I was making is that it seems that the average developer is so far below the bar, that I don't want to hire average developers.

Of course there are some juniors (and even some seniors) that will take to code review comments, pairing with them, mentoring them, giving feedback etc. and will improve. Many many don't. Like mentioned elsewhere in the threads here, I think at least some of that has to do with the fact that so many developers have entered the market but they actually aren't good at it. They're in it for the money. They pull the average so far down that hiring average developers is excruciatingly frustrating.

If you’re good at LeetCode, you can just get a new job every 1-2 years before your actual job performance catches up with you.
normally a developer that can't program shows in a few major ways:

1. pair programing where they "want to watch you", but never modify your code and submit it

1. talks a lot about progress, but it takes days to get a commit out of them

1. will build "solutions" to perceived problems that really only serve to make them the single failure point and are not usable

1. says shit like "i don't write tests" or "it works for me, can you show me what you mean?" and clearly has no idea what you're doing

1. you repeat the same comments in loops, because they aren't taking your feedback, they're trying to hit a KPI

these people fall into two major groups, the people doing it on purpose, and the folks that don't realize that this is them. a lot of people lie to themselves about their ability, and this is the end result of them being incapable of acknowledging that they've got work to do!

Some I do agree with and some don't.

I agree on pair programming, as a tech lead, pair programming is my single best tool to get some understanding of my team member capabilities.

"Talks a lot about progress"... this is a mixed bag. In most cases you are right. But in some cases.. I have worked with people who obsess about quality of what they produce (and I am the same) who will spend a lot of time polishing things after they are nominally done. It is not that they don't deliver, they need some help defining what done is.

"Says shit like I don't write tests". I don't write tests. There are good reasons that are out of scope of this discussion. When somebody says shit like "I don't write tests" I want to hear a follow up explanation on why is it. Because if you do not write tests you have to be doing other things.

"You repeat same comments in loops because thy aren't taking feedback". Guess what, a lot of good programmers are bad in some other respects. Just because they aren't taking feedback doesn't mean they are bad. I stress to people it is not enough to be good at programming, development is about building things and programming is just one skill. Development is a team sport that requires multiple people to work together to build something.

- "Talks a lot about progress"... this is a mixed bag.

if you're producing code, it is not just talk. i'm talking about a scenario where you've heard about the great struggles they've faced, and after a week you get a commit with 4 files cahnged, and it's on a "sample" of the full work. overdone is fine and not what i meant.

- "Says shit like I don't write tests". I don't write tests. There are good reasons that are out of scope of this discussion.

This mindest is the same to me as saying "we only need a single point of failure for all things". "I can just read the source" is the same thing as saying "i can just take a course on it later that will take hours without the help of the original context". I firmly believe that anytime you build a big suite of software without tests, you're just unloading tech debt on an org with no guidance on how to handle it. comments, tips, and tricks can drift from the code overtime, a test can't and is the only provable way to validate your code. if you don't have time for testing at work it's an organizational failure that will only come due in the worst of times. Remember when Jira deleted a bunch of shit and couldn't get it back without one engineer fixing it manually? boy, i bet it would've paid to have _any_ testing in there!

- "You repeat same comments in loops because thy aren't taking feedback".

When you tell someone "commiting secrets to the repo means they are no longer secret" and they go oh yeah, makes sense, and then proceed to dump credentials into the next four commits, that's what i'm talking about. not this "i dropped a whole new concept on you. learn it in one" concept that i may have implied. i'm talking about poeple who just aren't even trying to listen, they just want an approval or w/e from you to move on.

fwiw: i'm a bit of a stickler for testing, and will acknowledge that my stance comes from my experience, and is therefore a known bias, just one i have a hard time letting go of

FWIW: I don't do tests because of how I learned programming writing large swaths of code for weeks that had then to work perfectly the first time (embedded C on a machine with very poor development process and external company that had to sign the binary before I could run my code). I taught myself rigorous thinking about code and various techniques that make it less likely that there is something wrong with it, otherwise I would be loosing a week before I got another chance to run it. I also then worked in a lot of projects with poor code quality and no test coverage that I had to run extensive refactors of and keep hammering on until it looked decently. With this in mind, unit tests have never been useful to me in any way and would be just a waste of time because they would not bring any benefit to anybody else I worked with.

It is not that I believe tests do not work. Tests is a viable solution to a problem. The issue with tests is that you have to do a lot of things right and you have to structure your development in certain way for tests to be productive. And if you don't do a lot of things right then tests will just cost a lot of development time without much benefits.

Introducing unit testing is hard if your team isn't already doing it and costs a lot of effort for practically no immediately visible effect to stakeholders.

Very few organisations I worked in would be at maturity level when investing in unit testing would be the highest return on investment thing you could do at the moment. There is usually many other problems that cause less disruption to development practices and bring much more benefits than unit testing.

On the other hand I am a huge fan of functional testing where you create a test harness that ensures that public interface of your product (application) functions as expected. The effort is much smaller (you only evaluate public interface which already is integrated with other things and which isn't expected to be changing a lot anyway), the benefits are clearly demonstrable and understood by stakeholders.

> otherwise I would be loosing a week before I got another chance to run it

Sounds like there are existing problems more severe than lack of tests.

Recall that tests, like comments, are not for you in the here and now.

I hope this remains a "myth" for you. I can assure you that it can be quite painful to deal with and take a long time to remedy.
> My experience is also that large proportion of hires can barely program at all

whenever i read statements like that I am reminded of this : Illusory superiority

" Illusory superiority is a condition of cognitive bias wherein a person overestimates their own qualities and abilities, in relation to the same qualities and abilities of other people. "

It comes across as you stating you are so much better vs everynoe else. Sort of like how 88% of the population think they are better-than-average at driving

I have quarter century of experience in software development and have been programming most days for the past 30 years. Can't say how I am stacking up against developers with same level of experience but I can say with no exaggeration that I do, in fact, have more experience and more valuable skills (as I am routinely called to help with failing projects) than most developers I am working with. Saying otherwise would be just false modesty.

Also stating that there exists something like "illusory superiority" does not mean there does not exist "superiority". Yeah, I also studied theoretical math.

Even though most drivers think of themselves as above average it absolutely does not mean that there do not exist superior drivers. An F1 driver can absolutely say he is a superior driver and it is completely true, factual and not driven by feelings of "illusory superiority".

> Also stating that there exists something like "illusory superiority" does not mean there does not exist "superiority". Yeah, I also studied theoretical math.

This makes zero sense and shows you lack understandings of the issue being brought up.

Obviously like anything else, driving fits on the bell curve and there are really bad drivers and some exceptional ones.

But the point of the effect is that when asked, most(>80%) THINK they are above average. If they were actually tested they would be shown this is mathematically impossible and they would not rank where they think they do.

You may very well be that superstar dev because as stated, when there is an average there exists the possibility that some are below and above the average.

> Can't say how I am stacking up against developers with same level of experience

This is very telling.. you come across as condescending to others but are unable to rank yourself vs others with your level of experience?

I’d suggest that if someone has had a 25 year career in software development and are still working in dev, it’s more than likely they sit on the exceptional end of the curve for a couple of reasons—-

One, 25+ years ago tech got the best and brightest. Early ‘00s because of high demand and good salaries, schools cranked out a lot of mediocre developers, plus offshore poor quality firms had companies snapping up nearly anyone good or bad just to have warm bodies to do what they need. The average developer quality dropped drastically.

Two, they have likely worked in many many different platforms and tech and bring a more holistic knowledge that folks that have been working for 3 years in (name whatever language/platform/framework du jour).

My career started in the mid eighties, I’m not a developer, but have worked with many over a long career and I can say without a doubt in my experience the average software dev in 2022 pales in capability to the average dev in 1984. Im often in awe at how bad they are…

> … schools cranked out a lot of mediocre developers …

I attended a very reputable CS department (top 5 in the US) and there was very little instruction on actual development skills. Most of us were not skilled developers upon graduation and had to learn these skills in industry.

Now, there were a few, rare, lower tier schools that “cranked out” developers with say C++ skills or Java, but I found most of them to be mediocre within industry and quickly surpassed by the CS kids out of better programs.

I suspect the better programs probably developed better troubleshooting skills in their grads, or simply attracted smarter people to a more challenging program who had innate troubleshooting skills. By troubleshooting I also mean that problem solving/creative engineering/inventive capability.

To me this is the skillset that seems to be the biggest difference between 2022 and 25+ years ago. I see developers today that if the requirements are not spelled out down to the crossed t or dotted i—-or an engineering plan is not drawn out in incredible detail, they are simply not productive. It’s almost robotic.

This rings true for me as well.

One thing I've really had to get over is "illusory inferiority" - I am objectively an extremely good programmer, as demonstrated by my accomplishments and career path, but I constantly underestimate the value I provide to my employer because the contributions I make don't always feel important.

As an analogy, I can imagine a slightly bored senior sushi chef who is a master at preparing fugu (poisonous blowfish). The value they provide is huge, but they've done it for so long that it does not provide a challenge.

Or, you are overestimating your contribution because fugu is 0.01% of the restaurants order and you being the super chef don't like to help with normal boring sushi.

Okay, enough analogies. Here is the thing: your 30 years of experience maybe means squat if you are a COBOL god and we are a React shop.

To stay relevant in this business you need to study. A lot. If you don't, you might end up in this situation where you contribute barely to the team but consider yourself the top dog because you don't understand what the other are doing.

My own ranking doesn't matter when I rank the other 5 people on my team in relation to one another. Maybe they're all better than me! But ignoring my own performance, 1 guy is crap, 1 is great, the others are in the middle.
> Companies still desperately need developers to make their business goals reality. This is not changing anytime soon. There has been no advancement that makes developers less relevant.

The 'low code' / 'no code' phenomenon is rising fast where the business folks are being asked to build out a good part of programs based on their knowledge of business systems.

Theoretically, if this all pans out, The developer is now forced to learn the business or is managed out of this particular job.

I've worked with several of these low code/no code things.

It does not pan out. Syntax is the easiest part of being a software engineer.

So very much this.

It takes a week to learn Python syntax, it takes 10 years to be a good software engineer. Engineering software without code is what the most senior software engineers do all the time because the less experienced folks need (want!) direction from them and they have the knowledge and wisdom to provide it instead of coding.

I think that’s harsh. There’s a place for low/no code solutions. It’s not for nothing that Excel runs the world. But I would agree that there are definite limits, and implementations don’t do themselves favors when they make short term decisions (visual representation and JSON serialized code, I’m looking at you)
Excel definitely does not run the world and most usage of excel is formula resolution, which is not programming. Of course, we may have vastly different understanding of what “running the world” entails.
"Syntax is the easiest part of being a software engineer."

This is probably the best quip I've heard all week.

I'm developing a language with "no syntax", every token is executed immediately, making it trivial to create arbitrary syntax at any point in the file (literally you could define a function that implements SQL syntax and then call it - you are now using SQL syntax).

I don't necessarily recommend it for every language but it's really interesting how little it actually affects the hard problems of software engineering.

Oh, so you discovered Lisp. Congrats:)
Even less syntax than lisp! Inspired by forth.
I am trying to explain to people I work with that these tools do not work when used for anything else than very small apps.

The reason is that they are solving easy, junior level problems. They are solving the problem of how to do this specific task that requires coding.

What they do not solve is how to develop complex systems. As a developer, you not only learn how to program things and solve technical problems, you also learn the big picture of how to develop large and reliable systems.

> Nothing further from truth.

Agreed.

> What changed is how companies react ... Companies learned that ... Companies also learned ...

Also all wrong, though.

Nothing has changed.

> My experience is also that large proportion of hires can barely program at all ...

And that won't change either. Hiring anyone with a pulse started in the late 90s and 2008 didn't interrupt that. Those will be the people who are likely to lose their jobs in the coming recession, but hiring will expand again afterwards.

This is just another layoff cycle. People are projecting weird myths about how they think things should change onto companies when there's zero evidence that they've fundamentally changed or learned anything.

Sociologically it is weird how we haven't had a recession since 2008 and all the kids who either don't remember or barely remember that one are projecting all kinds of fundamental shifts onto the next one.

>There are multiple reasons why these people got successfully hired (broken hiring, enormous pressures, etc.)

But tech job interviews are infamous for how crazy the interviews can get. Is this mainly for non-entry level positions that you're referring?

>Everybody waits for one company

The same can be said in reverse so that people are hiring just to prevent someone else from getting to hire them. If you have a milkshake and I have a milkshake, but I have all the employees that can reach your milkshake, then I have all the milkshake

Isn't a lot of milkshake going to spill and melt while you keep going back and forth with it?
Totally agreed. Companies were over leveraged when we started seeing the excessive hiring during a prosperous time. The fact that most layoffs ranged in the 10-20% range and the similar company growth during that time speaks very loudly. This was less of a end of an era, and more of a temporary correction.
barely program at all? looks like leetcode is bot getting the right people hired after all?
Programming a short example that you trained to do for a long time when exercising for interviews is one thing and figuring out how to modify a large application in a desired way is completely different.
exactly
Do You think that problem didn’t exist or wasn’t worse before leetcode?
bot => not
Earnings reports are out and FAANG companies are showing drops in revenue. So I don't think their layoffs are entirely due to over hiring or simply using a looming recession as an excuse.