Reality check: there has never been a hotter seller's market for software engineering talent. The fact that you have not landed a job does not mean that supply is not short in general. Rather than blowing your stack at some recruiter who you heard on a podcast interview, you might want to reflect on yourself and how you might be coming off in job interviews.
As far as low pay goes, yeah, welcome to the labor market. It's easy to write a blog post about how companies need to pay more, but hard to reconcile the reality that if they don't have FAANG cash flows, "market rate" for developers may not be viable, regardless of management's good intentions or lack thereof.
And with regard to bad interviews, remember interviewers are individuals, with skillsets all over the map. Once you get more senior it gets even more frustrating to be judged by someone who has a fraction of your experience. Trust me when I say there is no value in dwelling on this or getting your undies in a bunch. Suck it up and figure out how to play the game (read CtCI, practice on interviewing.io, ask for feedback) and land the job, then do the best work you can every day. Angry screeds will not change anything about the industry and will not help you.
When I graduated with my CS degree, I was _thrilled_ to be offered 50k. Now new grads feel lowballed at 200k TC. So hard not to say that the market hasn't adjusted somewhat.
At the same time, part of the reason companies even have to pay so much is because they've made interviewing so damn hard. I personally know many people at great companies like Google and Twitter who are _desperate_ to change, but they are too afraid to interview. They feel they got lucky and got through the process once and are unlikely to be able to repeat it, and they might be right. The industry has taken "false negatives are better than a false positives" to an absurd extreme and then complain there's a shortage.
It's one or the other. If you're saying "a false negative is ok" you are implicitly saying "it's totally fine if we fail to hire good developers", and you can't say that then turn around and complain it's too hard to hire good developers. Which is _exactly_ what all my recent employers have done.
This is it in a nutshell, good summary.
So many of these companies have built an arbitrary interview process that takes pride in rejecting nearly everyone, regardless of actual skill in building products. So with that criteria, yes, it is hard to hire anyone. Which doesn't mean there aren't tons of perfectly competent people available, it's just that none of them can pass the silly interview because they haven't spent 10,000 hours memorizing leetcode.
Typically someone will say "the bar is high", but that's not at all the case. The bar is in the wrong zip code. Because that kind of interview process measures nothing relevant to job performance. So the best developers, who are busy building successful products, will inevitably fail because who has time to spend on irrelevant interview prep.
Interview for the job based on actual experience and you'll find, like I do, that it's not hard to hire competent people.
The size of the company didn't matter - in fact, the smaller the company, the more difficult and onerous the process was. One place with six employees asked for a full day's work (offering $150 compensation). One place turned me down because I didn't have enough Scrum experience and the Scrum Master - a real job title apparently - didn't think I'd be a good fit.
So, "false negative" is right.
As a new grad, was I supposed to feel lowballed at getting an offer quite a bit less than that? I know senior devs who make less than that. Is this just for stanford/mit grads?
Is this just a perception issue or have they actually tried interviewing a few times with negative results?
It might have something to do with increasing property prices.
I don't agree at all. Pre pandemic I worked as a professional software engineering interviewer for a largish recruiting company. I did 400+ ~2hr interviews over about a year. We did not put forward the vast majority of people I interviewed.
Lots of people on HN, and certainly lots of people who get rejected time and time again seem to have the perception that:
- Most candidates (their friends in collage) all have reasonably similar aptitude
- Doing programming interviews doesn't offer a lot of signal, and there are lots of false negatives.
- The hiring bar is too high
Aka, "I passed all my CS classes! Why will nobody hire me!? It must be something wrong with interviews, not me!!"
All of these points are wrong. There is a massive difference between strong and weak programming candidates. Weak candidates can barely program at all, no matter what their background would suggest. We did multiple quantitative assessments. The various assessments all end up strongly positively cross-correlated. So we can tell we're getting a clear signal through our interviews. Weak candidates generally wouldn't fail just one part of our assessment; they'd fail all of them. And most strong candidates would demonstrate that in almost every section of our interview.
We passed / failed based on a ML system which tried to guess who we could place. After a couple of months I was calibrated enough to be about 95% accurate at guessing what the AI would say. Its surprising how little ambiguity there is. Only about 1/10 people were "on the fence". Almost everyone I interviewed was either a clear yes or a clear no. If I interviewed you and I didn't recommend moving forward with the hiring process, its probably not because I didn't like you, or because the interviewing process is broken or the hiring bar is wrong. Its probably because your programming skills just aren't strong enough yet. My notes were filled with "This person is amazing and I love them to bits. But we can't move forward because when push comes to shove, they just aren't very good at programming."
The harsh version of this is: The hiring process is fine. If you keep failing job interviews, the problem is probably you.
I think there's two real issues with interviewing. One is that some candidates get massively stressed out, and can't perform under pressure. Secretly my job was all about trying to help candidates relax. After 1 year I still wasn't good at it. I bet most interviewers at most companies are terrible at this.
The other issue is that most companies have no interest in hiring junior people and training them up. They can't afford it. You could hire a junior, spend 9 months paying them a (low) salary while they're net-negative to your company's productivity only to have them leave and work somewhere else as soon as their skills are up to snuff. Companies are incentivized not to bother doing that at all - which in turn narrows the funnel of people who can make it to high quality mids and seniors.
> I personally know many people at great companies like Google and Twitter who are _desperate_ to change, but they are too afraid to interview.
You know you can start a job hunt before leaving your current role, right? I personally recommend everyone interviews around every 6-9 months, no matter how much you like your job. There's a huge peace of mind from knowing how much you're worth at other companies, and keeping your resume and interviewing skills fresh. As covid shows, you never know when you might need to look for a new job.
Technology firms have grown astronomically. They’ve also built processes and systems to onboard new developers and enable them to generate a lot of value. Developers are being compensated higher to reflect the efficiency gains made my technology firms.
Is it unfortunate that firms that are unable to generate that much value suddenly can’t hire developers? Must be for those firms.
But there’s nothing wrong with compensation growing astronomically and nothing moral in it being low.
I don't think that's unique to software engineering, and I don't think its more pronounced in our industry.
The standard tenure of most engineers is about 3 - 5 years, a very short amount of time. People try and leave all the time. How long it takes someone to leave is likely a good proxy for their risk aversiveness. But people do switch a lot.
Unless you're desperate, it's best for all the industry if people don't. We can't mature the software industry hiring practices by playing along.
> Angry screeds will not change anything about the industry and will not help you.
Granted, they won't help the OP directly at the moment. But there is value in constantly calling out how broken hiring has become in this industry. Change won't happen by keeping quiet.
I do my little part (in a technical leadership position) by never interviewing using the algorithm monkeydance. I don't care if you can regurgitate this or that algorithm on a whiteboard. Because we don't do that in the day jobs I'm hiring people for. I interview based on your real world experience because at my company we build real world products. I've never hired anyone to a role of sitting in a room rewriting algorithms on a whiteboard (almost certainly never will), so I'm not going to interview for that irrelevant skill set.
To anyone who has been less than ~15 years in this industry, it's good to know that it wasn't always this way. Interviews used to be sane, based on experience. It's a relatively recent phenomenon how things have gone so wrong.
Now a deluge of engineers show up for interviews. How do you tell which ones are top-tier and which ones are third-rate? Even tech companies struggle with this problem; surely you'll have no chance.
You know you'll get mostly third-rate, because those are the ones looking for jobs. So instead of overpaying, you adjust your pay downward to compensate.
So it looks like there's a shortage to the company (because the top-tier engineers aren't appearing even though they are willing to pay), but to top-tier engineers it looks like they are underpaying.
By definition, the market rate should involve zero shortage. That said, search costs and regulatory barriers are significant frictions. In the midst of an unforecasted surge in aggregate demand and you have an explicable event.
((BTW this is why in my case, I decided to leave the UK for mainland Europe - most job offers in the UK were at little more than half the compensation from what I had earned in Germany before. And the difference was even larger when factoring in the cost of housing!)
On another market, I have a small agency, and I simply don’t see how a developer could provide enough value to a client on a typical web project so that we could bill the client enough to pay the developper that kind of salary.
That discussion motivates me to try to increase our rates though.
Edit: clarification of "justify that kind of salary".
That! Is how oversupply on one side and shortage on the other side looks.
The Interview (By Doug Milford) https://youtu.be/9fvyAqWfPtk
Working for less than market rate is a misallocation of labor. Of course this is under the assumption that your skills are not far below the average developer. If the market rate is high, there are more profitable companies out there that need the labor more than your business, taking labor away from those companies is a net loss for everyone involved (your own company loses potential customers, the worker loses out on salary, the competitor loses out on labor).
EDIT: It seems people took this to mean I think everybody should get maximum salary, when what I meant was you should get a fair salary. Maybe I don't understand what market rate means in the US.
Is that a sign of monopoly? When a handful of corporations have vastly more resources than the rest of the industry?
https://www.economist.com/business/2021/05/16/how-to-thrive-...
On the other hand, complaining about FAANG, only after failing their interviews makes it hard to take that person's intention seriously.
The whole thing reads like inventing scenarios that didn't happen or embellishing them.
> A bad interview is when you ask them the definition of some specific thing in some specific framework like “Tell me what a closure in javascript is.” then treat them like they’re stupid if they don’t know.
Not that believable, but okay.
> I once had an interviewer ask me if I was a wizard with GO, C++, Rust, and C over the phone. Then when I said I had some experience with rust, he immediately cursed at me and hung up.
Didn't happen.
> Nobody in their right mind is going to move to San Francisco, California to be a “Lead developer” for only 70k with zero equity.
Are any companies actually trying to recruit like this? And is it successful beyond just throwing up a hiring post and not getting anything? I put in a limit buy of $3000 for 1 BRK/A on a whim once.
I would never treat someone like they're stupid in an interview, but being completely unfamiliar with common programming concepts and treating them as irrelevant or trivial things is definitely a red flag.
Once a guy asked me to write out merge sort on a whiteboard and I couldn't. I didn't get the job. Surprisingly I'm doing just fine in my current position and am very productive (as much as I may say so myself) and have never heard complaints from anyone that I don't know what I'm doing.
So if you don't see a CS degree in the resume then don't ask what a closure is or to implement a merge sort in the interview. Ask them to solve a real problem. The top computer scientists didn't discover the merge sort for years or decades and you want me to figure it out on the spot? Or you just expect me to memorize useless shit like this? Give a problem a programmer would encounter on a day to day basis that wouldn't need a lot of googling. Let them figure out how to solve it and see if it works for you.
The inordinate amount of space the article devotes to complaining about 'credentialism' just reinforces the impression that the writer hasn't taken the time to know his tools/languages/frameworks at a deeper level, and is dismayed to have been found out in interviews.
1) You're looking for someone with deep knowledge of that subject
2) You don't treat it as an automatic fail when they get it wrong
If I'm interviewing for a senior role, and I ask them a few super obscure questions about the language/framework/platform I need them to be an expert on, that serves as a litmus test for their overall depth of knowledge. Those facts individually may not be required for the job, but they give a read on how deep the person's knowledge goes in general.
But, as you pointed out, I wouldn't really even put closures in that category. For JS it would be something more like, "What does '{} + 12' evaluate to?"
> Not that believable, but okay.
To me, it sounds very believable. I have been asked about defining what closures are multiple times.
I switched a couple of times between backend, frontend and mobile, and I had to learn bunch of interview questions that never came up in real life.
In different communities, there are different concepts that they love to ask, even if in the end at your day job, you rarely use them.
The JavaScript interviews are always about quirks very specific to JavaScript that the interviewer learned last week. They then act like without that knowledge you can't possibly contribute to their Angular dashboard.
JavaScript people always go through some examples of the "you don't know js" book, and they ask about the quirks of the language. My opinion is that the code they ask about would be rejected at most companies PR review process, because they are tricky, unclear, surprising. The "You Don't Know JS" book is a great book, and you shouldn't use 95% of the code in there if you want to scale your team without very-hard-to-find bugs.
Java and Android people love their design patterns and clean architecture questions, and they would be floored if you told them that you don't need 13 layers of classes just to call your backend and build a plain old Java object from a JSON.
People also love asking questions they themselves could barely answer. Yesterday, the team lead of my team had to accidentally clarify the event loop in a technical meeting, he was squirming, his clarification was terrible, yet we expect juniors to nail the question, and if they don't explain it exactly like we would, we act like the candidate is a "script kiddie".
If I were hiring a mid-level or senior-level front-end engineer and they do not know what a closure is, that'd be a red flag for unfamiliarity with a core language feature. It's on par with not knowing what a decorator is in Python, or reflection in Java.
Somewhat similar to hazing (itself an extended "interview" process). "I had to get through it, so you have to too."
During an active season (spring, fall, usually) I get one of these a day, or every other day at least. Other times it slows to a trickle--1 a week or so. Usually it's some "I have an urgent requirement for a 6 months contract position for $45/hr. with (litany of skills/responsibilities that screams shitty Dilbert-esque cesspool). This is for in person only at (place on the east coast which would require me to uproot my family and move across country)" style content. Some of the more amusing ones are for contract positions in the Bay Area--those usually have people who, bless their hearts, think they're making an effort with $75-$80/hr rates.
No software eng. experience 2015.
2016 Bootcamp
2017 Salesforce
2018 - today - our company: TS, React, Vue, NodeJS, Python, Main devops developer that brought up our docker infra.
> Didn't happen.
Yikes...
I've seen some "top performing" code, that I had to just trash... because making any changes to the hack job of top performing "just ship it" people is a nightmare.
I get some very crappy spam offers like that every few weeks. 35K to be a Java dev in Atlanta kind of thing. They do happen.
It sounds more like your company has failed to implement robust processes to catch mistakes before they're big problems to me. No individual should have the power to destroy the company except maybe a CTO or a lead sysadmin. For everything else important there should be layers of security and QA checks, with automated sanity checks on config and data for really important stuff. If a new hire can deploy stuff without multiple people seeing it before it gets to production then everyone in the company is responsible for accepting a process that can lead to serious issues.
> This experience is fairly common.
Is it? I've done a fair bit of interviewing on both sides of the table, and can say with complete honesty I've never heard a curse said in anger in any of them. I've also never heard of it happening from a co-worker or friend.
Guy proceeds to seriously ask me about low-level memory management, i.e. ARC (Automatic Reference Counting) vs. other methods (this was roughly 2013 or so).
I attempted to give an answer from what I knew just reading the docs, as I hadn't written complex-enough code for it to matter. Mentioned I didn't have first-hand experience using it, so that's my frame of reference.
He basically laughed and went off to tell the recruiter it wasn't worth having me finish my interview loop.
I understand for an experienced iOS engineer at the time, those would've been entirely valid questions and it'd be reasonable to expect enough time spent using them that a quality answer could be given.
But I was honest in saying I hadn't gone that far and this was for an internship.
Of course that was also when I realized that in the real world, there are small companies who tend to want FTE-level of productivity out of young engineers/interns for that pay level who aren't experienced enough to know it.
Edit: Coincidentally that same day I reached out over Twitter to the CEO of a company I admired, also in SF, and asked if I could just tour the office since I was in the area.
That CEO spent his lunch hour with me, had a good laugh about the interview story, and worked with one of his teams and recruiters to get me in the schedule to interview. Got an internship there the right way, spent two years interning, went full time for 3.5 years, and that was the beginning of my full-time career.
Some internship candidates would have been able to answer those questions.
I interview a dozen or so internship candidates every year, and i see a lot of variation in what they know. They're all good students from good universities, so they've got a grounding in theoretical computer science, and they've all done some coursework projects and one or two group projects. But some have done a lot more than that. One was into competitive programming. One had built a business around automated eBay sniping. One had built a few iOS apps that were making money.
My approach is to hire anyone who has any practical experience (a group project is fine) and doesn't try to bullshit me. But i could imagine some people focusing more closely on the handful of people with deeper experience. It depends on what you want your internship programme to do.
I assume it was not, in fact, good work, as I did not progress to the next interview.
I think a phrase like "typical" would be inaccurate; possibly "common" as well. But, I think, most people who have interviewed a decent amount have at least one story like this. Cursing is another step beyond, but its not insane; many of the people on the other end simply get drafted, they don't want to be there, and in some companies even see you as a threat to their career advancement.
I understand that these are probably outliers but I will not be reapplying soon.
Google is purely consensus company, where one "outlier" can literally block staffing of a whole department. So if that one person was against you - you had 0 chance.
"Screw you, you little shit, I can't believe I wasted my time with your worthless ass!" and hung up that would be one thing, if they said "oh damn it" and hung up that would be another, both still rude but quite different. I'm assuming of course it was probably something like the second but the phrasing makes it sound like the first.
I was surprised to learn that in Northern Ireland, you are legally required to ask candidates whether they are Catholic or Protestant. If they decline answering, you must make an educated guess and document that. The goal is to ensure you are not hiring all Catholics or all Protestants.
Northern Ireland is in a unique situation. The Troubles were horrible. I can’t imagine having to write regulations to put a society back together. I should not judge the wisdom of this approach. It is just so different from what I am used to in the U.S., that it is hard not to be confounded.
It’s the first time in my life I’ve ever met someone (over 10yrs old) who considered “damn” to be cursing but apparently they do exist.
But I have been laughed at on a phone interview before. It was for a game dev job, and I was told by the recruiter ahead of time "They just need anyone with any game dev experience at all," so I didn't spend too much time studying for the interview. I had developed and released several full games, even popular ones, but they were all 2D Flash web games.
So I was completely unprepared for 30 minutes of being grilled on 3D graphics math and console development. I answered to the best of my ability, and could have done better if I hadn't been misled by the recruiter, but no, it felt like I was being toyed with by the interviewers (kept hearing laughter multiple times after I answered).
I got a different and (equally good) job in the industry and the company that interviewed me ended up closing down about 6 months later, so it worked out for the best anyway.
Very odd experience and the only time I've never had someone get angry in a context like that. I guess if you're a recruiter and recruiting for a job that lists winforms as a requirement you may think that's a super critical thing and not have any conception of the relative importance of knowing things like that.
I didn't go forward with the recruiter and I've never bothered to check what winforms are, but I assume it's some kind of library for creating GUIs in Windows and I further assume I could have been productive with it in a day or so.
Be curse at because I was not NEVER.
Didn't this interviewer review/read the CV/Resume before calling?
Is this really accurate? C++ is a very different language than even Java, not to mention Python or JS. Languages have their own quirks and attributes that often matter at some point. Especially C++.
I am on a team where we are constantly building stuff with new technologies that nobody on the team has learned, so a certain extent I understand the sentiment, but we are under no impression that we are doing that good a job at it.
But many places are using C++ only because something about the problem domain requires it, often performance. Understanding C++ and cpu architectures well enough to write high performance code is a completely different beast than just understanding c++ well enough to write code.
Understanding C++ syntax is a long ways from writing C++ that's not full of memory corruptions, as others have mentioned.
So it's not just "train somebody in C++", it's "train somebody in C++ and writing memory-safe C++ and writing fast C++".
I notice this more and more in hiring process. Teams expecting new member to perfect fit wrt hard skills over soft skills. Frankly, hard skills can be taught, soft skills can’t be taught and take long time to modify behavior.
If a person is excited about technology and is familiar with translating ideas into code, that’s really all that I’m really looking for. Writing good code, understanding OS, networking etc are things that can be looked up and learned by people who are motivated to do so… there are so many resources to learn from.
One caveat here is that for “senior” hires, the expectation is opposite: not that they write perfect idiomatic code, but they’re able to write solutions. I think the practice of less technical interviews for higher level seems somewhat paradoxical: you want your Software architects and Principal Engineers to be able to code with a degree of competence.
C++ requires you to think quite a bit about memory. Modern C++ not so much. However the kind of job that requires C++ will probably require you to know some hardware / embedded which is a completely different domain than web devs and could make java / python transitions even more difficult.
You can pass everything by value, write very child-friendly C++ code, using std::map like Python dict and std::vector like Python list, and still VASTLY beat the speed of an interpreted, weakly-typed language like Python.
But nobody does that. Chances are someone on the team takes a shit about unnecessary memory copies, the code will be littered with a smattering of pass-by-reference and pass-by-pointer, there will be std::shared_ptr, std::weak_ptr, std::unique ptr everywhere, and if you're lucky some intern will have committed some C-ish C++ code that will leave you gift of memory leaks, and now all of a sudden you need everyone to understand all the nuisances of the language and how memory works.
The inexperienced developer will write code that is subtly wrong. The senior developers will spend more time debugging than the time would take to write the code themselves. The new hire will effectively have negative productivity. And when the new hire has learned enough, s/he will get a new job. The comapny will not have recouped the investment on the developer.
Realistically, the majority of developers spend their days doing rather mundane work with CRUD/data-munging probably being a good description for most of it (regardless of whether it's server/desktop/mobile/web) which isn't rocket science. Now if you need an expert to write a memory management system for language X on OS Y, that's a different story.
If you are at a company with highly automated style checking, strong developer education resources, and a culture of using sanitizers all the time - you can let people learn C++ on the job.
But if you are just writing code with code review from other team members as your only option? Oof. C++ is a barrel of knives. Incredibly safe looking code can actually be filled with horrible horrible nightmare bugs.
Someone experienced in C++ will be able to pick it up a lot faster than someone transitioning from the Java world, but there's always going to be a fair learning curve for a new hire.
Whenever I start interviewing, it takes a few fails before I finally realize: my talents are not (at all) what interviewers care about. Talent is just the icing on the cake. Once I remember that, I focus on being personable and start getting multiple offers. It’s always been like that.
I don’t get how people can see the plethora of individuals under 10yrs experience in SWE and other tech roles in SV/NYC/SEA with incomes of $250-600k/yr and think this happens without a “shortage” of talent.
Shortage in quotes because it’s hard to define in context of supply/demand but it’s clearly the case that devs have a lot of bargaining power.
Reasons for failure vary, you don't get much feedback but when I've gotten it it's been distributed across coding/systems/behavioral.
I've also been rejected at resume round by companies like Instacart and Coinbase.
The interview bar has gotten insanely high it seems. And I left Google way back without anything lined up assuming in this job market I could waltz into a good job with some modest prep but that has not been the case.
I objectively have top credentials, and I find tech interviewing an absolute nightmare. The standards have gone through the roof and one slip up and you get dinged. And the system is way more arbitrary and subjective than anyone admits.
Now, this isn't a woe-is-me story becasue to your point, there's a lot of companies paying top dollar and I have a decently paid job. Furthermore, I'm not failing interviews at random startups but as senior engineer at top companies that would probably offer $400k if they made an offer. They have the right to be extremely picky and subjective, but let's at least admit that they _are_ extremely picky and subjective.
The "I'm a HM and can't hit dev targets", reeks of ignorance as to your own process. I wonder if you do things like tell your interviewers "a false negative is better than a false positive" ? Or let one interviewer use some arbitrary criteria to dock a candidate and then pass on them because of one bad score? Because you probably do lack perspective on how many good devs your company is rejecting if you're only sitting on the HM chair and not seeing what it feels like to go through these rounds as an IC SWE.
Software developers are starting to commonly earn doctor-like salaries. Doctors typically burn ~12-15 years between school and residency before they start getting paid serious salaries.
A top 20%-30% software developer can be earning $150k in their mid to late 20s, outside of the Bay Area.
It's no surprise that the hurdles are going up for such high compensation. Software devs in the US as a mass employment field (1.5m people) are the best paid large group of people in world history. Combined wages (not total compensation, that's far higher) for the 1.5 million software devs in the US is in the neighborhood of $215 to $250 billion per year. It's doubtful anything like this concentration of huge globally important industry dominance + very high pay will ever been seen again anywhere else in the world, it's an outlier economically to put it mildly. Enjoy it while it lasts.
Employees don't seem to have enough bargaining power to meaningfully control working conditions, though. Maybe these are worth a ton of money to the company, or such desires are an outlier. But here is my experience:
I'm a professor of computer science, and frequently get recruiters trying to get me to jump ship to industry. I'm open to it in principle. I'm reasonably happy in my job, but there are certainly things I don't like about academia, and the pay is not industry-level. But it's generally a rewarding job, and has various perks, like private offices and considerable control over your own schedule.
A question I ask recruiters: I have a private office... could you match that? So far, the answer has always been no. They can double or occasionally triple my salary, but they can't offer me a private office. I am not sure what to make of that. They are willing to offer me $100k+ over my current salary, but are absolutely unable to offer me an office with a door.
One was at a euro stoxx 50 telco. They had a desk with a single plate that 10 people sat at. I had to sit with the project team I was working with who, unfortunately, weren't all the same height. But the plate could only be adjusted to one height for everyone which was way too low for me. Every day at the office, it felt like working at a coffee table and my back and knees hurt like crazy. I was fighting the corporate system for half a year, including making a fool of myself in front of the global director of human resources and company medical officer. This was ultimately unsuccessful as I was a freelancer, not an employee, and earned me the scorn of my direct manager. The whole experience was so undignified and humiliating that it was ultimately one of the main reasons I quit that gig. After all I was just trying not to have to endure physical pain.
The other occasion was at a well-known Wall Street investment bank back in 2010. They put the computers in the space under the desk that should normally be legroom and every day at the office felt like a long haul flight in economy class.
My boss's boss, a partner at that firm, privately owned a floor in a highrise residential building in Tribeca. Yet, during the work week, he still basically never got to see daylight. Our business unit wasn't high enough in status to be able to swing a work area on the outside of the building that had daylight. He had an office but still no privacy. One of the walls of his office, facing his underlings' open plan space, was made of glass. Glass walls is something that these firms do these days even for very high-ranking executives to create witnesses in cases of allegations around what may or may not be happening behind those walls between colleagues of opposite gender (or preempt those kinds of goings-on or allegations).
You might have more luck if instead you asked about working remotely full-time. It's not the same if you want to go into an office, but companies are seriously thinking about their post-covid office plans.
Small and mid-size companies have a different problem: people haven't heard of them and don't know to apply. My company is in this situation. We have a good culture, I think, and pay very well but people don't know about us or don't think of us as a "tech" company, even though we do quite a bit of innovative software development.
The difference is that big tech companies aren't meant to be applied to over the internet. Seriously, it's like throwing your resume into a black hole. Referrals are the same way, honestly. The only good way to get hired is to get a recruiter to message you on Linkedin. I have never got an interview at these companies from applying on their websites and have made it to the first round of interviews every time if I was contacted by a recruiter.
And because of that, it should be no surprise that nobody is scouring the internet to find your company and send in an application on your company's website. Everybody has been conditioned for that to essentially not work. Even though it's expensive you really should be paying third or even first party recruiters.
>A bad interview is when you ask them the definition of some specific thing in some specific framework like “Tell me what a closure in javascript is.” then treat them like they’re stupid if they don’t know.
FAANG companies do not interview like this. I've done interviews with most of them twice in the last 5 years and all questions are the typical algo stuff.
Then his whole rant about credentials... I am a self-taught dev with no degree, none of my interviewers ever cared about that. Every interview is about whether or not you can solve the algo question.
If I am somehow worth personal attention as a not terribly impressively pedigreed and inexperienced developer, are they really dumping seniors through crappy filtering software and missing them there?
Except almost nothing outside of some amount of resume filtering fits his points. Seriously, go to levels.fyi and look at the pay of the FANGs (ex. Amazon). You think his bad pay point is a problem for them?
I had a recruiter try to lure me for a $130K “senior” role on the east coast in the US. I earn several times that.
I have a job now (and by all accounts my employer is really happy with me), but the interview gauntlet I had to run to get here was absolutely ridiculous.
> I literally can’t relate to this on any level
Well that would be the expected outcome, no? The author claims a problem exists in hiring and sets out articulate what that problem is. If the problem exists, then as a hiring manager, it's a good bet that you are, at some level, involved with that problem. For your stance/perspective to lie anywhere from a harsh opposing view to merely unable to unable to endorse the author's perspective ("what is water?") would be unsurprising.
(Note that this is true just as a matter of logical consistency and is not particular in any way to hiring itself; try replacing "hiring" here with "skub" and it's still true.)
Because all the issues the guy pointed out I am on receiving end of them right now.
And although I've been in leadership roles before and started programming when I was 6 years old (my dad taught me), I started lately to see if sending my applications to junior developer roles will get me any replies (people don't even tell me they got my application, except the occasional robot).
Some of them are actually legitimately senior, despite short tenures on paper - but many are barely entry level qualified.
Second, at this point in my career developers at large companies aren’t expected to write code. Save that for startups. Instead developers are expected to debug things and string tools together like a homemade necklace. If you are an established company and want somebody to write original code you have a lot extra work to do to ensure a good cultural fit.
Grad students and postdocs seem like a fairly untapped source for tech recruiting, especially outside of the CS department. Physics, neuroscience, econ, biology, and many other fields now involve lots of programming and data analysis, sometimes under demanding conditions (real-time or huge, noisy data sets). Many of the people are smart and highly-motivated, but making a tenth of the numbers you quoted (and with rubbish job security to boot). It should be like shooting fish in a barrel.
And yet.... they don't seem to be on many company's radars. I'm the only one in my group who is ever contacted by recruiters, and it's an undergrad CS degree.
Yes, you'll have to screen to figure who tweaks "the script that gives the numbers" and who's more like a developer. Recruiters might need to put in a little legwork to figure out how different kinds of researchers map onto open reqs. You might want to somehow prep non-traditional candidates for a developer interview, or figure out an on-boarding track. But you can afford a whole heck of a lot of that if a $250k/year job is sitting open.
Flood the market with very good but not exceptional workers, and the top salaries won't change much.
Flood the market with exceptional workers and it probably won't change much either, FANG will just be even more selective with their top salaries.
Top devs have a lot of bargaining power not because companies need some "X amount" of development work done but can't find anybody who will do it. They have bargaining power because those companies are competing against one another and they're hoping the next billion dollar idea will come from one of _their_ employees first.
If you aren't playing this kind of roulette, I don't understand why you would try to compete in the same job markets. You can get developers for far less. And yes that may mean moving elsewhere, SV is obviously heavily selecting for such developers (people who can get those salaries will tend to move there, those who can't will tend to be pushed out).
If you are playing in that space but you just can't afford to pay for its inputs then it doesn't automatically mean those inputs are in a state of shortage, sometimes it just means your business does not create enough value to to pay for said inputs. This is the market's way of telling you to fold. Capitalism is a harsh mistress.
FAANG companies - filtering candidates by asking tough LeetCode questions, which is understandable. But what is with Startups? If someone can solve hard LeetCode problems why would they join Startups? They will join FAANG. Startups are blindly copying FAANG before becoming FAANG themselves.
Not sure that I agree it is understandable but I definitely am glad they make this bad decision. I dodged the bullet on interviewing with a FAANG and failing on one question (the recruiter told me it was the answer on a single question that kept me from getting an offer) after doing an onsite in SV.
I did not know what I was worth and would've felt compelled to accept an offer that would've been 30-50% less than I could command at the time and I would've had to move somewhere with 4-5x the cost of a home than where I live now. I didn't get that offer, and after a little bit more time I got an offer somewhere where I earn 2-3x as much as I originally said I was worth to the FAANG (based on places like glassdoor, etc.).
The culture is better, I can work wherever and whenever I want, and would have to go out of my way to not make impactful decisions that go to prod for millions of customers multiple times a week. It'd take 2-4x my base salary to get me to walk, which I could possibly command, but I don't feel any desire to look because I didn't fall into the FAANG trap and enter a cycle of pretending consultants selling quiz books know what software engineering is and jumping to be able to survive in SV.
I messed up something on a whiteboard with an apathetic interviewer about a special tree inversion or something - who gives a shit - and I have been extremely happy that happened every day since.
[0] on the level of "here's a list of strings that are names in Lastname, Firstname format, turn them into a list of Firstname Lastname", or something dead simple that's designed to definitively rule candidates out
Uh, what lol? Is this really what it's like to have HN brain? Not everyone in the tech industry is just working their way up to a FAANG.
> The lack of faith in our fellow humans is disgusting.
This kind of catastrophizing and dismissive language makes me want to ignore everything the author says. If you think being evaluated in an interview setting is somehow unfair, I think you should consider whether your attitude is the problem. If you are actually good at leetcode and continue to fail onsites, you're almost certainly giving off red flags in some other behavioral category.
At my (FAANG-ish but not in the acronym) company, many of the candidates we fail are leetcode gurus who have a negative vibe. Maybe they're technically pretty good, but they have an ego on the level of Linus Torvalds. Or maybe they trash talk their current team or boss, or avoid giving straight answers to simple questions about their background. Or they've got 8 years of experience but can't talk about anything they did to grow the younger people on their team. Maybe they launch into brain-dumping a solution they memorized from a practice problem without explaining their approach. Or perhaps they are aggressive and stubborn when given corrective hints.
As a dev who will be on the same team as the candidate in the event an offer is made, my primary incentive is to vote no on any assholes I cross paths with in the interview. I don't give a shit if my no-asshole standard means the company needs to spend another 3 months and $100k on recruiting costs to get an equivalently skilled non-asshole candidate for my team. I consider those costs part of MY total comp.
Beyond the junior level, success usually means working well with others and bringing a growth mindset for yourself and others to each project. Mentoring others. Learning and teaching. Being a steward and doing unglamorous work for code health. Slinging feature code is a minor part of it in big companies, so you need to figure out how to signal all these other forms of value in the interview. And avoid sending out red flags.
The industry is rife with credentialism--but it's more due to the extremely self-centered approach developers use. I don't mean self-centered as a colloquialism for "arrogant," I mean it as in they tend to hire people who resemble themselves (i.e. their skillsets) rather than who is best for the job. And the credentialism changes in different regions/tiers of tech companies. That's why FAANG tend to target elite private school grads, and why line-of-business shops tend to target Programmer/Analyst III types.
There are gatekeeping algorithms in resume filters that lead to a sort of hivemind in the community. On the other hand, a ratio of 5:10,000 could just as likely indicate a poorly presented resume as bad algorithms.
Interview questions are problematic. The author has a big miss on the rest, though. Asking a person to implement Japanese Go (or anything, really, for which it is applicable) with flood-fill is exactly the same as asking them what a closure in Java is. It's just a pig with lipstick on. And that is a problem, of course. And completely omitted: the criteria that establish just what progress toward a solution counts as acceptable at a given level.
Education is inaccessible, probably the only point of the author's I can't really quibble with too much. Companies are being exceptionally short-sighted here, and doing themselves a disservice.
Can't argue with the last bit about pay and benefits, either, really. It gets better the higher tier of company one goes to, but even at FAANG engineers are undercompensated (though arguably perhaps not suffering from poor benefits).
But 50% can't do FizzBuzz and many do not fit into our environment of a small team where we do not need (can't use) specialists (yet).
If you only want to recruit from the "best 20%" [1], you can only recruit the best 20% of the people who apply to your job offerings, which is different from the best 20% of the market - most founders I know want to recruit the best 20% of the market though and fail.
[1] It's unclear to me what "best" means.
Filtering out bad candidates are the best outcome, the absolute worst time-sink for everyone involved is getting a bad hire. In a past life, I joined an organization, and my cohort included a bonafide conman with no prior experience, or requisite skill. The man could talk himself into (or out of) anything. It took a surprisingly long time for the team to realize he was getting other team members to do his work for him in the guise of "needing help" (several weeks).
The companies doing the hiring see a lot of trash applying and take all sorts of steps to filter it out. The trash keeps applying everywhere, the companies try even harder to filter it. The companies see the filters as saving them time on interviewing trash, they don't see the good ones being filtered out.
I'd like to see some sort of meaningful certification of developer skills, but it would be awfully hard to do without being subject to being gamed.
How can someone possibly call themselves a programmer (let alone a developer applying for a job) when they can't even pseudo something like fizzbuzz ? How can they use any API, tool or even copy code from SO without knowing how to write a foreach and a conditional inside?
Companies don't want to take on the burden of training junior devs and then complain when there aren't enough senior devs to go around. Obviously it makes sense from a business perspective, but taking a step back, training junior talent in this field should be a top priority for everyone.
Obviously it is not a perfect substitute, but the senior is not likely to be replaced soon.
Any programmer with enough experience can become competent in any programming dialect fairly quickly. But it's the level of knowledge of specific frameworks relevant to projects that is what we really should be a measure of competence.
Having gone through the job hunting process recently i did find this a bit frustrating.
Ok, you want a 'JavaScript' developer... Thats like walking into a restaurant and saying 'I'll have some food please'. At least some places made the distinction of throwing in React or Vue or Angular somewhere in the posting. Sometimes all three!
What does it mean to have X years experience in node ? I use npm all the time, does that count ? I assume they mean the express framework or it's cousins, but almost no job listing mentioning node spelled that out.
Same applies to Java - probably the most widely varied language in terms of use cases and contexts. I've built some web stuff in Spring and Hibernate but I know nothing about its use in embedded systems.
Companies use Leetcode because they don’t want to pay for experience.
- Being in Outer Nowhere. It may be a nice place to live, but if you go there, you're trapped. No other employer unless you move.
- Being in an obscure technology niche. If you spend five years working on railroad locomotive motor control, you have a hard time getting a job afterwards.
- Going to a company that's in a mess and has no one with a clue. This is a setup for either overwork or failure.
- A staff job, rather than a line job. At a "tech" company, developers contribute to revenue. At a company that just has an in-house IT unit, developers contribute to cost.
1. Too much reliance on automated filtering of resumes
2. Companies asking for too much years of experience with specific tech/language/stack
3. Developers dismiss other developers (for using javascript, apparently?)
4. The 'asking about language trivia' interviews are bad, it would be much better to make candidate solve a small task from scratch
5. Restatement of (2) but with individual engineers instead of companies
6. Companies don't comp the employees education enough
7. Lowballing everyone's offers by default to save on labor costs is bad
What is interesting to me is that this is NOT a FAANGMO criticism. The point that applies the most to FAANGMO is probably 7, but even there the lowballs are not that low. Also fairly amusing is the suggestion to stop asking programming language trivia in interviews. Made me double-check the year of the article.
That being said, one thing I have noticed is the insane pickiness of companies these days. Series-A startups that are very likely to die expecting FAANG-level coding skills but with out FAANG-level compensation or career progression opportunities. Startups that run on AWS refusing to hire experienced developers who do not have AWS experience, but have delivered plenty of robust shrink-wrapped hardware/software product. Consumer-oriented startups turning up their noses at devs with enterprise backgrounds. Young, growing companies taking 6+ months to hire, waiting for the perfect unicorn candidate while they can be hiring more realistically and adding value (and going to market faster) much sooner.
The interview loops commonly run 5-6 hours, for even the smallest of shops, and time is wasted on banal 'culture-fit' interviews (read: we won't hire you if we feel like we can't hang out with you after work; we won't hire you if we don't feel like you are 'one of us'), ridiculously hard DP-type questions that almost always require one to have solved the problem prior, poorly-trained junior interviewers who are lacking in the background needed to properly evaluate interviewees' prior work experience, and so on. One is left wondering if such companies even intend to hire!
Unless they have a truly great product at hand, the only ones applying will be the ones desperate for money. But no good developer wants to work on some potential shovel ware that's dead on arrival.
There's so much software being made these days, and most of it isn't all that useful to be honest. There are also so many old century companies still failing to adapt to the internet age, trying to force their way into it with half baked copy cat strategies. I'm not going to put all my passion into someone else's dubious pipe dreams or some vision-less experimental venture.
Good developers know they are valuable, and that their work carries the whole product. Jobs at companies that make beneficial, useful software are usually highly contested, but for companies that struggle to attract developers the issue might be more then just the job market.
Remember that you pay a mechanic not to tap your car with a hammer, but for the years of experience to know where to just gently tap your car without breaking anything.
We just make more money and can generate a lot more income.
1 - Pay
2 - Work life balance (incl. remote work)
3 - Strong peers
4 - Control in _how_ things are done for senior developers
5 - Efficiency
I'm pretty sure that most companies are, at best, 1/5.
At some point there just aren't enough qualified, talented, experienced, good developers left to hire, because they were already hired. Some companies simply have too many developers, and the bar already isn't high. They think that just because they can afford to pay a developer, that that's what they should be doing, rather than reorganizing and utilizing their existing resources better.
Want to become a plumber? You'll have to apprentice for 4-5 years (at minimum wage) and work 2,000 hours and/or 250 classroom hours. You can then take a state-accredited exam and become a licensed journeyman plumber, renewing your license periodically.
Want to become a software developer? Go to 130-440 hours of boot camp classes with no on-the-job training. Congrats, here's your insane starting salary, now go struggle to make a rudimentary web app with no idea why somebody keeps asking you to run this thing called the "ping command".
If they’re totally unfamiliar with the problem, and yet they make significant progress in just one hour that should be interpreted as a good sign this person would provide a lot of value to your company """
I think this is extremely important. A developer that can make a lot of progress on something they haven't seen before is often times just as good as a developer who can tell you the big-O efficiency of reversing a red-black tree off the top of their head. Although the latter may indicate a very interested systems-level hobbyist, which is also an excellent value in terms of an engineering quality but impossible to tell from a whiteboard interview if they're a hobbyist or if they just studied.
I’m not really interested in whether or not they know this. I’m more interested in whether they can explain it to me.
I have never been cursed at for anything by an interviewer. I have never heard anyone I know tell me they were cursed at.
The older guy who had his school paid for? Guess what? College was insanely cheaper back then. Also, it was extremely rare. Today, all the education you need to learn any language is available for free in any medium you like. Even CS fundamentals.
The companies looking for 5 or 10 years of experience with a language aren't looking for someone to "get cooking" and learn as they go. It's true that most experienced developers can quickly pick up the syntax of a new language and start writing code quickly, but every language has its nuances and pitfalls and you're not going to know them all after a month or two of writing code.
There's some shortcomings of the algo-oriented interviewing practices FAANGs are famous for, but IMO one of the things they get very right is that language/stack knowledge is considered less interesting compared to general problem solving skills (and I say that as someone who failed to get an offer on his last round of trying).
Two things I learned here: 1) If I didn't know already someone at that company, I would still be clueless why I wasn't accepted. 2) The first hiring stage at big companies is indeed a silly keyword filtering process.
It's hard for me to fathom that such a large proportion of candidates are terrible.
I’m now in upper management. I’m told I can hire as many Indian developers as I want (based in India) but must limit my US development team. Why? Cost of course. There is no real shortage, just an attempt to clamp down on real wages.
If by "clamp down on wages" you mean control expenses in a general sense, i guess you're correct, but you sure are making it sound sinister.
On the one hand, recruiters spam you with emails without a single mentioning of any language stack. At the other end of the spectrum - "at least 10 years of experience working with X is a must".
It makes it difficult for experienced developers to hop from one language stack to another. And then we see comments on HN like "I love Clojure/Rust/Haskell/Julia/Elm/etc., but I'm getting paid to write ... in something else"
If you're a competent dev, move to a place with a good tech scene and you'll do fine.
Also, if you are even vaguely talking to a recruiter (e.g. via career fair) then they are not going to screen you using an automated system.
In any case, it's like an arm race for SEO. What was once a useful measure will lose meaning as everyone adopts these tools.
You are still quite young, it doesn't hurt to take 1-2 years to build your experience in this industry before going to top companies. And believe, they are not that picky.
When you are a college student, it is really hard to distinguish yourself from your peers, unless you are truly outstanding, otherwise most resumes look likes clones to each other.
All that is before any financial aid, and MOST students receive grant money (https://nces.ed.gov/programs/raceindicators/indicator_rec.as...).
There are a lot of people make bad financial decisions around education (I was one of them at one point), but if one is willing to constrain their decisions to in-state options and are able to get some of the financial aid then college education (espicially in STEM or Health careers) remains a good tradeoff. Going to an out state school or a private school without huge financial incentives to go... well, understand you are buying a luxury good and status, not making an investment.
Besides, if the author is proposing that companies pay for education, poo-pooing $8-10k in grants is insane. It is easily 100% for some part time program, and is a huge chunk of the cost for even brand name in-state programs at the undergrad level.
Edit- I'm not saying student debt isn't a major problem, it is. However, it remains unnecessary for most students to go into horror story levels of debt to get a degree, especially if they are able to work while going to school or live rent free with relatives. After all estimated costs for housing, food, and other living expenses dwarf the tuition costs ($18k/year at UW).
You can say "oh you're an aspie. Oh you have gaps in your resume". Ahh... exactly how desperate are they if they can pick and choose while having such terrible in-house talent? The pay at these places was pretty terrible. Looking at their history, they often resorted to using off-shore people. Most of their upper management are really just family members making a passive income from the company. None of this suggests to me any real crisis or shortage in labour, just people wanting to keep raking in easy money.
It looks like you presented yourself like someone who's looking coding job without human interaction.
A startup actually cares about building teams and cultural fit. If you're not interviewing them, then you probably don't care to fit into their team.
However: "Furthermore, if you really want a C++ developer you can just expect a developer to learn C++ on the job if they have any adjacent experience with any other language."
C++ is an exception. Too many foot guns.
I once applied for CEO of Microsoft and got told I was overqualified because I ran small businesses.
I have nothing against said workers, but the way the US manages H1B visas is broken IMO.
I suspect the actual garbage rate was at least 90%.
Admittedly, I do not live in a tech hub and relocation is not an option.
But I have a story myself: A certain company that is probably in the top100 biggest of the world, one time attempted to hire me, but their hiring process was a mess and they forgot me in the middle.
Then I noticed they kept complaining on media about not finding anyone for that job. 2 YEARS later, after they posted another complaint, I decided to apply again, and even mentioned the previous hiring process.
The HR department said they were sorry, explained that the previous time it was a contractor and they were bad at their job and got fired. So I thought this time I would get hired.
Went through their entire process... and then HR sent me a sad letter, that the headquarters in the company home country, blocked my hire because it would violate policy.
The policy in question, is that for that job, people needed experience. But also, they needed a local. But... they were the first company offering that particular job in the country, ever. So you have this company trying to be the first company to hire for a particular job in the country, but wants someone with experience, complaining endlessy about it on the media. I felt bad for the employees that were dealing with that bullshit.
(the job in question was Game Producer, I have a bachelor degree for it, but back then this company was the only company in the country with such job opening. Some other game companies DID exist in the country but all of them imported producers from their other studios, so for example there was some french and canadian producers in the country)
Is this a good example? Isn't "what is a closure?" more of a smell test "do you know the language" question?
Maybe asking "oh you know python? Tell me how to implement and use a metaclass" without access to the documentation would be a better example.
Oh well, good luck hiring python devs :)
I'd agree more on the closure part in javascript though.
If you are a decent developer, and you can't find a job, one of two things is happening:
1) You are being too picky: You're applying for jobs out of your league or that aren't a good fit for you (yet)
2) You need to fix up some skills. These could be coding, or they could be working with people, interviewing, presentation, etc.
When I applied for jobs, I fired out 140 applications in the space of 7 days and had multiple offers to talk (and then jobs) two weeks later, and I have no degree. But I didn't have fantasies about FAANG and driving a Tesla in two years, I applied at small companies that needed people like me. 5 years after that, I'm making very comfortable money from moving up gradually to better work and now have an hourly that is FAANG competitive. (I did freelance for 10 years previous to that, so the FAANG competitive compensation was 15 years in the making). People are impatient and don't want to look at their own assumptions and decisions critically.
The work you do at a FAANG is generally much simpler than what you prepare for the interview. If I were them I would just split the streams: hard interviews and high pay for incredible talent and just pair programming / entry level pay for entry level developers.
I have senior engineer friends who got hired at Google for basically doing overpaid crud API all day. You could have that for a fraction of the price and without wasting a senior's time on that crap.
FAANGs complaining about lack of developers have only themselves to blame. I rarely heard it's a problem for them, though: the high salaries attract a never ending stream of talent willing to prepare for whatever interview they can think of.
Smaller companies with lower compensations and less valuable stock have much bigger problems. Finding people who are able to code is not trivial if you don't have FAANG's money.
You have no idea how many people I've seen coming to mid / senior interview (no algorithms, just pair programming) lacking basic programming skills.
! 8/7/2020 https://medium.com
medium.com###credential_picker_containerLooking forward to reading the article they write afterwards, but I can tell you it won't look like this one ;).
I'm in a position to interview candidates. It is indeed very difficult to find quality developers, both junior and senior.
Also, what company is only paying 50-70k to Juniors but 300k to Seniors? It seems like most companies that pay well do it across the board, not just for Seniors.
1) Most companies don't want to do training - like General Motors etc did in the 40s/50s
2) Most companies don't want to pay doctor/lawyer style salaries
3) As most software is closed source as an industry we over produce and throw away a lot.
4) Ageism is rampant - doctors or mechanical engineers can find jobs after 45
5) Can use this to lobby for easier visas for immigrants to lower salaries
Well, here I am. 11 years of PHP and counting
>You should be giving people obscure algorithms in interviews. For example, ask a candidate to make a playable game of Japanese GO, and ask them to use flood-fill.
In my opinion, asking algorithmic questions in interviews for say a front-end development position is one of the core fundamental problems of hiring right now. Asking someone who will be spending their time taking Figma prototypes and making them work with your API or backend is what most front-end/web developers will be doing.
If anything, algorithmic questions are exclusionary and do not tell you anything about a developers ability to solve problems. Oh, you remembered an algorithm from your compsci classes or you went to one of those GitHub interview prep repositories and memorised some of the things companies ask: well done. I have friends who work for companies like Facebook and Google, they all "prepped" for their interviews like they taking an exam.
What about the self-taught developers? You know the ones who did coding bootcamps, courses that Twitter developers are flogging for a few hundred dollars to help you get better at Javascript and CSS. Algorithm questions are biased towards academically taught developers, not the ones who taught themselves (and in web, there are so many self-taught developers).
The honest truth is the times that you do need an algorithm, you are going to look it up. I can't think of a developer that I have worked with in my 13 years as a front-end developer whoever solved a problem with an algorithm they just knew off of the top of their head. Problems in web land are solved with Google and trying things until they work.
Part of being a good developer is knowing what to type into Google, not the ability to recall everything like a robot.
I can do a basic sort, I can do a FizzBuzz and that's really it. Unless the job specifically requires writing algorithms on a day-to-day basis, you can use StackOverflow, lift the code from a blog post or install an Npm package.
Part of this post seemed to be pieces of truth sprinkled with what are clearly exaggerated claims and lies. I seriously doubt the following quoted situation happened:
>The general rudeness is ridiculous. I once had an interviewer ask me if I was a wizard with GO, C++, Rust, and C over the phone. Then when I said I had some experience with rust, he immediately cursed at me and hung up.
An interviewer didn't curse the author because he said he only knew a little bit of Rust. This just seems completely fabricated to me.
All of the problems when it comes to being unable to find developers or perceived skill shortages usually come back to the hiring and interview process. Why companies feel the need to subject a developer with 10+ years experience to a multi-stage interview full of traps designed to make you slip up so whoever is interviewing you can feel superior defies belief. If someone has been working for 10 years, I think you can accommodate them with a more streamlined interview process that doesn't waste hours, weeks and sometimes months of their time.
It reminds me of the time I interviewed at a company. At that point, I had close to 10 years experience (a few months off) they were hiring for a front-end role. I attended the interview, the interviewer was sick (red flag #1) this was pre-COVID obviously. I went to a small meeting room, we spoke for a few minutes. He boasted how he had been at the company for a little over a year and had just been promoted to lead developer (red flag #2).
He pulled out some sheets of paper with questions, there were 20 of them. He then explained this is a written interview, to write the answers on blank sheets of paper to the questions. I had an hour. Some of these questions were coding questions, as in, I had to write code on sheets of white paper (red flag #3).
Instead of leaving the room, the person interviewing me sat across from me on his phone, occasionally glancing over at what I was writing (red flag #4). He kept sneezing and coughing, it was terrible. The whole thing made me nervous, I blocked up on simple questions.
One of the questions was to swap values in an array without introducing a third variable. Array destructuring was new then, but valid. I used that as the answer, he tried telling me that it wasn't a valid solution to the question and that he wanted another solution. I explained how destructuring was an up and coming part of the ECMAScript specification, but he continued to say it wasn't a valid solution. My answer was `[a, b] = [b, a]` which was very much valid.
It is people like the person who interviewed me causing these perceived skill shortages, not the lack of skilled developers.
Don't get me started on companies who don't even know what they are hiring for. Some of the job descriptions I have seen in front-end/Javascript are confused and often at odds with themselves. Asking for candidates with 3+ years experience in Javascript and then saying things like, "Experience with PHP or Python preferable" for what are being advertised as front-end positions, not full-stack or general web developer.
I am the lead front-end engineer for the company I work at, I am part of the hiring process. I refuse to ever ask algorithmic questions, coding puzzles or anything that will not relate to the average day to day job. I am honest and upfront when I say to candidates, "Sometimes a ticket will come through and it's to rename a text value on a button" or, "Fix some padding on a modal for tablet sized screens because it's cutting off the edge"
I also refuse to take up the precious time of candidates with take home exercises. More often than not, just sitting down and talking to someone, treating them like a human and asking about the things they have done is enough to know if they are a good fit or not. We need to stop treating developers like robots who don't need sleep and can solve complex exaggerated puzzle problems in the space of an hour while being watched and not being given access to the tools they have in the real world.
As a whole, I found this "article" really difficult to read. It reads as though the author is struggling to be hired and has written an angsty article throwing daggers in many different directions and making a lot of assumptions (don't get me started on the grammar and spelling mistakes).
However, I can see merit to making a playable game of Go. I would think a playable game of chess or checkers would be a better option, though, as people are much more likely to know the rules.
> Furthermore, if you really want a C++ developer you can just expect a developer to learn C++ on the job if they have any adjacent experience with any other language.
Yeah nope
Any language takes at least 3-5 years to fully master. Sure, the "10 years in X technology" posts are sometimes insane, but... also, there is a real, factual difference between "I worked with technology X once" and "I am working with it for 5 years".
That really depends on the language and their background.
Going from C to C++ and you can be pretty functional pretty quickly, and comfortable in a year. Your big hurdle then is whatever specific libraries you're using.
Smaller languages like Lua can be fully adapted to in about 2 months or less.
I mean, yeah, picking someone with 10 years of Python experience and nothing else, then expecting them to jump right into a massive C++ codebase won't go well. But someone with 5 years of Ruby experience and a side project in Python will probably do pretty well if they're dropped into a Python-oriented job.
In tech we do not have a shortage of developers but an excess of dispensable jobs.
Employers won't change their behavior unless they're actually pressured via the ostensibly-free market to do so. In the short term, UBI would give workers vastly more ability to negotiate for better terms on an individual level; this extends to longer term proliferations of both labor unions (which can sustain longer strikes when UBI at least prevents strikers from going hungry or homeless) and ideally-cooperatively-owned startups (wherein the founders have a safety net in the highly-likely event that the startup doesn't make it past the front of its bathtub curve, and wherein the company is less reliant on outside investment just to keep the lights on).
But whenever such solutions get suggested, they of course get shot down as "eww socialism" and the problems persist.
Nothing Marx wrote says that you can't pay one person more than another.
I take company complaints about worker shortages not to be literal, but to be part of public relations, marketing, and appealing to politicians. Annoying? Sure. But also part of the game. I understand the article is mostly about berating companies for being dishonest about hiring, but I don't think an appropriate counter is to be dishonest about being hired. The rest of my response focuses mainly on the perspective of a career dev looking for work.
Your mileage may vary with different tech scenes, but my take on these experiences:
"Problem no. 1: Companies rely too heavily on automated filtering." While true, if this is your first and major complaint, you rely too heavily on job submission pages. Get a decent recruiter, reply to some linkedin recruiters, and be open to possibilities. You should expect applying to a job board without an internal champion recommending you to have similar odds to cold calling someone to sell them insurance.
"Problem no. 2: The credentialism barrier." I can't speak to the author's experience with this, only to my own. No more than 20% of the time I've interviewed has not knowing a specific programming language or technology been any sort of problem in the interview or even mentioned. I have noticed this happens somewhat more often with Java shops, who expect you to be very experienced specifically with Java, but even there most of them are pretty understanding that you may have some catching up to do (again, in my experience).
"Problem no. 3: Education is inaccessible." This seems a fair complaint, though not specific to technology.
"Problem no. 4: Low Pay and Bad benefits." This is a surprising one to read in technology. Maybe I've just been lucky and in a good area, but tech jobs are pretty well paid, decent benefits, good vacation (not at AWS though, seriously guys, do better), and with a pretty low investment in learning some people skills and negotiating tactics you can drastically increase your earning power. Read "Getting to Yes: Negotiating Agreement Without Giving In." It's short and phenomenally helpful when negotiating salary and benefits.
I empathize with the author's annoyance about listening to what amounts to a PR campaign from tech employers, but again, I think the counter to that is pointing out that it's a lot of hot air, not complaining about how hard it is from a dev's perspective seeking employment. I am open to being wrong on this, however, and welcome dissenting opinions telling me how wrong I am!
I remember starting my career as a front end developer actually having to write code. Those days are long gone. Invented here syndrome is the reality.
https://en.m.wikipedia.org/wiki/Invented_here
Code that written by anybody you actually know is not trusted. I actually saw a channel op in ##javascript of Freenode just this morning refer to people who write original code as a form of Dunning-Kruger over confidence.
https://en.m.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effec...
I also remember earlier in my career people reading resumes. Those days evaporated early in my career. A good fix was having open source contributions as people would really look at those. Those days are gone too. Reading code is just too hard, so project readme files are the new resumes to ignore.
So now the industry is stacked with developers who can neither read nor write code, can’t evaluate candidates, and fear anything that isn’t externally prepackaged. It’s like watching that movie Idiocracy, and yet people complain about talent shortages.
https://en.m.wikipedia.org/wiki/Idiocracy
I find this somewhat counter intuitive because while many software developers seem generally of low confidence about actually doing the work of their jobs they seem generally over confident about security, as in information security. It’s weird because that confidence is the the most clear example of Dunning-Kruger and it isn’t based on anything.
Now, my learning from interviewing and reading job posts is this:
* Use React.
* Don’t bother with open source or a portfolio.
* Resumes are required but they are just weapons to be used against you at a later time. Include education, contact information, and job history only.
* Many company start software projects as greenfield projects which are written by young, inexperienced, and cheap developers.
* These projects, when successful, grow, and become complex legacy projects.
* Some companies do not realize that it requires far more experience and knowledge to develop such a legacy project further, and expect to be able to hire young, inexperienced, and cheap developers, which pick up work exactly where the former developers were when they left.
* And then they might realize or not that it requires far more experience and skill to read, understand, an maintain such a project, then to start a small new project from the scratch. Yet the amount of work required to understanding and maintaining a legacy project can be a significant part of all the summed work of writing it over the years.
* And then, the companies might be in denial on how much skill they require, or they might not be transparent about the amount of work needed, in an effort to get new developers cheap.
* And in my experience, this is often with a general lack of appreciation of what the developers have actually created.
What comes to my mind is that I experienced an extreme case of this, many years ago when I was a young poor student. I found a leaflet announcing a job opening in an university from a company which sold a kind of embedded product. In the interview, they asked me if I knew how to write C, and if I had any experience with 8-bit assembly (which I had). When I came to my desk the first day, I found an 11-inch stack of 500,000 lines of print-out listings for Z80 (at that time, code was printed out in fan-fold paper). It was mostly generated from C code cross-compiled into assembly, an modified from there. It was commented in Japanese (a beautiful language, but I don't speak it). It didn't had documentation. It did not even have a Makefile. In the following weeks and months, I learned that a much more knowledgeable fellow student had offered his work for four times of my own salary. He was furious at me. The company was apparently not aware that he, being an assembly and embedded expert, was much more capable than me for doing this job. The company made tons of money with selling a specific kind of hardware, and the software, which had initially been reverse engineered from the hardware product, was a necessary companion product to their main offering. I also learned that the previous developer had worked as a contractor, and had left the business relationship after negotiations on his compensation failed. He had died shortly after that, and his widow was unwilling to provide any further information or notes he might have had. In the end, I could only achieve so much at that job - it was not that I wasn't smart but it was just way above my level of experience and knowledge (which was actually not bad). And it would have been years of work anyway. The company would have been far, far better off if they paid ten or even twenty times my salary to an experienced professional, rather than to a student. When I left, they gave me a shabby certificate of employment which even contained spelling errors. And I think that sums up the relationship they had with their developers.
Another thing that I have learned over the years is that while there are of course good and competent developers, and less competent ones, what more often than not makes a huge difference is how work is organized. It can easily increase or decrease the productivity of work by a factor of ten. And this can very much determine how much value good developers can create with their work. That means that if a company cannot pay that much, it might also be because its processes simply cannot generate good value.
So, in short, part of the mismatch which seems to crop up here could be that companies sometimes do not know what they really need, and also do not appreciate what they have in terms of people.
> Companies rely too heavily on automated filtering
We use minimal to no "automated filtering"--certainly no AI that I'm aware of. Instead, we just focus on pipelines that we perceive as having generally higher quality candidates (e.g. angel.co, Hired.com) and review them all by hand.
As a result, we move more slowly and have a smaller pool. Sadly, this hasn't been working because apparently the candidates are only of marginally higher quality or there's not enough in particular roles. Probably the only way we could ever hope to expand to broader talent pools is by using AI, because we simply do not have the manpower to keep up with the _mountains_ of application.
> The credentialism barrier > Expecting to find a developer who has 10 years of experience in a specific tool is insane. If you’re trying to find a rust developer and you will only accept them if they have been exclusively coding in rust since its conception you won’t find it. What you’ll get is a receding, inbred hiring pool.
I agree with this (frankly, only big old businesses with McKinsey managers still do this BS). In most scenarios ~2+ yrs is plenty. Sadly, even with this flexibility on my end, we're still in a huge shortage.
> I can get cooking with a programming language I’ve never seen in my life in a matter of days because most programming languages are either very similar to each other or they’re similar to some paradigm most of us already know like functional programming. > Developers are creative. They try new things. They’re not going to be droning in one language forever. If you think these are normal, average traits, you have a misunderstanding of the value of your talents. _Most_ developer applicants I see cannot do these things.
> Most developers I know will comfortably do coding challenges in a variety of languages. They do actual work in a variety of languages too.
"Most developers you know" are very far removed from "most developers in general". The developers you know were already hired through a grueling hellfire walk of filtering _countless crowds of candidates_ who struggle to spit out a basic print statement in Python while someone yells from the other room asking if they need help with the interview.
> The credentialism barrier pt. 2/3/4
You won't hear me argue with any of this. Any company that practices this has flawed leadership and hiring practices. Again, we are actually very proactive in avoiding these toxic practices, but sadly still have a shortage problem.
> Education is inaccessible
I can't really speak to this problem. Am I understanding this correctly? If you're turning down jobs because there is no education stipend, that just sounds like a personal decision I've never even heard of before. My engineering career has steadily advanced from junior to upper management, and this thought never once crossed my mind.
> Low Pay and Bad benefits
We offer normal market rates and solid benefits. Do we compete with Google or Facebook? No, but who can? At least we're fully remote, so the compensation is going to be insanely higher than average for some people, and perhaps average-ish for people living in, say, Manhattan.
Anyhow, all this is to say that I hear your frustrations; they strike very close to home for me. I work tirelessly to uphold high standards in my hiring and interviewing practices. But the reality still stands that _there is a shortage_. Next time you find encounter a company with hiring practices you hate, pause for a moment and consider that maybe they're just completely burned out from an endlessly fruitless search just like you are.
(I wrote all this with "anti-procrastination mode" enabled so won't be able to edit it to correct any potential mistakes for a couple hours.)
We all benefit from an educated society and higher education should be funded by the state.
>You try to lowball your employees then you act surprised when you’re struggling to find good labor.
This applies to service industry jobs as well.
Is this style of discourse really what Hacker News is about? I come here specifically because it is one of the few places where vague sentimental ranting is discouraged over directness and constructing thought out arguments for points. It's disappointing to see something make it to the top just for having an aggressive "hot take" and not because the content is well presented.