I don't think HR and software recruiting has really caught up to the reality that many developers by their mid-30's are sitting on a million+ in assets and good ones can rake in 200K+ easy. Further we usually find equilibrium with our roles wherever we are even if we have gripes with how things are because most devs are pragmatic people that realize everything is awful everywhere and perfection is unattainable.
Offer me more money, more PTO (fuck your unlimited time off garbage), lunch and club budgets etc and I'll be more interested. Four day work week? Yea, that will get my attention.
Oh and there's the other problem that your company is probably not competitive with Microsoft + FAANG and the handful of unicorns in the compensation arena. Either you're private and have no stock to offer, or your stock is flat-lined, or you don't hand enough of it out. Nor is your product interesting enough to work on.
Changing jobs is a pain in the ass. Most of us have stable jobs, good report with our coworkers and managers, deliver stuff on time, and get paid well... You're going to have to compensate me better than +10% on whatever I am currently making to get me to switch jobs.
What !!!
Edit: I did return to tone down my reaction but I would be interested in any (evidence based) research on the pay scales in and out of SV. I understand it is only the very top tech (FAANG) that pay so highly and mostly though share options.
It's not like that in Europe I am afraid.
But even so, if that's your position by 35, well done you.
I also made that much last year by working remotely for a Canadian company via a.team.
I know more examples of people working for Facebook in Germany and remotely for an Israeli company making over €300k.
I'm yet to see one or hear from a friend who works in one. I admit there might exist one somewhere, but by and large, they don't. Unlimited PTO = culture of overworking, at least for me. And small companies with unlimited PTO, 3-5 engineer teams (and some other staff, obviously) seem to be the worst offenders. The bigger the company, the higher the chance unlimited PTO might actually work.
That being said, I'd love if someone can teach me how to tell them apart.
Also if they are calling themselves modern and don't offer 100% home office, scrap that.
Same applies if there is any mention of code golf, or me being great at things that aren't even part of my CV.
Naturally when unemployed, one doesn't get to be as picky, but thankfully that hasn't been the case.
L7 salaries are 300k base and around 400k equity in the US, so hiring experienced/accomplished developers is intensely difficult for companies outside of the top tier with high margins or startups with potential exits.
[1] https://www.levels.fyi/comp.html?track=Software%20Engineer&s...
Also, tailor your job listings to tell them what they get out of the job. Don't list what you need. You're just culling potential applicants. Most talented developers can adapt to a new language or dev environment quickly. You don't need someone who already knows X, Y, Z and 20 other things. Attract people to your company, don't make a list of needs. Get them excited to work for you. And put your high salary range in the listing.
Every time I do this, I'm inundated with resumes from top quality applicants and can pick and choose the best fit. I've hired over 100 developers this way, almost all of which worked out great.
People just go about the whole process wrong. Make the job and company attractive to work for and talent will come to you.
> fire those that don't perform up to expectations quickly.
This attitude is why I haven't been recruited. I have 10 years at big tech and companies expect me to jump ship with the threat of getting fired if I don't immediately live up to expectations (even if I'm confident that I will, but I'll never know how high your expectations are until it's too late). Add on wild take home assignments on top of my full time job and (typically) less pay than big tech.
It's simply not worth the trouble.
Most companies pile work upon their best performers. I'm the opposite. I reward our best performers by giving them back their time. Expectations differ some depending upon compensation, but really as long as you get your reasonable expectations done, I'm happy, you're happy, management is happy. It's never been an issue.
I also try to fire fast and every single time the issue is that they do not actually have the skills they listed on their resume.
That's why the coding test and that's why you need to fire fast.
I have all kinds of patience for good people that need ramp up time.
> Don't make them jump through hoops
The take homes are the hoops.
Otherwise, I'll do something simple, on a shared screen in the language of their choice.
It shouldn't be hours and hours and, ideally, it's a win/win.
I don't really care how successful you are. I want to see how readable and maintainable your code is. Sometimes I just ask for example projects that I can read.
But I do need to know you can, you know, actually do the job. I personally find in person coding significantly more stressful than take homes. So what would you suggest? How do I test someone's ability to code?
I may be being generous. I am noticeably “older,” so it may have simply been bald-faced ageism, in my case. Maybe younger folks would have been given more latitude.
I remember getting a take-home, once, where they asked me to write an iOS app that leveraged a specific library. They did not provide a template. They simply sent me an email with a fairly vague spec (I'm fine with that). They also wanted me to use a specific $methodologyDuJour, that would have resulted in needlessly complex, underperformant, and buggy code.
At the time they gave it to me, I had a pretty serious personal family emergency, so I did the app, using the industry-standard method. I wrote a full-quality, localizable, documented app, in less than four hours. While my house was trying to burn down, so there was a bit of extra stress.
Oh, and also, I had never worked with the library they wanted me to use, so I had to learn the API.
So, I wrote a full native Swift iOS app, from scratch, learned a commercial API, integrated it, tested the app, documented it, and delivered an App Store ship-ready iOS app, with very high-Quality code, in about four hours, while under serious personal stress. I did let them know that I had had to deal with a "personal emergency," so the test was a bit "rushed."
They ghosted me hard after that. I was actually shocked at how discourteous they were, as everything before that, was great.
What's the compensation for that risk? "We'll fire you in six weeks if you don't work out, so please leave your current job where you're well established and have about a 0.5% chance of getting fired this year."
Something like guaranteed six months severance, or a $100K reporting to work bonus with no clawbacks.
At the C-level, these kinds of guarantees happen all the time.
We can see the opposite in Amazon where they successfully built a reputation as a terrible place to work with low pay relative to its peers, and now struggle to attract talents.
The real question I have for you is, how would you prefer to prove to me you can actually do the job? In person coding exercise? Isn't that more stressful?
Here are some thing I know:
many companies - maybe most companies - are very slow. I cannot tell you how many times I have sent a great candidate to an employer, to hear in 2 weeks that they would like to interview them, despite my pestering them the whole time for feedback. You know what they say then? "Oh well, who else have you got?". They don't care.
the companies I work with who succeed in recruiting people get the entire process wrapped up within 2 to 3 days, from the moment the resume arrives in their email server, to signature on paper, candidate off the job market. When companies lament "Oh it's so hard to find people!", that's who they are competing with - a 3 day turnaround.
many companies don't even know what makes a great developer - can't define a great developer
many companies have abysmal processes for assessing people
many companies value the wrong things in potential people
many companies pay less than market rates
don't get me started on coding tests.
but ALL companies think that none of the above apply to them. all companies think they are awesome at recruiting and that they run the very best recruiting process possible.
so is it hard to recruit developers? Well yes - but not because there aren't great developers available.
will a new software tool fix it? no.
This. I wish your comment would go to the top.
I interviewed at over 25 places through the past year. Here are my observations:
More than half the time the employer knew the work that needed to be performed in the near immediate but had absolutely no idea what they wanted in a developer.
Nobody can define senior. At some places they were expecting a senior developer who could do anything. At other places it was a trend chaser who plays with dozens of tools. At other places it was a framework user placing text on a screen.
Algorithms are where interviewers go when they don’t really want to talk to people. This is a danger zone because the candidate can fail any number of reason, most especially code style and vanity. Worse, many of these algorithms are completely outside of any real world concern better solved with a well formed data structure.
Unfounded assumptions are the standard. Most people writing software professionally have never done anything else professionally, which is a tragic silo. When you’re a hammer everything is a nail tunnel vision mentality is the expectation. In this case the goal, if want to be hired, is to fall into the middle of the bell curve. Don’t be awesome.
Consider that the big tech companies could agree on some kind of standardized test to replace much of the worst of the interviews—but haven't.
Consider that they often make you leetcode even if you've already passed their interviews before, even if you've passed a couple other leetcode-style companies' interviews before, and so on.
Recall that several of the top-paying tech companies got busted illegally colluding to keep salaries down once already.
Conclusion: making developers more reluctant to switch jobs is one of the main purposes of FAANG-type interview processes, and is likely a core part of their current salary-suppression scheme.
"which doesn’t necessarily get me any closer to hiring someone good"
Everyone wants to hire only the best developers. The more developers in the pool of candidates the more picky we become. Everyone has 2 years of Java in the candidate pool? We only want the best.. you need to have 3 years. If everyone had 5 years you need to have 7 years to be considered the best. Meanwhile any average developer in the candidate pool would work out fine.
Trying to find the perfect candidate vs the average candidate is the self imposed struggle employers give themselves. The need to hire the best gets harder the bigger the pool for all.
One way that works well is for companies to try using techniques of college recruiting, because the level of commitment has parallels: a one-time high-stakes multi-year decision, that involves many new people, new schedules, and new learning.
The getting-to-know-you approach leads directly to teams making smarter choices overall, such as publishing interesting sections of their own codebase, writing about challenging areas of their own workflows, and so forth.
When the teams directly show people the real work and the real organization, then the recruiting experience can become more like a college campus tour-- the developer gains a better understanding of what's involved, and where the learning and growth opportunities are, and why it's worthwhile to apply.
I have over a decade experience in a consultancy environments (faster paced and more rigorous than a lot of other jobs, sorry not sorry). My work was independently driven and I provided input to the projects I was on at the highest levels. I've set IT and SWE policy for and introduced leading products at more than one company.
The CircleCI chart from yesterday was interesting. I was doing principal work under every column except maybe one. I've plenty of stuff to talk about to put any doubts to rest. But... no bites. In my case I suspect the issue is/was, as related to me years ago by some other HN poster, that I was in the Midwest and people are biased against Midwesterners for reasons more than just relocation costs.
I interviewed a lot the last couple years, from the Midwest, and had more remote opportunities than I could handle. I'm not interviewing with FAANG though; almost entirely private companies, seed to E.
I wasn't hyper focused on FAANG. I did actually get a FAANG interview, didn't go anywhere. I mostly just don't get interviews.
It's just a hard problem period.
1. FizzBuzz, quick and easy for anyone who can actually code. Honestly #2 is about as good, but this is quicker, so I put it first.
2. A code review - this is something most jobs will actually entail. Coming at some bit of code or a PR cold is something you'll do on the job. Spotting problems is something you will really need to do. It's not quite coding, but I'm going to google half the things I need to do, tweak someone else's working code and move on. To quote my favorite manager, "I love lazy programmers, they're the best!"
3. Pair programming to improve some already or nearly working code. This isn't too bad lets you feel out if you can work with the other person too. Writing whole algorithms from scratch is something that I'd google first anyway, so testing on that is silly.
3. Take home coding challenge - Awful and wildly burdensome. Can be a big time expenditure as they're often not trivial.
4. Live coding in a browser - Awful! Nobody actually works like this. So you're not testing for reality at all really. And having someone watch over your shoulder as you code can bring even the best and the brightest down to "can't write an if statement". Wild amounts of false negatives.
5. Outsourced, proctored, coding exercise. I halt the process at these now. Ridiculous practice.
Using #3-5 is a major red flag to me about the company. They don't know how to hire and/or have industrialized the process so how good can my team be? They already see developers as cogs.
"I'd rather wait in line at the DMV all day than go through a typical 6hr tech interview. Hire me based on my resume and a phone call, give me a task, and if it's good enough keep me. Problem solved."[1]
"Take homes are one of the single biggest turnoffs for experienced talent in interview processes. People don't want to do them. Especially good devs who can land a job anywhere."[2]
[1] https://news.ycombinator.com/item?id=32404256 [2] https://news.ycombinator.com/item?id=32403899
- Refusing to tell me salary range, I stop speaking to them - Them not contacting me after my questions (salary range, vacation days, if I'm expected to do front end, etc) - Them stop contacting me when I say I am not interested in working with technology X Y and Z (usually java and mongodb, sometimes I'll ask if they use PHP then say I rather not touch it, I don't outright say I will never work with it) - They have a non technical person interview me who gets lost and think I'm bad at communicating when I can't see their face and have no idea what part I lost them - They have a technical person interview me who can't accept when I disagree with them
#2 Not giving what the salary range is
#3 Not giving what the total comp range is
#4 Not including benefits and/or not including real benefits.
#5 Not understanding how experience and skills overlap and transfer. Rejecting someone with 10 years of Java experience because you need "Go" experience. Or rejecting someone with 10 years of JavaScript and 5 years of React because they need "Angular"
#6 Ridiculous interview processes. 2-3hr take-home assignment followed by 6 hours of "virtual onsite" interviews are becoming the norm and it's ridiculous.
What gets acceptance? Be transparent, competitive, upfront, honest, lightweight, and READY TO HIRE.
Most of us would not have such a rational aversion to recruiters if there weren't hundreds of them spamming you with bullshit non-offers "Hey, we just saw you switched jobs this year, maybe wanna switch again before you have settled in?" (not making this up, I've had "hey, how's your 6 month probationary period [as is common] been, are you happy where you are now?"
Even writing "NO I DO NOT WANT A NEW JOB" will help avoid them pestering you. Oh, and if only this was a few (lone) people or a few bad apples in the agencies. No.
I also got contacted by recruiter B of company X while we were actively working with their colleague C to recruit people for our company. We were, until that day.
There are also a handful of them, no matter how often I politely reply "go away, I am not interested, never contact me again", after months at most they come back. The platforms make their money from the recruiters, not from the free users, so reporting them also doesn't work.
It's a bit like saying "not all MLM scheme salespeople are bad", well - 90% are.
I wish I was using hyperbole, but I am not. It's not a real problem, so don't mistake my halfhearted rant as some sort of crusade, but the reality is that after 20 years I only know a small handful of recruiters who are decent and not just opportunistic scumbags, and that sucks.
I have been working in the development area since 1999. Starting with Delphi, today I work with Ruby and Python. I've worked with Java and Lisp. And many other areas like security and DevOps. I worked in large companies and startups.
And after 22 years, I can say... the recruitment process is a shit show at ALL companies. It gets humiliating. Some examples:
1. A company offered me an offer after just one interview, ... 1/3 of my current salary. WTF?
2. In another case, in the technical test I emailed, in Rails, the reviewer said "You didn't create a validator and you didn't test 100% of the code" Of course I did the validator... I was offered a new test, but I thought it was a bad sign, so I stopped the process and thanked for the opportunity.
3. In another company, I did "a lot of unit tests" 4. My boss doesn't hire a very good candidate because he uses Visual Studio for the online interview, and it was a sin for him to use an MS IDE.
5. For a specific job, my boss only hired women with deformities (no hand or foot, limp, etc.), as this type of woman does not suffer sexual harassment (of course it is not true).
6. I already took a graphology test for a job!
7. "You called Model.find_by_name, we don't use it here, you need to call Model.find_by name: value"
Some people say "it's normal" about these crazy processes and defend it. They suffer from Stockholm syndrome.
Every time I get an offer on Linkedin, I don't politely accept it as I don't want to go through any crazy process again. And I didn't even mention the work environments...
They do not want to give you a chance to adapt your skills to the position. They will not give you feedback. They will not work with you to clear-up what might be minor misunderstandings. They really do not want to hire anyone.
Hire me based on my resume and a phone call, give me a task, and if it's good enough keep me. Problem solved.
I've interviewed a few people lately, Senior Eng somehow, who have impressive resumes.
I ask basic coding tasks just to make sure they actually know the language claimed - just something like converting numbers to strings, and you'd be amazed how many people had no idea where to start.
Literally more than half the applicants couldn't figure out how to update/install clang/gcc to compile our test. It wasn't timed or anything it was essentially change the lambda so it's by reference instead of by value (or the other way around idr) and send us back the one or two line change
Isn't that the kind of thing that someone senior would typically look up? Do you think that whether or not they have that part of the language API stored in their working memory is a good predictor of their ability to do a good job as a senior eng?
For starters, the acronym means "Human RESOURCES" ie, square one, or is about resource extraction, like any mining operation, about exploiting that resource for maximum value at minimum cost, and externalize costs where ever possible.
Alernatively, when actually creative people need assistants, they INSPIRE collaborations, using only the value of their idea.
There's more money in the former than the latter, but as Henry Ford said, "you can make money or you can make sense, the two are mutually exclusive."
Well yeah. C++ developers with 15+ years experience don't want anything to do with go (for good reasons) and you probably can't afford them anyway.
> For example, if I want to hire someone ...
It's just a contrived example to demonstrate the (mostly) poor matching I see at the point of attracting developers.