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.
A recent project required some work in jquery. All of the other developers stated that it would be difficult and take them too long because they were not familiar with it - being react devs themselves - so it was left to me. I was shocked. The idea that jquery could possibly be described as being more difficult than react is amusing at best. Sure, it was largely an excuse on their part, but I was left speechless nonetheless.
I guess my point is that nearly 20 years of dev experience leaves me with the ability to do the old and the new. I wish this was more respected by companies in general.
You don't get experience with Scrum ceremonies, or other any kind of “ceremonies” unless they happen to be in the application domain rather than the dev process, working in a place that values “Individuals and interactions over processes and tools”.
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?
$97,750, $118,000 $129,000 for 25th, 50th, and 75th percentile respectively
IIRC this number is typically just the base salary so you can roughly double it to include bonus and stock.
Click Employment tab then Page 9 in https://capd.mit.edu/resources/student-outcomes-and-salaries
Not that I doubt there are jobs which pay this, but from what I've seen of the market, if money is all you're concerned with you should not be turning your nose up at a 200k TC offer.
200k is very high for new grads.
I think the 200k figure is inflated by FAANG companies, basically.
Edit: This is to say, the cost of housing has grown faster than the compensation available to new 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.
What's the median NYC houshold income for investment bankers and radiologists?
SEs are educated, highly-skilled individuals and should thus be compared to the VALUE the NYC society places on other highly skilled, in-demand individuals.
Be assured that NYC lawyers, radiologists, and bankers don't compare their remuneration to an average that includes dustmen, baristas, and hot-dog salesmen.
e.g. Lotus 1-2-3 was probably far easier to develop than Google Sheets presently.
Lotus 1-2-3 was 40 years ago, not 10, but still. The Lotus devs, of which there were only a handful, were writing in ASM, for an insanely memory constrained platform. I bet Google Sheets is insanely complicated too, and has all the multiuser requirements. But those devs have all the resources of Google backing them up. I’d call it a push.
Hasn't that been the case for decades now?
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.
What I can think of:
* be selective where to apply
* prefer job advertisements on companies web pages, as they give often much more information on the role, than a typical recruiter will give out
* do not apply to job descriptions which are not at least a n 80% match with the own qualifications and interests
* a job offer is not entirely different from a requirements specification, so a good engineering company should be able to write something quite specific
* if one stated requirement is not matched in the application, explain and point to an equivalent qualification (say, no years of experience in Go, but 10+ years experience with each of Java, Python, and Ruby).
* as a reasonable coding task should not require preparation by experienced people, do not prepare for them
* Interviewers have a reasonable interest to learn about the candidate's skills in programming. But it is hard to measure that with coding interviews, especially since since like architecture and design decisions become much more important for actual senior work. It might be more efficient for the developer to put some personal programming projects on github, and put the URL in the resume - qualified interviewers can then ask about the code and gain insight from the reasoning behind it.
And, another question, how should one handle recruiters and interviewers which apparently have not read the resume? Or the ones which ask one to apply even if the specified required qualifications do not really match? (e.g., have never worked extensively on Windows, a lot of experience with embedded C++, but recruiter asks to apply for a C# job?).
For HR people it would certainly help them if there were more information about the company, tools, actual tasks, and some words on what the core of business is - and how software relates to that.
> be selective where to apply
100%. And talk to your friends and get warm leads when you can. You can learn much more about what its like to work at a company by talking to people who already work there. Go in for lunch. Get a sense of the company culture. If you have skill, everyone is hiring. Ignore the recruiters and choose where you want to work.
> do not apply to job descriptions which are not at least a n 80% match with the own qualifications and interests
I disagree with this actually. Again, if you're a senior developer with skills, figure out what the company is doing and decide for yourself if you want to be part of that. Technology match matters here; but job ads are pretty uniformly terrible. Nobody knows how to write them well. I certainly don't.
> architecture and design decisions become much more important for actual senior work
Yes; from the people I interviewed, I found senior developers were competent but still a bit slower than mids at raw programming tasks. (This makes sense, because they often don't do it as much). In comparison, senior devs were much better at debugging problems and at architecture whiteboarding style questions.
> And, another question, how should one handle recruiters and interviewers which apparently have not read the resume?
The first thing to know about recruiters is they don't work for you, because you don't pay them. The way recruiting should work is like acting - you get a manager (recruiter) who knows your skillset well. They talk to lots of companies and find you a stream of good gigs you like. You pay them $10k for that service, or 2% of your salary or something. But programmers hate paying for this, so instead all the recruiters work for the companies. They get the same cut, but our experience of working with them is awful.
I'd avoid most recruiters whenever you can. Use HN's job board and things like that, and skip to talking to the actual team managers and engineers as quickly as possible. Recruiters hunting C++ devs for C# roles is just lazy people being lazy.
And who cares if your interviewer has read your resume? Its disrespectful, but it doesn't matter. Roll with it.
I'm not sure how to reconcile a recruiting company well-known for doing rigorous technical screening having a 40% placement rate, most candidates being a clear yes or a clear no, the hiring process being completely fine, and the hiring process not producing many false negatives.
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.
>Is it unfortunate that firms that are unable to generate that much value suddenly can’t hire developers? Must be for those firms.
yep. Our BigCo generates paltry $350K/employee/year. Looking at our salaries - we're relatively cheap engineers, and the company wastes our time in a myriad ways, and it is no wonder that we can't hire anybody here really - one can say we do experience the shortage of engineers. In SV we regularly lose people (who get 2-3X increases at new places, and only morons like me (even when i got an offer from Google it was just L5 and a very low one, basically just a match of what i have here) are still sitting here), and we're able to hire only in cheap remote locations.
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.
My experience is that even the best engineers wont catch up for a year or something, to an mediocre one with years of experience in the project/field, if the project is somewhat complex and not routine. In 17 months it is really hard to do anything magnificent.
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.
Example, you have labor force of 10 people. All jobs have mandatory stay of 2 years. 6 companies have an opening each that pays 1 mil/year. The openings are staggered so 3 jobs are available on odd and 3 on even years (and last 2 years). 50 jobs are posted with a salary of 100k/year. These salaries represent value produced to company and cannot be raised. All applicants have equal chance to get a job they apply to.
The minmax solution is to not take a 100k job because of opportunity cost (you won’t get a chance at the 1 mil job next year). So you have both 40% unemployment and massive labor shortage (56 openings but only 10 viable candidates).
You might as well make an argument based on the premise that pigs can fly. Contracts like that are basically unheard of in the US, outside of top executives and a few rare industries like professional sports.
>These salaries represent value produced to company and cannot be raised.
This means the company needs one employee at minimum. If it loses that employee it will not produce value. Therefore it is in the best interest of the company to hire two people, the first position is compensated as much as possible, the second is compensated one dollar more than the lowest competing position that got filled.
Thus, the top offer becomes $899999 and the lowest offer becomes $100001. However, there is a problem. We have 12 positions but only 10 people. The companies will have to outbid each other on the lowest position until all salaries hit market rate, which is the average of the top ten original positions (6 times 1 mill 4 times 100k) that market rate is $640k for everyone.
The 100k jobs never get filled and they shouldn't get filled ever, because a lack of customer demand will never be a shortage. (the assumption in your scenario is that training costs exceed $1000k and therefore it never makes sense to increase the labor pool)
The mistake you made in your scenario is that you did not mention price controls enforced by the government. In a free market companies will negotiate and adjust their salary. The lack of training is acceptable for a thought experiment though.
Maybe not -- for example, we don't know if there are other permanent employees already, and then, not hiring more people can be acceptable
Example: Virtual Widget Co has one employee. The company makes $120k/year in revenue (and so max cap for compensation is ~100k/year because of whatever other costs). If the employee leaves, the company would not be able to continue and will fold. However, the employee is one of the 10 from my previous example, to minmax their own income they should leave the company despite being indispensable to it/the company folds after they leave. No other qualified person would apply for this job either. In fact, it might even be that the average unqualified person’s wage is far below 100k but even that doesn’t help.
A better statement would be “Virtual Widget Co shouldn’t exist because it doesn’t have a viable business proposition”. But this can be counterintuitive in the context of 40% unemployment (4 out of 10 in my example). A more real-world analogy would be “lots of businesses are viable only in the presence of slave labor.”
Likewise, if "market rate" is above "value produced by the employee" it doesn't make any sense to pay that much.
There are lots of companies out there that need some tech and some programming, but when the company revenue is only a few million that has to span a few score employees, and costs... its not possible to pay the small handful of devs six figures and keep everything in the black.
Likewise, there are new grads that are scoffing at working for 2x per capita income for the area in the midwest when that's less than 100k (and then complaining that they can't find any jobs).
There is a mismatch of expectations - possibly on both sides of the table.
It also means that somewhere out there is a business that can actually produce enough value to pay market rate and you should work for that company instead.
With the dominance of tech in the mindshare of people looking for a job, they're only looking at well known tech companies. Apple, Google, Facebook, etc... and these are also the places that can afford to take a risk on a new dev as they've got the institutional inertia to help carry someone along.
The flip side of that is that many people entering the job market don't consider companies like Dominos (only pizza company with a software patent), UPS (that whole 'don't make left turns' navigation thing), Target (early leader in data science), or McDonalds (hiring for some neat stuff in AI drive throughs).
Next, new grads are often expecting that the wages that the big tech companies can offer are standard across the field. I've more than once seen on Reddit a new grad getting an offer (that they applied to) in the northern Great Plains and then backing out when they were offered 70k to work in Fargo.
Another version of the "where are you applying" is that they're only applying to companies in Seattle, SF, and LA and then complaining that they can't find a job.
The idea that seems to be consistent with these new grads is a "I am worth $100,000 and I won't accept anything less." There's a consistent statement that the person is worth that much rather than the work that they do is worth that much.
Spend some time in /r/cscareerquestions to get more of this.
Those trying to hire aren't blameless in this. Expecting developers to fit nicely into the same payroll box as everyone else who reports to a manager in the office with a white collar job could very well mean that the offer is well below what someone with the necessary skills would accept.
My rough ballpark for what a dev should get (with large error bars) is 2x per capita income for the area. That tends to get fairly close to acceptable.
> In common use, the term "shortage" may refer to a situation where most people are unable to find a desired good at an affordable price, especially where supply problems have increased the price. "Market clearing" happens when all buyers and sellers willing to transact at the prevailing price are able to find partners. There are almost always willing buyers at a lower-than-market-clearing price; the narrower technical definition doesn't consider failure to serve this demand as a "shortage", even if it would be described that way in a social or political context (which the simple model of supply and demand does not attempt to encompass).
Edit: here's the definition that everyone is using, which you posted earlier
> In common use, the term "shortage" may refer to a situation where most people are unable to find a desired good at an affordable price, especially where supply problems have increased the price. "
Importing engineers is just poaching engineers from other countries. It's the same thing.
Educating engineers is a matter of compensation. Given a high enough salary people will get the necessary degree. The only other thing you can do is cut education quality and just let more people pass.
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.
I wonder if there's a business opportunity for a firm of experienced devs who do nothing but interview devs for other companies
Sure, you need someone to refer a good contractor to you first, chicken-eggs problem.
I wonder if there are companies that can help with it as well - not shops that try to convince you to outsource the whole development to them.
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.
Lots of companies can’t afford to compete with G / Fb / etc for principal engineers. (And many companies who should hire good people cheap out and don’t spend the money.) Thus lots of important, otherwise valuable projects are staffed by people who struggle to take technical responsibility for the tasks in front of them.
This becomes self reinforcing - senior engineers have a lot of market power. They (we) generally don’t enjoy working on projects with mountains of technical debt alongside the processes which have a track record of creating them. “You’re really talented. Why would you work at a bank / corporate?”
Labor supply isn't perfectly elastic - there are only so many people who are capable of doing a particular job, and it takes time to train more.
On top of that, of the pool of folks who could get trained up, some of them wouldn't be interested in the work at any rate of pay!
((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).
read CtCI
CtCI?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.
that and the article in question giving questionable numbers like:
>50-70k is a junior’s salary. Your people with 10 years of experience with C++ or whatever should be paid closer to 300k
50-70K out of school is normal in the US, but not necessarily all of US (70K in expensive areas like San Fransisco would be low balling, even as a new grad). 300K, even after 10 years, is not normal, not unless you started at a top company and/or have been aggressively chasing pay raises, internally or through job hopping.
BUT, while abnormal it's also not a surprising number to hear either. It depends on so many factors.
At about ~140k for one person, you will still have difficulty renting a single housing unit because you will not be able to meet % of income = rent calculations. I have experience with this (and unrelenting corporate managed rentals charging several hundred in nonrefundable application fees just to reject for low income at 6 digits..).
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.
I flipped the bird at Facebook and Google, and got frustrated with Amazon's to cancel my interview mid process.
Facebook was very robotic in their process, with a lot of demands for preparation. Google and Amazon aren't that far off.
Who did that??? Never heard of automated tests
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.