Hacker News new | past | comments | ask | show | jobs | submit login
What Developers Should Know About Job Searching and Negotiation (twilio.com)
420 points by shakes on Feb 26, 2016 | hide | past | favorite | 235 comments



This is all good advice, but this article falls into the same trap that most other career related advice does: it assumes only one type of job seeker (in this case - ambitious, experienced, and passively job seeking).

The truth is that there are lots of different ways to get a job, each with varying levels of effectiveness that depend A LOT on your situation. An effective job search is one where the techniques are tailored to the situation, and the amount spent on each reflects the expected effectiveness within that situation.

Example: A few years ago I got laid off. I had a few weeks of notice, some severance, and savings, so I decided I would be a job seeker full time until I got a job I really wanted. I followed the advice in this article almost to the letter and specifically avoided lots of the typical job hunting techniques (sending resumes, filling out job applications, talking with recruiters, etc...)

I did a lot of research on companies I wanted to work for, started meeting with people (I didn't know anyone who worked at those companies), sent a lot of unsolicited emails to get an 'in'. And after a few months of doing this I'd made a lot of new connections, but no legitimate opportunities. By this point I was starting to panic, so I broke down and started doing the 'traditional' job hunting stuff. Two weeks later I had an offer from an application I had submitted online.

Don't limit yourself to just one technique. Try a lot of different things to see what works for your situation.


I agree with you. I think the best overall approach is to apply the scientific method. Set hypotheses on what will work what will not, test, look for evidence and adjust accordingly. or the startup metaphor of reaching product market fit or pivot


Patio11 is very respected in the community, but I can't help but feel that most points in here are not applicable to all software engineers. This seems to be mostly for people starting off in their careers, or people that feel that work is a major part of their life. I am sure there must be more people out there like me who:

- Dont care about getting the best-ever salary thats on offer. If the developer finds out that other companies are offering better salaries, they dont hesitate to re-negotiate or jump ship.

- Put more emphasis on the work-life balance rather than the work. This means one may not get excited enough about the work to seek out people and companies, but when they get emails from companies or recruiters, they dont mind starting a discussion if the work is decent and the people are good to work with.

This doesnt in anyway mean that the developer doesnt like coding. Just that they feel that its not worth the effort to fight for more money if they feel that what they are making is giving them a pretty good living.


The key idea behind Starfighter:

"Rather than measuring proxies for talent, we just decided to try to measure talent directly."

The problem with this is that the technical side of things is much less important than how people work together. Google's Project Aristotle has shown that technical chops matter far less than people being empathetic, tolerant and good listeners.


While perhaps obvious to the crowd here, how you work together only matters if the team is talented enough to begin with.

I've worked for companies where the primary focus was put on "empathetic, tolerant, and good listeners" where everyone was afraid to rock the boat. These were the least favorite environments of my career as they attracted lets just say not A players - and the inability to get things done was astounding. Any talent that accidentally found it's way into the company never lasted beyond 6 months.

There is a balance. You need the raw tech talent to be there to get the project completed, but I agree you want those folks to play relatively nicely together.

The most functional teams I've been on have been relatively small, full of very opinionated but extremely talented people, and to an outsider it would have looked like organizational and social chaos. However we all loved that period of our lives, and speak about it fondly. When you're on a team that is rapidly getting things done, but is passionate enough about the work to scream and yell it's refreshing vs. the banality of the typical corporate dev/tech/IT job no one actually cares about.

So for me, I'd much rather work on a team of highly talented opinionated assholes than a team of untalented nice folks.


I think you've hit the nail on the head. Empathy, tolerance, and social cohesion are all valuable things. However, if they are valued to the exclusion of ability to get work done, then you don't have an engineering team. You have a very expensive group therapy session.


"I've worked for companies where the primary focus was put on "empathetic, tolerant, and good listeners" where everyone was afraid to rock the boat. "

If they're afraid to rock the boat, then you don't have a team of "empathetic, tolerant, and good listeners"


The key here is that attempting to select for X doesn't get you X. Trying to hire only people who are "empathetic, tolerant, and good listeners" gets you mostly people who don't rock the boat, because that's indistinguishable in the traditional interview context. (There are some off-the-wall interviewing techniques you could try to test those traits, but I'm not sure anyone with HR training would ever think they were remotely okay to attempt on people.)


According to the results of Project Aristotle, empathy, tolerance and good listening was what made people feel like they could "rock the boat". Maybe you should read the article?

http://www.nytimes.com/2016/02/28/magazine/what-google-learn...


Here's a short quote from the article on Project Aristotle:

"Imagine you have been invited to join one of two groups. Team A is composed of people who are all exceptionally smart and successful.... This team is efficient. There is no idle chitchat or long debates... Team B is different. It’s evenly divided between successful executives and middle managers with few professional accomplishments... At the end of the meeting, the meeting doesn’t actually end: Everyone sits around to gossip and talk about their lives. Which group would you rather join?"

I knew I'd want to join Team A: smart, efficient people who get stuff done without idle chit-chat.

If you believe the article, Team B will be less effective because they are too individualistic, and walk over other people. They didn't actually say "self-centered", but it was implied.

I don't see how you can't be both efficient, smart, and empathetic; I don't see why there has to a choice. I've worked with my fair share of a-holes, and it's no fun. But it's also not fun working with schmoes who spend more time gossiping over the watercooler than getting stuff done.


(Sorry, typo, I meant "If you believe the article, Team A will be less effective...")


Thats how I feel. I have a good job that pays me a bit below than my market value, but it makes up for it in work-life balance. Heck just today I came to work an hour and a half late because I was surfing and I didn't have to notify anyone that I would be late. That freedom is something I havent been able to put a price tag on yet, and its why I've turned down much higher salaries the last few years.


But the question is whether you could have negotiated an extra $15K --for the SAME surf-friendly job you have now-- just by holding out for 1 more day during the interview/hiring process.


Isn't that typically the question when negotiating anything? How often do we truly walk away with the absolute best deal that we can get? Even if, how often can we say with 100% confidence that the deal was the best that can be offered?

I think people hate to admit that things can just be "good enough", because the phrase "good enough" sounds like we settled without putting forth enough effort. It's a false dichotomy. Things can be good enough in one area yet outstanding in others.


We're taking about whether to negotiate vs. just taking first offer from company. Even if money isn't your TOP priority (vs flexible hours, etc) and you love the work opportunity being offered to you, you should still negotiate up front and try to get the company to come up higher. It's MUCH easier than asking for a raise or promotion later -- something as simple as saying "can you come up a bit higher?" on a phone call --those seven little words-- could pay for your summer vacation!


Of course I would, but a company saying they are flexible about the hours you work and them actually being flexible are two different things. Its always going to be a risk.

There are other factors, such as the level of autonomy I have, that weigh into things too.


If the $15K is guaranteed when you hold out for 1 more day, sure. If not, its like any other trade-off between your mental peace and more effort.


> That freedom is something I havent been able to put a price tag on yet

Keep your eyes open! I thought the same thing about six months ago, but it turns out my price tag just sat in the area between what I thought people were willing to pay me and what they actually were.


I disagree heavily - I think his advice is actually equally, if not more, relevant for people like yourself.

Being a shrewd negotiator is an absolutely critical skill in life, even if you don't want the best-ever-salary. If you know how to negotiate the best-ever-salary, you can trade it in for things that do matter to you.

Don't want tons of money but want great work-life balance? You can turn part of that salary into more vacation time, more flexible working conditions (remote?), one day off every single week, more benefits, and other things that matter to you.

Money can be used to purchase many things - the ability to negotiate for more and take less can also be used to purchase things - in fact they can purchase things not available in cash (see: extra vacation).


>If you know how to negotiate the best-ever-salary, you can trade it in for things that do matter to you.

Personally, I'd rather not spend my life playing games with people who are constantly trying to capture the most value in a relationship at the expense of the other person.

Tell me what the job is, what it's worth to you, and let's mutually determine if this relationship is a fit.


> Tell me what the job is, what it's worth to you, and let's mutually determine if this relationship is a fit.

That's basically the same as Patrick's advice. The difference is that you're expecting an employer to do that naturally, and he is encouraging people to ask employers to do that. It seems to work pretty well, anecdotally, and it's not all that scary.


Some of the other responses have zeroed in on trading $ for time, missing your important point.

Money and time are just poker chips - big, valuable ones, but 2 among many. Figure out what's important to you and what's important to the company, this sets the board. Then start trading chips.

The conversation isn't the hard part, intimidating as it might be. Determining what you value, and how much, so that you can begin the conversation is where it's tricky. It's easy and comfortable to skip this analysis, pretend that money and time are the only variables in the equation, and then leave something else you value undiscussed and unclaimed.

There's a great article (2012) I often refer junior developers to who are interested in approaching negotiation in a more productive way (with an emphasis on the most important chip to many of us, salary): http://www.kalzumeus.com/2012/01/23/salary-negotiation/


Yes. Two of the most important aspects in my mind, apart from time and money, are the people you will be working with (are they good), and the product/the kinds of problems you'll solve. Both are high on my list of what I look for in a job: http://henrikwarne.com/2013/03/26/what-do-programmers-want/


"Being a shrewd negotiator is an absolutely critical skill in life, even if you don't want the best-ever-salary. If you know how to negotiate the best-ever-salary, you can trade it in for things that do matter to you."

What if I am absolutely at peace with what I have? There are plenty other skills that I would put as more critical than negotiation. Its not an absolute.

"Don't want tons of money but want great work-life balance? You can turn part of that salary into more vacation time, more flexible working conditions (remote?), one day off every single week, more benefits, and other things that matter to you."

I want to make the same point as tetraodonpuffer. Its not easy to say I will work 50% less, give me 50% less salary.


Salary growth is generally exponential, some % per year. Negotiating even a slightly higher salary early in your career can mean an extra million dollars in your 401k at retirement. You say money isn't that important, but is it really not worth polishing up your negotiating skills a little bit for a million bucks?


If salary growth is important to you, there's also another way to get it. Whenever I have changed jobs, the increase in salary has been like an order or magnitude more than what you would get if you stayed. (2% vs 20%). I am not saying you should always be looking to change jobs, but if you are looking for salary increases, negotiating is only one way to get it.


I think you're strongly agreeing with each other?

Negotiating is something you do while you are in a job and while you are switching jobs. Even when switching jobs your negotiation ability can mean a dramatic difference in how much you are compensated.

> "but if you are looking for salary increases, negotiating is only one way to get it."

Well no, negotiating is the only way you can get it - you have to negotiate with the next company too. Switching jobs might get you a 15% raise by default, but a good negotiator can make that 50% instead (or 15% + a bunch of other perks).


I say "I am currently at X now, and I am looking for Y% more" and the recruiter/company says "done". If you consider that negotiation, yes I am negotiating.

According to other people on here (including patio11) its a more subtle, nuanced and longer drawn-out game.

Edit: Key point here is that I am not gauging how much I can get out of the company. I have a number in mind that I am comfortable with, and asking for that.

Edit - Response to the comment below from Consultant32452: That was never in question, I fully am aware of the lack of money obtained as a result of non-negotiation. It just doesn't matter to some people, as they are not optimizing for the highest amount they can get. Maybe they are already well off, or the salary they "non-negotiated" for already is a good-enough amount for them, or are optimizing for other things. Hence once cannot say that negotiation is "necessary".


You're certainly negotiating, you're just doing so in a way that will statistically mean over the course of your career you will make hundreds of thousands of dollars less.


I think Patrick's blog post about salary negotiation opens with an illuminating metaphor. In a nutshell, are there any strange but ultimately trivial tasks you wouldn't do for 20 minutes for $100,000? Because that's the trade you're suggesting is not worthwhile.


: you can turn part of that salary into more vacation time

there are not many companies hiring you for full time at $x that will allow you to work 3 days a week for 50% of $x, much more likely they will let you go and hire somebody else (unless you've been there forever and are the only person that can do something, in which case the company should worry about you getting hit by a bus)

money can be used to purchase many things, but in our field work/life balance is not one of them, unless of course you mean be lucky to have a good exit and then for the rest of your career you can work on what you like for part-time, but that is not realistic if you need a salary to put food on the table


> there are not many companies hiring you for full time at $x that will allow you to work 3 days a week for 50% of $x, much more likely they will let you go and hire somebody else (unless you've been there forever and are the only person that can do something, in which case the company should worry about you getting hit by a bus)

Your calculus is a bit off. A company will not hire you part time because employees need time to learn the job. This includes the culture and political aspects.

Once you've been there for awhile, that all changes. Now you're a part of the company, so the company is going to be way more willing to jump through hoops to keep you around. The reason they wouldn't let you come in at 3 days a week, is the same reason they will start letting you (if you negotiate it right) after you've been there a year or so. It's tougher and more expensive to assimilate a new employee than it is to make a productive current employee happy.

If you can show to the company that the bottom line won't get impacted by a proposed change, make it clear that you'll leave unless you get your way, (hard to do convincingly) and offer an acceptable path to move from A to B, then you too can find work/life balance.

It's not impossible, but it's not easy either. I'd put it as being slightly harder than getting a 20% raise, which I've done. Now that I think about it, if you want a 20% raise, then one path to getting it might be to start the process of negotiating something like this, (to let them know you're serious about not being happy) and then come in one day and ask for more money. If you play your cards right, they'd be much happier to open up the checkbook than to deal with the prospect of having half their workforce ask for the same thing you just got. (that's the real reason they don't want part-timers. Even if they can trust you not to abuse it, what about the next three people that ask?)


Another approach is to suggest you split a job with another person. I have seen several young mothers take this path as they don't need full time daycare, and don't end up with a long employment gap.


Some companies won't be willing to consider it at all - but I think you might be surprised at how many would. I've seen it happen for multiple people, even at companies where that's the last thing you'd expect.

We've been conditioned to believe that $$ (and in our field, equity) are the only knobs that can be adjusted during negotiation. In reality the actual field of negotiable variables is much, much wider.

YMMV of course, and negotiating for non-cash things can often be harder than negotiating for more cash, but it's eminently doable and is in fact done all the time - just poorly advertised.

Note: this is also why ability to negotiate for cash is and important skill. It's often easier to negotiate for cash and then trade that cash for non-cash benefits rather than negotiating directly for what you actually want.


> in our field.

I'm working in the same field as you, and I talked my employer into a remote position abroad in a region with more statutory leave than in the US, working four days a week. All this was done without a pay cut.

Knowing your own worth and having a clear idea of what you want from life allows you to buy work-life balance.


I wouldn't exactly say that. I just had a friend get a full-time position. He negotiated his work week to less than 40 hours, with full benefits. That said his hourly pay did seem on the low side.


Sorry but I disagree; What about companies such as Netflix with their unlimited vacation time? I have definitely started to see many more software and consulting companies who started to follow suit so I think it is realistic


We've heard of plenty of companies say they offer unlimited vacation time. Have we seen studies about how much it gets used?


Not sure.. I think we have to wait for places like Netflix to publish their data (if they decide to) .. but I can tell you from first hand experience I worked in such as company and I loved the flexibility and I have given such flexibility to those who report to me and the results were great.


Netflix says they don't even collect vacation data, which means they can't be pressured into publishing it and nobody can prove that their employees don't take any.


So if I were to decide that I was going to take every Monday or every Friday off, that'd be kosher?


> Being a shrewd negotiator is an absolutely critical skill in life, even if you don't want the best-ever-salary. If you know how to negotiate the best-ever-salary, you can trade it in for things that do matter to you.

Exactly. But then most people will just bend over and wilt at having to deal with a car salesman, as if that's the gold standard of having to negotiate something (it isn't by any stretch). Or they will disparage and throw barbs at the same, as if a great price should just be handed to them on a silver platter.


> Don't want tons of money but want great work-life balance? You can turn part of that salary into more vacation time, more flexible working conditions (remote?), one day off every single week, more benefits, and other things that matter to you.

Fyi, you are being idealistic here and not realistic.

Many, many companies will block you on taking unpaid time off and/or more flexibility. Too many for this to be a reliable option, particularly if you are an expensive employee and don't want to cut your salary massively.

I literally asked to work remotely [same hours, salary, etc] and their response was +1 week PTO, +$X/year instead. Basically, I can't cut my salary enough that they'd let me work remotely. I'd have to find another job.

Some things money just doesn't buy.


Negotiation is about getting both parties closer to what both parties want.

In one gig I got 6 weeks vacation, workweek not to exceed 45 hours and an Aeron chair. You still need to grok your value, but fringe benefits are usually more flexible because you can establish a value for them that is often more valuable than the value to the counter-party.


I've completely turned away from getting another job. Recent scenario: After giving in detail my 14 years development/engineering experience, they ask: "Ok, here is a logic riddle: You have 3 circles A, B, and C. A depends on B, C...." and by that time I've already lost interest. What the fuck does a riddle have to do with anything.

Next.

I'm working my existing software engineer job while I build up my customer base on my side businesses. Your interviews and shit riddles can fuck right off.


Indeed, I'm done interviewing also.

The best part is when the riddle (perhaps their explanation) doesn't make sense, or the coding test doesn't work because there is a firewall on the guest wifi that prevents it, etc.


Riddles, sure, those are stupid questions to ask. Always assuming something is a riddle can be dangerous though. I've had a few candidates basically challenge my question before that this was just a puzzle and they likely wouldn't ever run into this normally and the question was literally from our code base.


Did companies do this before the media glamorized Google's job application process? I had to do some of those stupid riddles when I was starting out but hopefully I won't have to ever again (I'm working on a side business too).


The lore is it was a part of Microsoft hiring process in early 90s and then spread out. Google "microsoft manholes".


MSFT did it .. sure .. but my first half-decade of software engineering jobs seem like coffee chats compared to the crap we have today. I think I got my first job after a 45 minute chat (was supposed to be 30 mins but we were having a fun, geeky convo and lost track of time). What's crazy is I would leave with offers in hand. This is until 2004. Google copied and one-uped microsoft. The Googlers went out and replicated their process and suddenly, most decent software engineering jobs require you to bend over.

I had a startup interview last year where they were a well-funded start up full of PhDs. Had a hiring screen (with non-trivial code), a full day of interviews over the phone/etherpad, a conversation + coding interview with the frickin CTO. This was to decide weather to fly me to the Bay are for the actual interview (was on the East coast). I had a full-time, high workload job at the time (constant crunchtime) ... so this was brutal on me. Never doing this again.


Well at the peak dotcom era you often could get away with spelling HTML without stuttering and you were hired. Microsoft could afford to discern however, being the top employer at the time.

I am with you though in principle. Some fizzbuzz-like test is OK, I understand they want to know if you can code at all. Something like code review where you think aloud is fine too. But take home assignments, whiteboard coding, huh.. An acquaintance of mine had to conjure a working spreadsheet application in one and a Space Invaders clone in the other. Mind you, none of the jobs had anything to do with spreadsheets or gaming.

If my living would depend on it I'd do it, no question. But in a relatively liquid job market of today I'd ether pass or offer to do it at a competitive hourly rate.


Indeed. I'm not sure I would put up with a riddle now. That or being asked "what are the pillars of OOP" or some dumb meaningless memorization based quiz. Interviewing is incredibly difficult, yet so often the people who do it put no effort into improving their skills, nor do they even appreciate they have a problem. But this should be the bread and butter of any business. Being good at finding high quality candidates is a magnificent competitive advantage.


As a recruiter, even I often refer people to Patrick's article on salary negotiation, and I agree with much of it. There are a couple points that weren't covered that I think are valuable.

First, negotiating live is often difficult and it seems somehow job seekers are somewhat surprised to find themselves negotiating (or talking money at all). You need to be prepared for the conversation, otherwise you will find yourself throwing out numbers that you will often regret. Expect that you'll be asked these questions at every point in the interview process and be prepared to answer - just like you may study technical topics.

Second, in negotiations job seekers tend to mistake silence for a 'no' answer. "I'm looking for 130K". Manager is silent for 10 seconds. "...but that number is negotiable". Don't do this. Once you state your number, don't speak until the other party has spoken - otherwise you are negotiating yourself down before getting an objection.

Lastly, it can be rather powerful for the company to envision you starting work (the end goal of negotiation) during the negotiation process. Instead of saying "Can you make it 130K?" as a counteroffer as Patrick suggests, it can be stronger to say "If you are able to offer 130K, I am willing to commit to a start date of MM/DD/YY." It's a subtle difference, but asking for a number without context can be mistaken for "negotiation simply for the sake of negotiation", whereas an offered start date lets them know you're serious and committed to the negotiation.

EDIT: And as much as agency recruiters are maligned, Patrick's mention of having an "internal champion" isn't much different than an agency recruiter's representation. Sending resumes to "jobs@company" is ineffective. As an agency recruiter, if I'm presenting your resume it is going direct to the decision makers, it's being presented by a trusted source with credibility (for some agency recruiters anyway), and it's not just a resume but rather a short letter outlining why this candidate is a fit for the role. Not to mention, when negotiation does come up, the agency recruiter will have experience and know both the salary ranges and negotiation tactics of the hiring company.


I can't help but to pile on about the difficulty of negotiation. The reality is is that 90% of it is done before you've ever started talking. You can maybe influence 10% of the outcome, and it might be worthwhile to do that, but it's also worthwhile to work on that 90% beforehand, and studying negotiation techniques doesn't really help with the 90%, only the 10%.

So if you look at the opportunity cost of effective negotiation, the value prospect doesn't look half as clear. If I want to buy a house, the actual negotiated price is probably somewhere down around #8 on my list of considerations. Time spent looking at comps, finding a good inspector, understanding the real estate biz, could be far better spent.


It's much less difficult in situations where you aren't live - negotiating via email, for example, gives you time to think through ramifications and scenarios. I talk quite a bit to people negotiating offers, and the overwhelming majority get into trouble when in a live setting.

I agree that you are only influencing a relatively small percentage of the outcome in most cases (perhaps higher than 10% though), and at least part of that 90% you refer to consists of the image created when you were first introduced to the employer. Your resume, profile, even your previous employer's identity - that data gives an employer an initial impression of your price tag and influences where negotiations may go. This is even before the interview.


"Time spent looking at comps, finding a good inspector, understanding the real estate biz"

This is literally the biggest part of negotiation.

https://en.wikipedia.org/wiki/Best_alternative_to_a_negotiat...


Yes, that's what I intended to say. My point was that of all the things you have in your life right now to focus on, negotiating price for a real estate transaction may not be the best use of it. It's likely to take more time than it's worth when you take into account opportunity costs.

Sure, if you have nothing better to do, go nuts.


Thank you for this, especially the point about silence. This is such an under-recognized negotiation tactic. I'd venture to say that negotiations often wind up as a contest of "who can bear the silence the longest". I particularly like the suggestion about a stronger statement when making a counteroffer.

It's very refreshing to hear this advice from an agency recruiter, because they are indeed maligned here and elsewhere. Part of the problem I think, is that the incentives of the recruiter are rarely aligned with the candidate.


I hear the misalignment of incentives argument quite often and I've written about that several times.

If we are talking about an agency recruiter representing 15 different candidates for one position, clearly the alignment isn't there.

For smaller agencies like me (solo) doing lower volume work and working with startups, I find that my incentives are almost always aligned. If I only have one candidate submitted for a position at a given time, you can be sure that my incentive is for that candidate to get the job.

A system where candidates paid recruiters as a "job agent" would ensure aligned incentives, but candidates aren't likely to pay for a service they currently get for free (understanding of course that the hiring client is the primary recipient of the service as most view the relationship).


> Fake the confidence here. If they say, “What are your salary requirements?” You say, “Well, it’s really too early to talk about salary. I just really want to make sure that we’re a great fit for each other. If we’re a great fit for each other, we can work something out. If we’re not a great fit for each other, it doesn’t matter. We shouldn’t work together no matter what the numbers are.” Whatever you need to say, just do not answer the salary question until you’re actually negotiating.

No need to dance around it so much. Don't worry about how to phrase it! Just tell the recruiter, "No I'm not going to discuss salary until we're actually negotiating." There's really ZERO need to dress it up. They know the game. Just stand your ground, and say "no", "no thanks", "really no", "not yet"... until they say the team wants to move forward with an offer. NOW we can discuss.

I'm saying this because engineers are already nervous about how to negotiate the process, and there's no need to make it even more stressful by worrying about how to delicately phrase things.


It really depends on what kind of company you are negotiating with. Companies of a certain size will have salary bands and they can't pay above a certain amount otherwise they risk salary imbalances within teams.

Small startups may be playing with their runway and so need to know where you stand in order to know whether your salary expectations will impact the runway too greatly.

You might be able to play this game if you are personally being recruited for something specific and/or working with the founder or a senior enough person in a large co who can break you out of the bands. But otherwise you risk the recruiter simply not qualifying you for consideration.

(I've hired many, many engineers in my career)


I've run into this argument in the past. It also happens when you're already on the job.

Company: "We can't possibly give you a raise! 'The book' says we can only pay you this much and no more."

Me: Uhh, ok...

[A few months later]

Me: Well, bye!

Company: OMFG WHAT COULD WE HAVE DONE TO RETAIN YOU???


> 'The book' says

Hah! I just had this happen to me last month. My wife accepted a position (at her dream company) on the other side of the state. That means we're no-questions-asked packing up, selling our home, and moving for this opportunity.

I told my manager the news and gave him the choice: The company can transition me to full-time remote or they can have my resignation (which I had typed, printed, signed, and brought with me).

So, that afternoon, I'm in the HR managers office. They (HR, not my manager -- he is an amazing, caring, understanding person who laughs at this story harder than I do) literally pulled "The Book" out and pointed to some section of text while stating, "ENGINEERS ARE NOT ALLOWED TO WORK REMOTELY!" at me.

I'm still there, we made it work, but it took almost more effort than it was worth.


The book is definitely not based on the local job market. I get emails from recruiters and have a sense of what the proper salary range is for my position. The book is usually on the bottom of that range.


Most companies pay previous salary plus 15%

Raises small after hiring

"Why is everyone in this industry such a job hopper?"


Yeah but even those bend the rules when they love the candidate... It happened to me once, got a completely out of band salary because the Architect and client liked me a lot and just said "Fuck it, pay him" to the HR and the rules.

I was pretty happy :D


I had a situation where I asked for a certain salary and they said it was out of the salary band for the job title. The solution was to change the job title to one where the salary was in-band.


Yup. And btw, it would have taken you two years of busting your ass to get that job title promotion otherwise. Exactly why it's so important to negotiate hard up front, before you start.


This can work in the opposite direction too: the salary they will offer is below what you want, so you waste a ton of time going through all the interviews etc only to find out that there is no way you'll take what they offer. I don't know what the best solution to this problem is though.


> They know the game.

They know the game but it doesn't mean they'll play accordingly. I've had plenty of recruiters tell me they can't realistically move forward unless I give them a number and they get aggressive about it. I don't but I imagine most do. So in a way, I can see why he suggests dancing around the topic.


I've told recruiters to not send resumes for candidates who wanted over $X comp. If the person won't let them know a ballpark up front, I'd have never seen the person.

Unfortunately, I don't have enough hours in the day to interview good candidates who might or might not be willing to come down on my max comp.


Does it really happen so often that there's someone you'd hire, but they want more than your absolute max? In my experience, just FINDING good people is 95% of the challenge -- compensation is not a common-blocker to make it a first-round filter.

By having your recruiter filter resumes by comp, it may be that they're accidentally throwing out just those few resumes that were actually the strongest! Maybe you could have negotiated to a good number for both of you.


Why don't you instruct the recruiter to come out and say what your range is? That way you avoid the problem.


So then there is no shortage of good developers.


The advice on job hunting is the same kind of vague, shotgun style hunt with the word "meetup" thrown in. This is a terrible way to find a job you love. You might get lucky, but there is a better way. Pick where you want to work and then be good enough to work there.

I'm a strong believer in the philosophy that you need to walk in the door knowing you want to work somewhere. If you don't know already then you've done insufficient research or are insufficiently motivated and it will show.

Starting right out of college I picked where I wanted to work first and then started making the connections to make that happen. I always volunteer to work for free prior to getting hired. Why? because a work-to-hire internship, no matter your level of experience, is better for both you and the company. It's especially good if you don't fit the traditional resume of someone in the role for which you're applying. This works especially well with startups since their hiring practices are flexible and they are cash conscious. Four out of my last 5 jobs have been landed like this, the other I was recruited.

You should be excited about the specific company you're talking to. You should want them to succeed from day one. This will make you stand out from the crowd of "job seekers." You're not looking for a job, you want this job and you're ready to buy.


Horrible advice.

The main problem is that it is impossible to understand the company and how it operates from outside. And larger companies are divided into organizations and each organization is quite different. Of course, it is very important to investigate the company and learn as much as you want about it but be aware that information you gather might not be correct and up to date: there will always large number of unknown unknowns.

The other problem is that "always volunteer to work for free prior to getting hire" is that you are starting your negotiation from very very low anchor.

In short, do not think as buyer (I want to work here), you need to think as salesman (I want to sell myself).


There's a lot more to a company than what it sells. Saying "I want to work here" without knowing the people there, for me, would be a non-starter.

What you're recommending (doing the background research on companies) is useful, but the worst jobs I've had have been the ones where I didn't do a good job interviewing my coworkers, and was just excited about the product, or the theoretical culture.


There's a lot of companies that you've never even heard of that are great places to work. You haven't heard of them because they don't make consumer products and you're never been in the market for ${business solution}. Only going for the places you know about or have heard of is selling yourself short. There is also good technical roles in some otherwise non technical companies.


"I always volunteer to work for free prior to getting hired."

This sounds like a perfect way to devalue yourself to any potential employer.


But offering to do a short working internship, which is paid at a competitive rate that would translate to the salary you are seeking, is reasonable. That way you are compensated for the effort you provide to assist the hiring company in figuring out if they want to work with you, and if so, at what price they are willing to agree to it.


It can be, but that gets pretty close to contract-to-hire, which is rife for abuse from the company.


When I say short, I mean 1 week, maybe 2 weeks tops. Few places that want the scammy sort of contract-to-hire are going to bother with someone who expects to be paid their regular wage for a one-to-two-week time period.

Anything longer than 2 weeks, and I'd expect full benefits, possibly a signing bonus, and I would speak at length before hand to get specifics on exactly how I will be evaluated and which criteria will be used for determining if a permanent offer will be made.

This scares away most crappy companies and acts as a good filter to find good employers.


I'll respond to a few points here:

1. I've never had a problem getting the salary that I wanted and have had a steadily increasing market-rate developer salary at each job.

2. I've only ever managed to actually work for free once, the other times they insisted on paying a base hourly, intern wage.

3. If you go in thinking this is where you want to work, but are wrong because it's "impossible to understand the company and how it operates from outside," it's much less of a hassle to leave during a trial period.

Finally I think there is a lot of posturing around negotiating positions and "strength." That's bs. If you're looking to get the highest salary you can, fine, but if you're looking for a job that you love I can only relate that this technique has worked again and again for me and no theoretical critiques of negotiating strategy can change that.


Everything about this comment is great. Except the "volunteer to work for free" part which is absolutely horrible advice.

Part of "walking in the door knowing what you want... and owning it" includes understanding your worth to the company.

A company must also recognize your worth UP FRONT. Unpaid internships vary from corrupt to demoralizing. At best they set the wrong tone. Don't fall into that trap.


Yes, when you are initially paid very little, your employer rarely re-evaluates your actual value. In other words if you were "cheap" to start with, you will be seen as worth less going forward. You're initial salary negotiation is the most important; after that you will be lucky to get small raises and never to market value.

One the quirks of human nature that if you give the employer/customer/client a "deal" up front, when you switch to charging them market price, they feel ripped off.


Unfortunately, that is true.

I've seen a case where, to go up the ladder at a certain company, the best way was to quit, then work somewhere else for a time, then apply for the position you wanted to get initially... (no need for having improved any skills, external hires are just evaluated differently)


In addition, most unpaid internships are illegal in the United States (http://www.forbes.com/sites/theyec/2013/04/19/6-legal-requir...)

Many companies, however, hire paid interns on a "try before you buy" basis. Always go for at least one paid internship while in college. Not only do you get to show off your chops to potential employers, it also looks great on your resume for other potential employers down the road.


I tried this approach with a perfect resume and qualifications and got rejected after a long interview process. The problem is: there are always unknown elements and biases in the process, and people were working differently than what I was used to.

Still, lot of time went away for me, because I didn't want to go to other places. I believe this is good advice, but you still need multiple options, which means it's better to prepare but spare your own time: make sure the company invests in you as much as you do in the company at each step (even in the beginning...a cover letter is OK, but nothing more, like free work).


Comically absurd. Everything you've suggested seems specifically chosen to put you in the worst negotiating position possible.

"The winner of any negotiation is the one who has least to lose"

Why shouldn't the company have to prove they are good enough for you to give them your life?

This isn't a romance novel, it's business.


Reminds me of the approach of http://www.asktheheadhunter.com/ (if you ignore the 90' web style) is pretty interesting: find out where you want to wokr find out the problems they have show them you can solve the problems profitably


it's also interesting that (anectodally, talking to people I know) the longer one's career is the more unlikely they are to want to switch jobs just based on having to deal with interviews, which of course makes it more likely they don't go for that cool interesting job they might flourish even more in, and makes it also harder for companies to hire as there are less available people around than there would be otherwise.

It's like, yes, you've spent 20 years in progressively more architectural roles, however the decision to hire you or not is based on whiteboarding algorithms you last had to legitimately write out years ago in university and crammed on for a few weeks before this interview.

While I was in university 20 years ago for fun I wrote an iterative AVL tree library in C (everybody else seemed to do it recursive), it was difficult but rewarding, but not something I am very likely to do nowadays and if you ask me to whiteboard the rotation logic I am not very likely to do it correctly and would have no impact whatsoever on my ability to do the job at hand (because in a working environment if somebody asked me to write for production say a red black tree from scratch I would not trust my memory but take out my Cormen book and go from there, or look at AOCP)

When I have interviewed in the past, I've always tried to ask more about the candidate's past and whys of certain decisions, if somebody put on their resume that, say, they designed an API for something, I might ask them what they did for versioning, for schema, what about atomicity, do they expose txns or not, drawbacks for each, and then branch out towards general concurrency and so on and on, you can learn a lot more about how somebody thinks by drilling down from something they worked on than by hazing them on algorithms 101


I actually enjoy going to interviews (and performing them). I'm less likely to switch jobs because of a perceived increased risk. I'm at a place with a good manager, good workload, and lots of stability. If I make a change (say, for more salary and more perks) I get, in return, an unknown manager, unknown workload, and unknown stability. As I get older, I have both more obligations and an increased risk of coming under the spectre of age discrimination. At some point the risks start to outweigh the benefits, as long as I'm not unhappy in my current position.


There are some companies that I won't even bother with anymore because it is pointless to go through their meat grinder interview process again and again. If you're already employed, you have basically 10 vacation days to blow each year, and I'll be damned if I'm going to blow another one on a day-long grilling where at the end they're just going to say, "Oh, looks like you didn't go to Stanford! Such a shame..."


I agree with your observation but I've always found that attitude a little odd.

If you find interviewing beneath you, what else about the job are you going to find beneath you?

Do you find it beneath you, or is that just some kind of excuse for a worry that you might not do well in an interview?

I've interviewed for various jobs tons of times over the course of my career and I've never minded a coding session (either on a whiteboard or an actual computer). They're never really all that hard. It's an easy way to show your stuff and give the company more confidence that you actually know what you're doing. It's not a big time commitment. What's the problem?


Many people have had a different experience from yours. Idiotic, irrelevant coding questions; clueless technical interviewers using the interview as an opportunity to stroke their ego, or having no idea of good questions to ask.

I don't consider interviewing "beneath me", but its a two-way street. I prepared for my job and this interview. If the prospective company shows a serious lack of skill/professionalism, its not only a red flag, its demoralizing, especially when they approached me. I've had this happen multiple times. I've also had great, well-considered experiences. Thank goodness.


Ya, you're prolly right that that I just haven't personally experienced much on the "opportunity to stroke their ego, or having no idea of good questions to ask" side of the spectrum. I think if I did though, I'd mostly just laugh it off? It would make it clear that I didn't want to work some place, and it's not like good engineers lack for opportunities these days.

Some people just seem to get UPSET about it though. I guess that's the real part I don't understand. Why the intensity? Not from you specifically, but from some folks.


> I think if I did though, I'd mostly just laugh it off?

Until you have had dozens of them and they become the rule rather than the exception.

> it's not like good engineers lack for opportunities these days

That is a very myopic view. Outside of a few hot areas and technologies getting a job is very much a meat grinder.


you don't understand, I don't consider it beneath me at all, I mean, you have to interview somebody to know if they are a good fit, but I don't see why interviews have to be hazing rituals on things mostly unrelated with what they are supposed to measure.

If you've interviewed tons it means that interviewing and whiteboard coding algorithms is a skill you have developed and are keeping current (because you interview tons, so you do it often) so you actually enjoy "showing it off" given that it is part of your core competencies

I would love to do an interview where there is a genuine technical discussion on actual hard problems one might find in a job (say, expanding on my scenario above, what are the pros/cons if you design an API to expose txns, why would/wouldn't you want to do it, and mitigations/tradeoffs you would have to deal with in each scenario) what I wouldn't love is going for an interview with 20 years experience and being asked to whiteboard random algorithms off the top of my head unless I am applying for a position where that is required (hint: I wouldn't)

All I, and others, want is for interviews to reflect reality, where you ask me what I am good at, I show it by examples and answers, and then I ask you if what I am good at is a good fit for the position, where you ask me what type of environment I work best in (collaborative, go and do your own thing, agile, waterfall, ...) and I ask you what type of environment your company provides and if it's a good fit, and then once we figure out that yes, I can work here and what I can do for you is what you need, we have a mature discussion on compensation and it's all done.

Assume you decide to have a custom house built and are interviewing architects for the job, are you going to ask them for their portfolio, for their ideas on flow, for what architects are their inspiration, for how they would be able to make your ideas on how a house should be real, or would you put them in front of a whiteboard and ask them to draw a bathroom cabinet from scratch and fail them if they forget to put the stop on the rails so the drawer does not come out when you pull it out?


I guess maybe I've just been lucky (or perhaps have chosen which companies to talk to well) in that I've always had discussions closer to your "what are the pros/cons if you design an API to expose txns" example than "implement a red/black tree off the top of your head." Perhaps this is coloring my judgement.

Honestly if someone asked me to code a red/black tree, I'd probably say "I remember that term, but I don't for the life of me remember what it is exactly. If you want to give me part of the answer I can probably logic out the details on my own but I'm not going to do well on your memorization test."


Shit, that bit about the architect is fucking brilliant. I'm going to gratefully steal it and keep it close to my heart. I've done a bit of hiring and interviewing, and always try to keep it valuable and productive for the candidates, eliminating as much gruel from the process as possible. Sometimes, it requires convincing others not to do some nonsense they think is valuable. This is the perfect analogy for helping people understand.


It's not the feeling that it's beneath you, it's that it's illogical. If interviews made sense, nobody would have a problem with them. Until we find a way to conduct interviews in such a way that it can properly judge a candidates abilities, people will continue to feel this way.


>If interviews made sense, nobody would have a problem with them.

Not always. Interviews can be a very stressful and uncomfortable experience for some people. Even good interviews that make sense when the candidate is a perfect fit. Especially when you aren't job hopping and interviewing every two years so you're out of practice.

Honestly I don't even care to interview people, I'd much rather not.


Ya, I get that. Lots of things in life don't quite make sense though. This particular one just seems like a weird one to get hung up on given that:

A) the benefits of finding the best possible job for you can be huge

B) the degree of annoyingness for this one is soooooo low


I have been working in tech for a few years and have experienced a variety of company sizes and technologies (FTE and freelance). What I will say is that in all these jobs, by an order of magnitude, the interview process was the biggest slog, and the most emotionally taxing part.


[wearing hiring manager hat] The problem with demanding syntactically correct code on a whiteboard, as a test of developer ability, is the colossal false negative rate. Your personal data point doesn't generalise, sorry.


Who said anything about demanding syntactically correct code on a whiteboard? Certainly not me.


I went to an interview where the CIO commented on my incorrect syntax on the white board. Of the 2 other people in the room, 1 who would actually be the direct report for this position said that the compiler and resharper would have caught it so no big deal.


"Oh yeah, you’ve been writing web applications everyday for the last five years. Great. Can you please go up to a blackboard and using chalk write out how to reverse a binary tree?"

Hahaha, I feel like this was taken directly from one of my HN comments.


I actually prefer chalk to whiteboards, but that's a remnant of studying math in college rather than CS. (Which, BTW, is one reason I've heard for my resume getting screened out before. Not the chalk thing, but the math thing. :P)


Off to the chalk pile!


Chalk always struck me as better for the environment, too.


MIT still has chalkboards. I'm sure there's a reason behind that.


How else do you draw dotted lines?

https://youtube.com/watch?v=l789l6np-qA


Amazing haha!


Better for the environment, yes, but not for office equipment (or so I've heard). Also, they don't sell chalk at Office Depot, IIRC. :P


It's not better for your lungs.


This is extremely dubious! I trust comparatively coarse rock dust much more than ultrafine marker dust with I'm-not-sure-what in it.


I'm guessing it was a reference to this tweet:

https://twitter.com/mxcl/status/608682016205344768


I don't get it. If the job you're applying for relies heavily on data structures and algorithms, why can't they ask this?

If you're stepping up from writing web apps, you should have done some homework first.


Just the other day during a JavaScript/React interview I was asked how a HashMap was implemented.

At this point it's only being used for its Computer Science signalling value. JavaScript doesn't even have true HashMaps, and it's unlikely you'll find yourself implementing them while building a web app.

It's just one example of poor interviewing practice but it's not the only problem.


While implementation details may be unnecessary, I feel like knowing how something performs for lookups, insertions, deletions, etc. is important. It definitely shouldn't be the end all be all of hiring, but it is definitely helpful day-to-day to know how the code works performance wise with the data structures you are using.


that CS stuff you can look up and understand when you need it, like when you're looking for an efficient algorithm to do xyz, and so you should have curiosity and a wise intuition but beyond that as a web developer that knowledge should not sit in your brain because it will occupy precious thinking resources that you should dedicate to building great UX and making the code modular and maintainable which takes dedicating brain cells to understanding the world around you, not just a commodity piece of textbook knowledge that makes you feel smarter and covers up insecurities about having produced dull or even terrible UX -- "hey I know how to balance a red/black tree or build a hashmap implementation so I must be a under appreciated genius" when in fact that is commodity knowledge anyone can pick up from Google and a few hours of research and benchmarking (and having ability to allocate regions of your brain to tasks of wildly different nature on the fly which means you never keep crap in your head unless you're using it on daily basis)

We could write a thesis on this, right? and we would disagree wildly, but in the end go put up your amazing UX n youtube and show me how memorizing the Algorithm Design Manual helped you create that amazing UX. UI work is mostly art and craft, with math/cs still relevant but applied from an intuitive dynamic center of your brain, not stored and ready to put on a white board on demand.


Bingo. If you're looking for someone who's a walking Wikipedia, then those "how does this algorithm work" or "what's the Big-O notation of that algorithm" questions will find that person. If you want someone who gets stuff done and is resourceful when they need to look something up, then that line of questioning is going to filter those people out.


I get what you're saying. But I think there's a limit.

IME there are platforms (Ruby, JS, others) that have such high method dispatch overhead that the fastest "algorithm" is generally the one with the smallest stack-trace for 99% of problems.

It can be a very very very difficult bar to overcome.

I've only ever seen algorithm choice play a meaningful role in traditionally fast/compiled languages. YMMV.


Absolutely not. Even if you write an interpreter in Python, a hashtable lookup (O(1)) leading to an O(n) algorithm will be faster in this interpreted language than a O(n^2) algorithm using the O(n) list lookup in C; for a sufficiently high n, of course, but it's not uncommon to have n of several million these days.


It's absolutely very uncommon to have a single collection of several million in the languages I mentioned in the web-app space IME.

Anyways, that's my experience with Ruby. Since each allocation (at the time) took 23 bytes of memory, even object graphs c# or Java might consider fairly modest (say loading 10,000 rows with a dozen fields into an Array<User>) would burn through a silly amount of memory comparably and probably trigger a GC cycle.

We're talking nanoseconds on the compiled side vs hundreds of milliseconds.

It takes a very very high N to overcome that sort of issue. One you might run into in scientific computing a lot more frequently, but not the sort of issue you'd often (if ever really) run into writing a web-app.


Ok, you're probably right about Ruby and JS. I was thinking about Python, which I would consider in the same class of "slow" (wav) languages, but it's also quite common to do data processing and machine learning in it.


This doesn't really address my first question.

But, I can see how if they job doesn't require data structures and algorithms (say, just a simple CRUD app), sure, this type of interviewing is not beneficial.


Did they mean HashMap or were they using a fancier word for key/val store?

Were they expecting you to account for collisions?

If you ever have an array of a few thousand or hundred thousand items, knowing how to make a hashmap can be pretty useful for performance even in js


They were Java developers so I think they were coming at the interview from the perspective of Java developers. I wish I'd known this beforehand as I could have markedly improved my answers by bearing this in mind and explaining myself better.

For example later on they were trying to test me on JavaScript type irregularities. I did not realise that `typeof null === 'object'` or think this was important in practice (although I expressed no surprise as when I'm trying to test any JavaScript type I generally use a high-level interface to avoid JavaScript 'wat' moments). They seemed to think I'd be doing if-elses at the top of each function in order to perform the type checks that Java would have given me for free. I mentioned that 'flow' would be a better idea if you weren't happy with duck typing, but this probably sounded like I was trying to dodge the question to a Java developer. In practice when you're writing JavaScript code, it's popular to be lax about this kind of thing and write code like `config || {}.property`.

In conclusion:

I think that Computer Science is useful but less useful here. I'm actually now mid-way into some Coursera algorithms courses for my own personal learning as I think they'll be very valuable in other tasks.

I think the problem was that you could tell that they were primarily Java programmers by the topics that they gave importance. I'd say there's a strong chance that they'll hire somebody with a similar skill set to themselves and will not end up writing natural, best practices JavaScript.

People hiring in languages and domains they do not know well can bias themselves with the wrong kinds of questions and opinions. This seems to be a common interview failure case.


The problem is: interviews shouldn't be a mini-GCSE. If I have 20 years of experience and you want to ask me about something I did 10 years ago, I probably can't reproduce it on the spot, but does that mean I'm incompetent?

The idea of "do your homework" for interviews trivializes professionals down to meaningless data points where real experience and past accomplishments are all rendered as null.


I've worked with people who have had 20 years experience and could tell you some detailed stuff about the projects they worked on. Problem was, other people on the project did all the heavy lifting.


If something's on your resume, I consider it fair game for asking about.


So, testing someone's long term memory will reveal something about their job skills?


I never press for details, but if something's on a resume it's because the applicant wants me to consider that in my hiring decisions, and therefore should be prepared to back it up.


The problem is, most don't. If you have been writing web apps for five years and are interviewing for another job doing the same, it is highly unlikely that anything the interviewer asks that you have not already been dealing with on a daily basis is relevant to your actual ability to do the job.


They can and should, if the job truly relies on algorithms and data structures. Problem is that most jobs don't, and they still interview this way.


Web development relies heavily on data structures and algorithms?


> "If the job you're applying for relies heavily on data structures and algorithms"

JustSomeNobody figured that if the interviewer is quizzing you on data structures and algorithms, surely the job you're applying for must rely on such knowledge. If only.


No, I assume you did your homework and found out that the company in fact DOES rely heavily on data structure and algorithms.

If the job is hiring for just another web/CRUD dev, then sure, asking CS questions might be out of place.


Here's a list of reasons I've heard for having my resume screened out:

* Didn't study CS.

* Didn't go to "brand name" school.

* One of my job titles (which currently comprises half my software experience) doesn't say "software engineer" or similar on it.

* You know Python; we use Ruby (or similar)

It gets demoralizing after a while, That's the main reason Patrick is right about bypassing the resume black hole. It just doesn't work. I seriously wonder about the number of interviews I would have gotten had I crossed out the school I went to and written "Stanford" or "Berkeley EECS."

I've got 3 years writing Python software, so it should start getting a little easier (and it has -- very little).

PS I'm looking, and my email is in my profile if anyone wants to chat a bit. :)


Here's a few I've had

* Needed 5 years experience of 4 year old framework, you only have 3.5

* Didn't mention vi. I was convinced this was excuse, phone call to recruiter seemed to indicate dense recruiter and he thought it as important as mentioning C++ or Java. Why it mattered was another thing.

* You don't mention specific flavour and minor release of OS.

* You don't mention degree. I'm past 40, why does this still matter? In fact you're the first to ask in 15 years...

Not to mention all the false positives from interfacing with some other language or app.

Memorable interview - Recruiter had completely falsified my CV and given me a ton of experience I simply didn't have along with taking away a good chunk I did have. 5 mins in and it was an obvious farce and I handed interviewer an accurate CV. We had a bit of a chat and agreed it wasn't something I'd want or they'd offer.


On the degree thing... I recently got pretty deep into the interview process at Google. I got through the interviews and did well enough to be recommended to some departments. The Payments team was interested in me based on my interview results. Then, my information (resume and interview results) gets handed to the "hiring committee". They needed some more information: specifically, what my years of undergrad were (although that was already on my resume) and what my freaking GPA was (that wasn't). Suffice to say that although I went to Berkeley, my undergrad degree was not CS, and I guess my GPA wasn't high enough because I didn't get an offer.


Perhaps companies are really telling you that they have so many more obviously qualified applicants that you probably won't beat out the other candidates, even if you are perfectly qualified for the position.

It's like being picked for a basketball team. You might be able to nail three-pointers all day long, but if you're only 5'8, be prepared to be picked last.

It's even worse with recruiters, because sending a bad candidate has the potential to lose them out on a lot of future business. So they have a huge incentive to play it safe.


Two years ago I applied for a a month contract as a JavaScript developer for a Microsoft .NET shop. At that time I had 7 years and several big and small projects with JavaScript experience, and a few .NET projects.

They were not interested because I had a lot more experience with Java and Linux than with Windows and .NET.

Lesson learned, now I hide less relevant experience and highlight the more relevant experience. The "holes" is my resume can always be explained later.


Your profile doesn't mention where you are based, or the range of locations in which you would be willing to be based.


It's too bad to hear that, and a surprise to me... always thinking that it was an applicants market.

Also, python didn't strike me as a hard-to-sell language.


Python's weird in the ecosystem of languages. It's way more of a hobbyist language than it lets on. Since, as Patrick writes, most dev jobs are for line-of-business apps, and Python occupies a very very small niche in that world, very few devs can specialize in Python and hope to easily find a job if they present themselves as a Python specialist.

Data science might change things, but it's still a very new field.

If you're looking for a dev job, you should learn Ruby unless you have an irrational disdain for it. It's close enough to Python to be a fairly easy switch, but it will raise your position considerably in the job market.

But really, you should take Patrick's advice and not present yourself as an X developer. I do because I want to work primarily with Ruby and Rails, but when I was starting out, I presented myself as a competent engineer that could get up to speed effectively with any framework. I got a .NET job that way, having no former experience in the stack. Got fired in three weeks, but I still got paid. Now I do Ruby exclusively, and have no trouble finding opps.


I'm not sure about the UK. Python, according to these job-regex-match statistics, seems more in demand:

itjobswatch.co.uk: number of jobs in the past 3 months citing ruby: 2,766, python: 6,013. Rank table: http://www.itjobswatch.co.uk/IT-Job-Market/UK/Programming-La...

GB section on this page put Ruby mentions at 3% and Python 6% https://gooroo.io/GoorooTHINK/Article/16300/Programming-lang...

EDIT: indeed.com, ruby vs python: http://www.indeed.com/jobtrends/ruby%2C+python.html

Does anyone know where else to get data (not anecdotes)?


what does "citing" here mean? in my experience if a job has, say, ruby, odds are it's a ruby job, if it has python often it's a job on something completely different where at the bottom they put "familiarity with scripting (python, perl) is an asset"


If you're actually working as a developer, you really shouldn't be a "specialist" in any language. That's like a carpenter who can only work with one kind of drill.


Depends on what kind of career you want and what you're hoping to get out of it. For me, a career is a tool I use to enable my life. Regularizing it as much as possible is worth it for me.

Languages don't just disappear. People still make fine livings programming Fortran. If I'm going to keep programming for 20+ years, I'd be happy to be one of those guys. I'd rather move into business, but if for some reason that never happens, being a specialist in a deep niche holds a deep appeal for me.


It's absolutely an applicant's market... if your profile fits within an extremely narrow window of what companies are interested in.

The tech industry is largely a group of companies competing to outbid each other to hire a small pool of "credentialed elite" developers for lots of money, and everyone else.


I've applied cold for jobs where every one of the requirements matched a point on my resume and didn't get so much as an acknowledgement.


Email incoming :)


Ramit Sethi has some great material. He has a download of a handful of resumes his clients have used successfully in the past including an engineer. I used those as models after seeing no results from my old resume. Then I submitted the new resume to a company with great reviews on Glassdoor and open positions I might be a fit for. I was curious to see what would happen. I was running a test and willing to follow through if anything came of it. Results are I'm flying out for final interviews next week. Time to study Ramit's interview prep material.

I've been reflecting on my experience with resumes and interviews for various positions, mostly technical, over the last 30 years. For me, getting jobs has almost always been about rapport with the person across the table or other end of the phone. Natural problem solving/engineering skills and abilities with a toolkit are important. Engagement with the interviewer via interesting, relevant stories feels like one of the keys.

A friend who used to hire engineers years ago at Sun told me he would hire based on two factors, assuming basic background/skills on the resume. One, light behind the eyes and two, could he enjoy drinking beer with the person after work? I have another friend who used to successfully hire engineers in a similar way. Not sure why we don't see more of this out there. Though the informal route probably embodies this approach by it's nature.


> What typically happens is that people are screened into a hiring process on the basis of what’s on their resume... That already throws a lot of the baby out with the bathwater.

In my experience, about 80% of the candidates who send in their resume will not come close to working out. If you've never run a hiring process before, you'd be surprised how many people look decent on paper but somehow can't write a line of code without some serious hand-holding. The OP points out that sometimes the opposite is true (a candidate with a mediocre resume ends up being stellar), but this is an exception and you'll waste a lot of time trying to find these people.

I've honed my resume screening skills over time and I've gotten pretty good at filtering out most of that 80%, and I know I'm likely to screen out plenty of talented folks, but it's well worth being able to focus my time and my team's time interviewing more exceptional engineers than mediocre ones.

In other words, I think it's OK to throw out a lot of the baby with the bathwater as long as you're left with mostly baby.


> In other words, I think it's OK to throw out a lot of the baby with the bathwater as long as you're left with mostly baby.

Quite true, and basically what companies like Google do.

The issue comes in that we have been inundated for years with people bitching about "talent shortages"; i.e., there ain't enough baby left over.


> you'd be surprised how many people look decent on paper but somehow can't write a line of code without some serious hand-holding

I think a lot of this may have to do with nerves. Writing code on a whiteboard when given an arbitrary question is very different than writing code in a comfortable context and environment. I think it's safe to say that a decent percentage of people in our field let nerves affect their ability to write quality code at the same level they normally do.


Just a minor note:

> What that looks like in practice is you somehow find that an engineering company is hiring, which by the way, every company that has more than 10 engineers is going to hire engineers this quarter.

Not mine. We haven't hired an engineer, or anybody else, in over a year. We aren't struggling, either. We just don't have the work volume.

Maybe we are the exception, but anyone following this advice and trying to contact, say, me is just setting themselves up for disappointment.


See, I have had the opposite experience in almost all of my jobs. It could be the supply/demand in your locale/field but the shops I've been at have usually always been looking for more good engineers, even if they didn't have an open posting.

Point being, as he mentions elsewhere, you should do it in parallel. For every company that isn't, there's probably another that is open to hiring.


I think part of the "shortage" is also that companies are looking for good engineers at a price _they_ are willing to pay, not what the market is necessarily asking for, which is why they have to reject a whole swath of higher quality candidates saying they're too senior.

I know a lot of good engineers that just become contractors because that's the only way to transcend the market salaries for programmer employees. There are a half dozen jobs I'd love to apply for but the salaries just don't match what I make as a contractor (even taking many benefits into account).


I agree with you RE: the salary price being a factor, but I think what I'm saying is, there's a lot of companies perpetually hiring good candidates - even if they don't have a desperate need for one enough to be actively recruiting. Employee referrals from good developers are often some of the easiest good hires you can find, and when they fall into your lap if you can afford them, and they fit in, you jump on it. There's a reason so many companies offer referral bonuses. It's downright cheap to give a dev 5K to refer his friend/former coworker compared to paying 18-22% in recruiting fees for a higher risk hire.


10 years ago I contacted a small company (7-8 developers) across the country from the city I was living in, that "wasn't hiring". A week later, after a simple coding exercise and a few interesting hours on the phone, I was scheduling my all-expenses-paid relocation.

That relocation was the best decision of my life. And it started with contacting a company that originally indicated they were not hiring.

If you're interested, you make contact. Just don't expect that it has to lead somewhere. It never hurts to try.


I liked the article overall, but I also took issue with that quote. Every company might be _interviewing_ but not as many are actually seriously hiring. There's a difference. I think in today's job market, companies can afford to take their time and "fish" for the best bargains. There's no shortage of under-employed tech workers.


Yep, there is a massive difference. I've seen it said before on HN: They're real serious about interviewing and not at all serious about hiring.

I could actually go on about this at length. Over the past year, I've witnessed some close, personal friends going through it. From what we've observed from their experiences, as far as we can tell, it's legacy cruft, hazing rituals, and dysfunction combined.


Are you saying if a superstar dream engineer came along and offered to work for your company you wouldn't somehow find room for her?

The only time that's been true for any company I've worked for is in the few months immediately following massive layoffs...


No, we wouldn't.

Maybe for a few startups who are "growing" this is a good strategy (idk) but not the majority of businesses. It isn't good business to randomly hire engineers you don't have work for only to lay them off in a year because... you don't have work for them!!! Your rockstar engineer isn't going to have a good time twiddling their thumbs all day anyways.

My company has way more than 10 engineers but we rarely hire. Our work level has been very constant over the last decade and people rarely leave so they don't need replacing often. The majority of our engineers have been working at the company for over a decade.

That's not even how the majority of businesses work and many hiring managers aren't even allowed to hire without a specific job opening. My boss (also the hiring manager) at the company I interned for wanted to hire me full time instead of replacing me with a new intern after my internship ended (which was protocol for that project I was working on). He couldn't without the higher ups, who worked in another office, approving a new full time job opening which they didn't want to do at that moment. He was only allowed to replace me with another intern because that's what the higher ups called for, it was an intern position. There was no other full time positions open.

Yeah, it's true that you should try to network in case there is a job opening somewhere that hasn't been advertised yet. But it's not going to work to assume every company is hiring all the time. That's just setting yourself up for disappointment. Realistically most companies aren't just going to hire someone on a whim.

This whole article sounds like an unrealistic pipe dream. I guess this is how "startups" operate, I don't know, I don't live anywhere near California.

(Oh yeah, non-salary benefits like vacation or health insurance are just not negotiated, they are determined by an algorithm in the company handbook)


Hard to imagine a job where, as a developer, you can't find work to do.


I work solely on contracts for external companies.

If a job with Z features is negotiated for $X you can't just throw in a couple more engineers, give them a couple features they didn't ask for, and charge $Y. You can only charge work on a project if that work is specified in the contract. Otherwise that's fraud.

And anyway, you're apparently going to hire all the engineers who ask you out to lunch (according to this article) so you're going to have a whole lot of engineers very soon if you are hiring this way.


Our company couldn't afford a superstar dream engineer. I've met a total of one. He makes nearly half a million at Netflix. Most companies I know of also aren't willing to shell out the cash required for superstar dream engineers.


Basically what nommm-nommm said. We have craploads of work to do, but what limits our bandwidth is what our customers will actually pay us to do. We do bespoke work on contracts, so if we don't have the contracts we can't do the work or hire the people, no matter how badly we might have to.


How do you have too much work that no one will pay for?


Yea, there's hiring freezes too at bigger corps. Even if they loose a dev that can't always replace her.


> We aren't struggling, either. We just don't have the work volume.

This is a bit of a contradiction. If you aren't growing, you are dying.


In general if engineers changing jobs after 2 or 3 years (quite common), let's say every 2.5 years, then for team of 10 engineers it would be exactly need for one hire a quarter.


I have been here for four years. Two engineers and three coding researchers have been here longer than me. Three engineers and one coding researcher have been here less. In that time a grand total of three engineers and one researcher have left, so we average one per year.

At my previous large company, where I spent nearly ten years, I can count on one hand the number of engineers who left for reasons other than firing or retirement.

This "engineer churn" is very much a product of certain overheated markets. For most of the world it just is not the case. In fact, that is my main issue with articles like this. Not every market is overheated like the Valley, and you cannot cast what goes on there like it is the way the world works.


I had a conversation with a friend about a hypothetical algorithms certification program. Yearly, you sit the exam, do the whiteboarding, regurgitate the big O stuff. You get a nice little certificate, and then a tech company can skip that part of the interview if you show you've passed the test in the last year.

The question then becomes, what do you ask if someone's algorithmic knowledge is no longer in doubt?


Theoretically, the employer could just look at the grades a person received in their algorithms class in college. So, how would your certification program inspire more confidence than a university degree?

That's one of the perennial problems with programming certifications -- they either certify technology that falls out of favor/use after a short time, or it certifies evergreen techniques that colleges/universities are supposed to cover. So you end up competing with MS/Cisco/Sun or Harvard/Berkley/etc.

Also, sites ranging from HackerRank to StackExchange offer a similar service. It's not a "certification" per se, but they certainly market their platform as a way to identify effective developers.


I didn't mean to say it would be an easy problem to solve.

More interesting though is the vacuum it creates in the tech interview process.


I agree with almost everything in this post with the exception of taking others for burgers and asking them about their salary (directly or indirectly).

Most people will not feel comfortable sharing their salaries or salary scale (company information) with someone they don't know or just met. Thankfully there are sites such as Payscale and Glassdoor where people share salaries anonymously so you can lookup the salary scale/ range for a company.

Even if you can't find it for company A that you are intending to work for you can always do a comparative market analysis; look up salary info for company B or C who are in Tech and in the same area/ domain and you can use this information to at least get a baseline or as leverage in the negotiation.

In fact this is something I blogged about a few days ago https://dreamjobexec.com/7-tools-help-get-tech-dream-job-hin...


I really don't agree with the advice to kick the salary question down the line.

It's asked early for a reason—to determine if you're compatible before proceeding with interviews. The majority of software developer jobs out there pay (substantially) less than I would accept and it's a waste of my time to spend time interviewing for them.

The ideal is that the company gives a compensation range, but many will refuse to. So I just tell them the top of my range. That ends the majority of conversations but it lets me narrow in on companies which properly value talent.


The solution here is to turn the recruiter's around and say, "I'm not comfortable sharing that information, but I'm sure you put together a salary range when you put a rec out for the position. Could you share what that range is, and I'll tell you whether it makes sense to proceed?"


Did you miss the part where I specifically mentioned that I do ask for a salary range? That works some of the time, but sometimes companies flat out refuse to give it.


Do people actually ask random people from other companies out for lunch? I've never heard of someone actually doing this, and I feel like if I was approached at a meetup this way I'd be very unlikely to accept, if not a little uncomfortable at the prospect.


It's sometimes called an 'informational interview', happens quite a bit in the market I work in (Philly).


I've never heard of this either, sounds creepy.


Great points that stood out-- Every company that has more than 10 engineers is going to hire engineers this quarter. The company really doesn’t care whether they pay you 100 or 130.

Having been on both sides of the market, I would add - try and imagine yourself in the company's shoes.. and DIVORCE your emotions from the process.

Understand the company's side of it:

They're buying your services, like they were picking out fruit at a market - a market where you haggle with the seller. Paid a dollar more? Didn't buy got no fruit? - not a big deal to the co.

The company really doesn’t care whether they pay you 100 or 130. This was a great point in the article.

This process is a lot bigger deal to you than to them. If they hire/don't hire you, is not going to affect the company that much. While, it affects your whole life.

And I think the most important thing, don't get upset if things don't work out. It's a cliche, but SO true - some things are meant to be for a reason. There are more opportunities out there.


"This process is a lot bigger deal to you than to them. If they hire/don't hire you, is not going to affect the company that much. While, it affects your whole life."

That very much depends on one's perspective of it. What if I think its the same as many of the missed opportunities that I cannot put a price on? (i.e. they might also be totally insignificant)


Is not saying your salary expectation a really a bad thing? In my last job search I follow this advice and I actually regret it. A lot of times the conversation goes no where and it can save a lot of time on both ends if you get that part out of the way.

Conversation usually goes like this.

E:"What's your salary expectation?" (or last job's salary)

Me:"We can talk about the salary later. We can first see if we're a right fit"

E:"Cool. But we want to know your expectation." (get's the same question) Me:"I don't want to disclose my number but can you give me your salary range and I can say whether it is within my range"

E:"Its between AA - CC" (what I'm expecting is BB)

Me:"Yup, its in my range"

There. I dodge the bullet, I get the offer, but the salary is AA+.

This happen to me a lot in my last search and I feel like I would have a better salary and save time if I just said BB up front.

AA+ offers will go away immediately. Your goal is to get several BB offers and with a little negotiation bring it to BB+ offer.


Do you not try to negotiate then? BB is within their range, and presumably you can argue why you're more deserving than the lower end of their scale. Why would they not go for BB?


Of course you will negotiate but a lot of companies have equations/guidelines. "We've paid X salary to our employee that is similar to you" or "With N years of experience at most we will pay X". Some companies have no negotiation policy.

Also a lot of time employer loves to pull a card of "let's start from here". They will give you an example employee that got promoted twice in just a year.

The point is to save more time.


I also think that asking algorithmic coding challenges make no sense for most companies. Facebook, Google and other tech giants are you using algorithmic interviews because everything they do is at scale. However, this is not true for most companies.

What I usually do, when I assess software engineers, is checking if they are using good variable names and short functions.

Btw.: I am a technical recruiter from Zürich with a software engineering background. If you look for a coding job in Zürich with net-salaries that are on par with the Bay area (in the range of 7-10k CHF / month after tax), you find my email address in my HN-handle.


Every time I see advice that centers around "go to meetups, get coffee, make personal connections," it makes me think that:

a) I would really like to be able to do that instead of the awful application-oriented hiring process.

b) I will never be able to do that unless I'm able to relocate to a suitable location, probably after having completed an application-oriented hiring process.

How do the get-hired-with-connections gurus recommend resolving this chicken or egg situation? I get that Starfighters is aiming in part to solve similar problems, but surely there are existing solutions.


Conferences, conventions, vacations?


Pleasantly surprised to see Ramit Sethi's name pop up in the article. I've watched some of his 'Find your dream job' videos on youtube and the advice there was solid and yielded results first time I applied them in salary/job negotiation situations.


Maybe my part of the world is somehow different from Patrick's but I find some of the points in his talk simply untrue, and others true only with some fairly big caveats. Like:

"Sending in resumes is not how people get hired for most jobs" - simply untrue. Where I work, most successful hires simply sent their resume via the form on the website. Or recruiters pinged them via linkedin or some such site. No behind-the-scenes hobnobbing was necessary. Boring, I know.

"every company that has more than 10 engineers is going to hire engineers this quarter" - simply untrue. Hiring freezes are a real thing. Of course if the candidate is really experienced or a perfect skills fit for that particular company then something usually can be done but if you are a junior or a merely "ok" developer then tough luck for you.

"you ask them are they team leader or higher in their company. If they say yes, they either are a hiring manager or they know who is the hiring manager." - team leaders trade in this funny currency called "vacancies". And if a team leader is short on those he or she has very little incentive to bring you into the company. Of course if you meet a team leader at the developer conference then they are usually hiring (and often explicitly say so during their talks!)


In case people aren't aware, Patio11's comments are pretty much exactly what is stated (with many more examples and strategies) in "Guerilla Marketing for Job hunters", a book I recommend whenever posts about job searching come up.


This is helpul or was it guerilla marketing for the book? The world will never know.


It's always good to read about when someone recognizes the process for hiring devs is so broken. Does anyone know of any companies that are both attempting to do something about it, and hiring devs?


My current employer doesn't do technical interviews at all. We might ask about favorite languages, blogs, or open source projects, but generally we're more interested in whether the candidate "feels" like someone who is comfortable coding at the job's level. This has never gone badly for us, and we have never had to fire someone for not being able to do the job.


I posted https://matt.sh/disrupt-tech-interviews a month ago surveying different approaches/tactics people could use to improve interviewing. (spoiler: it requires actual processes and formal methods to improve things.)


His advice flies in the face of every negotiation course/book. Yes, you must know the range they are willing to pay; but once you know... you don't wait for them to make an offer, you ask something at the high end of what they're willing to offer, possibly above (but close enough to) the higher margin(* ).

The one who first names the price forms the baseline of negotiation. Say their range is 100-140k. If you say, "tell me what you would pay" and they say 100K, you're screwed, no way you can say "150k" from there and still be taken seriously. If OTOH you say 150k at the start and are lucky enough to get the answer "no way we can give you more than 140k", from there it's a simple job of asking for an extra concession that you know they can make ("Hmm... ok, say I could accept 140k, but only if the company allows me to WFH when I need to")

( *) Of course, not from the start. He's right about that. They need to be invested in the hiring - if they already spent a lot of effort trying to assess your skill before making an offer, you're in a much better position to ask a lot. Presuming that they like you, of course.


Tech interviews have become a favorite punching bag of various bloggers, and partly for good reason. But even still, who can argue with the results? Some of the tech industries most successful companies (Google, FB, etc.) and many successful startups use whiteboard coding interviews as their bread and butter, and it seems to work. Maybe it's not as bad as conventional wisdom says it is.


In an industry with extreme growth like tech has seen in recent decades, it's easy to imagine that many successful companies are successful just as much in spite of their interviews as they are because of them.

An example: https://twitter.com/mxcl/status/608682016205344768


Some unsuccessful companies also use the same format. It makes a lot of sense for Google to place maximum emphasis on whiteboard interviewing, not so much for its lesser competitors. If Google is a more desirable company and they run the same interview process, won't they be hiring mostly people who failed the same interview at Google?


The programming world has lots of smart, talented, capable people whose resumes won't get them even a phone interview from Google.

Coding interviews deserve their bad reputation, but dammit, there is no better way to learn whether or not a candidate for a programming job understands the really basic concepts than to have them write a little bit of code that can't be written if you lack the aptitude.


These articles are targeted at developers - someone needs to inform the HR department, that's where the problem lies


HR departments are responsible for HR / behavioural interviews ... dumb riddle interviews and reverse a tree using a one line function is made for developers ... by developers...


I've been a professional developer for 20+ years. Not once have I gotten a job from the submit-a-resume-and-interview path. Not once.

It's always been a personal connection.

At the risk of bragging, I'm very good at this stuff.

If you're filtering resumes and doing endless interviews, you're missing out. You won't get people like me.


I've been a professional developer for 20+ years. Not once have I gotten a job from a personal connection. Not once.

It's always been a submit-a-resume-and-interview (via an agency).

At the risk of bragging, I'm very good at this stuff.

What's your point?

Edit: This is completely true.


Cool. That in no way contradicts my point that companies are missing out on people like me who don't use that path.

That would be my point.


don't worry, nobody worthy is missing out on you. there are plenty of good developers out there for good companies to hire.


I'm not worried. I've been happily and productively employed with successful companies for decades. :-)


Man sooo much ego in the replies to this comment. He said he is good, he probably is. No need for the commenters to get their ego hurt cause there are other good engineers in the world.

I would 100% agree that the professional connections have helped me get more jobs and more offers than a computerized/headhunter/recruiter service.

YMMV, but don't discount the importance of making good connections while working.


Well, I'm looking for good software engineers. Getting someone who is a good software engineer but isn't great at personal connections for getting a new job doesn't sound like a huge loss.


>> Well, I'm looking for good software engineers.

This is the sort of comment that might be more advantageous for you if you had contact information in your profile, just FYI.


Whiteboard away then!

Tho seriously, here's the question I'd ask of you...

Is that working out for you? It sounds like it's not, since you're still looking.

Maybe it's time to step back and reevaluate your process.


We're always looking, and when I see a sizeable company that isn't, I consider it a warning note.

We have a high proportion of surprisingly high quality software engineers, from a number of European nations (a very international mix, now that I think about it). Good people move on, be it moving on within a company or without, and where I work the product is relatively narrow, so people tend to move on by leaving. I expect to be moving on myself within the next two years. When you have more than a dozen or so high quality software engineers, someone is always leaving. I advise the youngsters that if they ever find themselves in the same job and the same role for five years, they need to start thinking about their exit and get on with it.

In my opinion, our process is working well, thank you. There is no whiteboard involved.


Actually my current and prior are both submit resume and interview path. I don't know anyone where I live so I had to go a quantity approach and just blanket apply to all dev jobs I can find.But I agree I hate resume filtering. One recruiter told me to add keywords like Angular and MVC to my resume because some HR will auto dump your resume if its not there.


In 17 years, I have been hired 7 times. Every last one of those offers started with me submitting a resume to a company where I previously knew nobody, or at least nobody with any ability to influence the hiring process.

I have also tried the "know somebody" tack. None of the people I have ever met has ever been able to even get me an actual interview anywhere, with the sole exceptions of my father, who has thrown roughly $1500 worth of business my way over my entire lifetime, and a former boss, who was laid off at the same time as everyone else, yet still managed to toss me $500 in contract work for his one-man startup as the emergency job search stretched out into the second week.

On a gross revenue basis, looking good enough on paper to start a conversation, and spamming out those resumes to anyone even considering hiring someone new has been roughly 400 times more valuable than knowing other people.

But my entire career has also unfolded far from the SF-Oakland-SJ metro area. We don't exactly get a lot of "meetups" around here. I'm not even exactly sure what a "meetup" is. Maybe like a geek night where everybody talks shop all night instead of having fun?

Also, not a single professional recruiter has ever successfully placed me in any job, nor have they even been very good at getting me interviews. They have been worse than useless, in that every second I wasted on them would have been better spent digging up my own leads and sending my resume myself.

All that said, I hate, I hate, I hate the current software professionals' hiring process and the trends in it that I have been able to observe from my end.


I have never done this song and dance. I've been working professionally as a software developer for 20 years and my M.O. Is to talk to reputable recruiters, get an idea what the salary ranges are for my skill set, send my resume to the recruiter and tell them to send me prospects that meet my qualifications and that can meet my salary demands.

Then I just sit back, look over the job reqs that they send me and then I decide whether I want to be submitted.

Within two to three weeks, usually I have competing offers. I've never failed a phone screen with an employer and I've only twice haven't gotten an offer.

Luckily my first job I got was based on an internship. I graduated from a Podunk state college and I've been able to demand a competitive salary after my first three year job stint.


one thing I've learned about negotiating a job is to discuss responsibility, roles, reporting structure, projects, etc first. Because, in my experience, if a year later I go to the VP of engineering and say "give me more money or I'll quit", I get the money. If I say "give me more responsibility and better projects or I'll quit", I get a going away lunch....


My code exams are almost always can you do some form validation plz thx bye becuz I'm dumb.


In all the interviews I've been a part of (1.5 years, maybe ~50 candidates), I've never seen a candidate decline because of salary requirements. We would decide if they were a good hire, and HR would make it happen.


So that's another datapoint confirming empirically patio11's idea that candidates are underasking. If they would ask for their fair value, 50% of companies would decline their candidature because of the price.


What about the other way around, have you ever passed on a candidate because their expected salary was too high?


I guess you've never interviewed for DOD jobs then (Strict budget limits)


What I'm writing is tangential, but related to the topic. When we discuss tech interviewing, I think it helps to start with the basics of the process and the motivations behind technical interviews that are essentially exams.

Recruitment for tech companies is near constant at a certain level of talent. While there are smaller or profitable but stable niche companies that aren't looking to add engineers, most companies would always hire an engineer with a skill level that exceeds a certain threshold. In other words, if you're really good at coding, have a really strong understanding of software design, and you aren't a hard person to get along with, they'll have something for you.

This leads to the technical "interview", which is really better described as a technical exam. The most infamous incarnation of it goes like this: you arrive in a room, a very strong software developer arrives you are asked a variant on a data structures/algorithms question that you must solve at the whiteboard. It will be difficult to get it exactly right in the time allotted, but you will now demonstrate that you are able to write tight, good, efficient code that largely solves the problem. You will also demonstrate that you can clearly explain difficult technical concepts in clear human language (usually English), without getting angry or excessively flustered. If you're really, really good at this, they have something for you. Exactly what that is we can all work out later.

This leads to a constant state of "filtering". These companies are continuously scooping up silt, sifting through, to see if there are any good bits of gold in there. If they accidentally throw out a bit of gold, that's fine, they just keep sifting and sifting.

The odd thing about this (having been on a few of these interviews myself) is that it turns the "interview" process into a technical exam. I've been shuttled from room to room for six hour of whiteboard exams, all about tree traversal, complex sql, some math, and at the end of the day, I honestly have no idea what this company does or what they'd want me for (aside from what I'd read about in preparation for the "interview", none of which was discussed at all). But I do get it from the point of view of the company - if I can do certain branches of math, write tight code, and do sql really really well, and I clearly have the verbal and presentation skills to explain it all, then yeah, they will be able to make good use of me at their company (for the record: no offer ;) )

The filtering is irritating for candidates, of course, since it means that in our field we sit for exams constantly. The saving grace is that these companies must devote the valuable time of their strong engineers to conduct the interviews, which means they don't do it unless there's a good chance you're a good candidate.

The more insidious side of this is the rise of automated testing and/or "projects". You spend 30 minutes talking with a recruiter, and then you get a link to an on-line exam or project that can take from 2-8 hours. This allows the company to cast a wide net without wasting time. Well, wasting their time. The process allows them to push the inefficiencies of the process out onto the candidates. The amount of time spent by developers on these exams, only to be dismissed in 5 minutes, is staggering. This is one reason I won't take these exams (if they occur very early in the process - if it happened much later, when it was clear both sides were serious, I would reconsider), even though I will spend an equivalent amount of time on in-person exam/interviews.


Part I:

Let's get real here:

Yes, in the OP, the good news is likely:

> People who do consulting or freelancing for a living might realize this is isomorphic to getting consulting engagements. It really is. It’s fundamentally running a sales process for yourself, which is a really weird skill

On salary negotiation, I'd suggest bringing in some super important data:

Within easy commuting distance of the job, go house hunting. Want 3-4 bedroom, 2 1/2 bath, with family room and two car garage. Maybe also full, dry basement, nice yard, nice landscaping, pool, nice neighborhood, good schools.

So, get the figure per month for the house -- principle, interest, taxes, insurance, maintenance.

Add in your medical insurance, life insurance, IRA, and college fund for the kids.

Add in cost of cars for yourself and wife and, later, kids.

Add in usual costs of living -- food, clothing, education for the kids, home furnishings, smart phones, Internet access, desktop computers, professional memberships, professional publications, etc.

Add in some for recreation.

Add in some for contingencies, say, for the kids, private schools, tutoring, violin, swimming lessons, etc.

Then look at taxes -- city, state, and Federal.

Then add it all up.

Then add, say, 30%.

That's your figure. Justify it with

> I have a family, and I am the breadwinner. I have a wife and two kids, and we want two more kids. My wife is busy with the kids, and with the home, she is fully busy. We need the usual, food, clothing, shelter, transportation, medical care, recreation, education for the kids, retirement for my wife and I, insurance against risk, plus smaller items. In addition, my wife's mother needs to come stay with us. In this area, that's what it comes to. To have less than that would make us financially irresponsible.

Of course, if the employer wants to hire a single person who wants to live in an efficiency apartment and use busses and taxis for transportation, then, okay, but need to know that.

> It is well worth your time to take another developer out for a hamburger and say, “Hey, tell me a little bit about the company."

Maybe. But this other person might tend to see you as a competitor and want to hurt your career instead of a colleague who wants to help your career.

> The nature of careers for us is just working for 40 years for IBM and then receiving a gold watch is something that very few of us are going to be able to successfully do, and that frankly, I’m not even sure I want. Actually, I much more than not sure I want. I’m sure I do not want, do not want.

Right, don't want it. But, it's been a very long time since IBM offered such a career. The more common situation was, in an IBM area, a house cost 5+ times what the IBM annual salary was so that, really, the employee had to pay for their house out of other funds and was basically subsidizing IBM.

So, who was living in those houses? In some cases, IBM employees who joined when the house prices were much lower. But in most cases, people just not working at IBM or in any such job. Instead, likely they were doing well in small business, e.g., as owners.

More generally, there is a biggie fundamental problem with the whole career and salary negotiation process in the article: The company will just NOT for long be able to pay more than the work of the job is worth. So, really, the employee needs to know what the heck the work is worth and try to get as much of that as possible, and for that, and quite fundamentally, the employee needs in some significant sense, in one word, 'ownership' of the business. So, we've got to be talking stock or the person just owning their own business.

Biggie point: If own the business and run it, then are facing the 'market' for the product/service the business provides. If that market is poor, gotta pick another business. If that market is good, then the worker gets to keep what the work is really worth. That point is a huge biggie. As an employee, will have a tough time getting for very long even half what the work is really worth in the market. This is a crude analysis, but it can be the difference between (A) being single and (B) providing for a good family and a good life.

From the OP, here is another really fundamental point:

> “Look, I understand just if I start to read through the resume, it doesn’t look like the most promising candidate, but when given a very complicated engineering task, which involved both security research, and then a complicated open-ended data analysis task, they not only successfully solved the task, but produced a deliverable which could literally be published in a research journal,

Okay, if that is impressive, and it should be, then there's another approach: Look on the resume for candidates who actually have PUBLISHED such work in a peer-reviewed journal of original research. Or, at least they have a Ph.D. degree from a good research university where their dissertation was just such work and is likely publishable.

Let's have an example: Recently at the company, there have been some unexpected problems -- outages, performance degradations, security breaches, etc. -- in the network and some in the server farm.

So, the company wanted, in general terms, better near real-time monitoring for such unexpected problems. That is, the company wanted continual reports on health and wellness of their network and server farm.

They have been using various approaches, but especially thresholds, and in total the approaches have two biggie problems -- false alarm rate too high and detection rate too low.

Joe looked at that situation and saw that from Microsoft, Windows Server, SQL Server, IIS, Oracle, Cisco, HP, etc., there is a river of data available for monitoring. So, he could get data on any of some literally hundreds of relevant variables at data rates of a value each few seconds up to thousands of values a second.

So, Joe thought about how to use that data to get better monitoring. Well rested in a quiet room he put his feet up, popped open a cold can of diet soda, reviewed the problem and old approaches, reviewed some of this educational background, and had some ideas.

Eventually, he noticed: If look at, say, two variables jointly, should be able to do better on false alarm rate and detection rate than looking at the variables separately, unless the variables are independent, which in common cases the definitely are not. So, in some sense, want to exploit several variables not individually but jointly.

Next, Joe noticed that with false alarm rate and detection rate, he was reminded of his course in Statistics 101 and, there, hypothesis testing with Type I error, Type II error, and the 'power' of a test, that is, some tests are more 'powerful' than others. Also he checked in an intermediate text on statistics and noticed that the classic Neyman-Pearson result says how to get the most powerful test possible.

Then Joe had some ideas, got some real data, wrote some prototype code, and the results looked good. Joe was able to adjust false alarm rate, and know the rate in advance, for any detection say what was the lowest false alarm rate at which the data would still be a detection, and had really good reason to believe in an especially high detection rate.

He published his work in a high end peer-reviewed journal of original research and gave a seminar on that work at a world famous, high end server farm where reliability is taken very seriously.

He put this work on his resume, sent 1000 copies, and never heard back.

So, back to the last quote above from the OP, here comes the biggie surprise: Doing such work won't get you hired. Hardly a chance. Now, we should all be screaming, why, why, why, why, why?


Part II:

Okay, maybe that monitoring work would not be very important.

But, maybe the company is facing some challenges in routing, scheduling, planning that, as is commonly the case, boils down to linear integer optimization, right, known to be in NP-complete. So, an impressive example might be a 0-1 integer linear program with, say, 40,000 constraints and 600,000 variables. Then, asking for a solution that is optimal, down to the last tiny fraction, might be a bit much, but coming within 1% of optimality might be nice. So, suppose Joe came withing 0.025% of optimality? Might want to chat with Joe about any problems in looking for good combinations.

So, Joe also put that work on the 1000 resume copies he sent.

Ah, usually the real data is arriving in ways that are not fully predictable. So, there is a stochastic process and want to know some of what the results will be. Once Joe was in touch with some people in touch with the US Navy, and they wanted an evaluation of how long the US fleet of SSBN missile firing submarines would be under as special scenario of global nuclear war but limited to sea. From an old B. Koopman report and some common sense assumptions, Joe saw a continuous time, discrete state space Markov process subordinated to a Poisson process, wrote and ran Monte Carlo software to do the evaluations, and had the work please the US Navy and be sold to a leading US intelligence agency (could say which one but then would have to ...).

Joe put that on his resume, too.

Then Joe got a call back, and they wanted to know what he knew about C, Python, and R.

Joe said that he'd one some C programming, but the language was so primitive that it was usually next to useless for his work in analysis. For R, that was just simple, standard statistics, and the work he'd done is statistics was beyond what R offered and he wrote his own code. For Python, that was similar -- instead he'd written his own code.

The interview died.

Okay, there's a fundamental lesson here:

Fundamentally, in US business, the attitude remains much as back in a Henry Ford plant 100 years ago: The company and the company managers know more than any candidate employee, about the work, how to do the analysis, how to write the software, and an employee is there just to add routine labor to what the company already knows. So, a resume that mentions work beyond what the company knows conflicts with this fundamental attitude and results in rejection.

In US mainline business (there are exceptions elsewhere), they are just very strongly against hiring as an employee someone able to do something the company can't already do.

So, dumb down the resume.

Then inside the company, fit in, don't expose real potential.

Then look for a good, new problem, say, needing analysis such as in the OP.

Then, largely independently, after hours, make some progress through prototype code and some impressive real output from real data.

Then develop some high level foils, go to the relevant manager, and give a short talk.

Then expect 'incoming' attacks, vicious, whisper campaigns, sabotage, etc., from jealous people. Then discover if the company really wants good analysis or not. If so, likely will have to transfer to a much better position, say, on staff of the CEO. Else, will likely soon get FIRED. No joke.

If say anything about such analysis before actually have the results, then people will either laugh or attack. The situation is quite general, say,

"First they ignore you, then they laugh at you, then they fight you, then you win."

Mahatma Gandhi

So, what the heck to do?

Sure, face the market directly. Do a startup. Pick your own problem, do you own analysis, write your own code.

Back to it. Work for today: Use a .NET collection class for a fast, easy to program way to find duplicates. So, a Web server, a Web session state store (wrote my own with just TCP/IP sockets, class instance de/serialization, and two instances of a collection class instead of using, say, SQL Server or Redis), SQL Server, and two specialized back-end servers, 18,000 programming language statements in Visual Basic .NET in 80,000 lines of typing.

Going live is getting to be very visible!

Let's see: The work is intended to provide the world's first good, a must have, solution for a problem pressing for nearly everyone connected to the Internet. To start, if I can get on average one user a second, 24 x 7, then, ballpark, I should get monthly revenue of

2 * 8 * 5 * 3600 * 24 * 30 / 1000 = 207,360

dollars. Now, in the OP, what annual salary ranges where they talking about?

The core analysis work? Silicon Valley has more hen's teeth than entrepreneurs who would understand that work even if I explained it to them, and many more such entrepreneurs than such VCs!

If you have something and explain it, then, if it is really bad, no one will like it. But, curiously, if it is really good, the same, no one will like it. Remember what Gandhi said. Or, easier and much the same lesson, just go back to kindergarten and to Mother Goose and "The Little Red Hen" -- same stuff. The hen wouldn't get hired, either.


Part II:

Okay, maybe that monitoring work would not be very important.

But, maybe the company is facing some challenges in routing, scheduling, planning that, as is commonly the case, boils down to linear integer optimization, right, known to be in NP-complete. So, an impressive example might be a 0-1 integer linear program with, say, 40,000 constraints and 600,000 variables. Then, asking for a solution that is optimal, down to the last tiny fraction, might be a bit much, but coming within 1% of optimality might be nice. So, suppose Joe came withing 0.025% of optimality? Might want to chat with Joe about any problems in looking for good combinations.

So, Joe also put that work on the 1000 resume copies he sent.

Ah, usually the real data is arriving in ways that are not fully predictable. So, there is a stochastic process and want to know some of what the results will be. Once Joe was in touch with some people in touch with the US Navy, and they wanted an evaluation of how long the US fleet of SSBN missile firing submarines would be under as special scenario of global nuclear war but limited to sea. From an old B. Koopman report and some common sense assumptions, Joe saw a continuous time, discrete state space Markov process subordinated to a Poisson process, wrote and ran Monte Carlo software to do the evaluations, and had the work please the US Navy and be sold to a leading US intelligence agency (could say which one but then would have to ...).

Joe put that on his resume, too.

Then Joe got a call back, and they wanted to know what he knew about C, Python, and R.

Joe said that he'd one some C programming, but the language was so primitive that it was usually next to useless for his work in analysis. For R, that was just simple, standard statistics, and the work he'd done is statistics was beyond what R offered and he wrote his own code. For Python, that was similar -- instead he'd written his own code.

The interview died.

Okay, there's a fundamental lesson here:

Fundamentally, in US business, the attitude remains much as back in a Henry Ford plant 100 years ago: The company and the company managers know more than any candidate employee, about the work, how to do the analysis, how to write the software, and an employee is there just to add routine labor to what the company already knows. So, a resume that mentions work beyond what the company knows conflicts with this fundamental attitude and results in rejection.

In US mainline business (there are exceptions elsewhere), they are just very strongly against hiring as an employee someone able to do something the company can't already do.

So, dumb down the resume.

Then inside the company, fit in, don't expose real potential.

Then look for a good, new problem, say, needing analysis such as in the OP.

Then, largely independently, after hours, make some progress through prototype code and some impressive real output from real data.

Then develop some high level foils, go to the relevant manager, and give a short talk.

Then expect 'incoming' attacks, vicious, whisper campaigns, sabotage, etc., from jealous people. Then discover if the company really wants good analysis or not. If so, likely will have to transfer to a much better position, say, on staff of the CEO. Else, will likely soon get FIRED. No joke.

If say anything about such analysis before actually have the results, then people will either laugh or attack. The situation is quite general, say,

"First they ignore you, then they laugh at you, then they fight you, then you win."

Mahatma Gandhi

So, what the heck to do?

Sure, face the market directly. Do a startup. Pick your own problem, do you own analysis, write your own code.

Back to it. Work for today: Use a .NET collection class for a fast, easy to program way to find duplicates. So, a Web server, a Web session state store (wrote my own with just TCP/IP sockets, class instance de/serialization, and two instances of a collection class instead of using, say, SQL Server or Redis), SQL Server, and two specialized back-end servers, 18,000 programming language statements in Visual Basic .NET in 80,000 lines of typing.

Going live is getting to be very visible!

Let's see: The work is intended to provide the world's first good, a must have, solution for a problem pressing for nearly everyone connected to the Internet. To start, if I can get on average one user a second, 24 x 7, then, ballpark, I should get monthly revenue of

2 * 8 * 5 * 3600 * 24 * 30 / 1000 = 207,360

dollars. Now, in the OP, what annual salary ranges where they talking about?

The core analysis work? Silicon Valley has more hen's teeth than entrepreneurs who would understand that work even if I explained it to them, and many more such entrepreneurs than such VCs!

If you have something and explain it, then, if it is really bad, no one will like it. But, curiously, if it is really good, the same, no one will like it. Remember what Gandhi said. Or, easier and much the same lesson, just go back to kindergarten and to Mother Goose and "The Little Red Hen" -- same stuff. The hen wouldn't get hired, either.


I have experience as part of a hiring team that spent over a year searching for a single candidate, and I also have experience as a job seeker who has spent over a year searching for a minimally acceptable job.

In my experience, the only lesson I've learned is that you cannot know much at all about a candidate's eventual job performance or cultural fit from any hiring technique.

Giving them tests or quizzes doesn't work. Giving them take-home coding tests doesn't work. Asking them behavioral and technically probing questions about their background doesn't work. Having them come on-site and suffer through whiteboard hazing doesn't work. Making them sit in on a technical Skype call with three simultaneous interviewers doesn't work. Everybody's pet theory about how to vet them before their first day doesn't work. And most of those things also waste a lot of everyone's time and have the poor false-positive / false-negative rates that the OP describes.

The only thing that I think works is just hiring someone and then seeing if it works and not being afraid to fire them if it doesn't work. Everyone freaks out about this idea because there's so much taboo about the cost of hiring, setting up benefits, and so forth, and the morale drain from firing.

But it's a trade-off. Do you want to pay those costs while getting actual info about an employee? Or pay those costs in a status-showy way ("look how hard our hiring process is!") but not actually get any info for what you are paying?

To address the firing part of it, which of course is not at all fun, there is an easy solution: make generous severance packages a standard part of your job offers.

If you mistakenly hire someone who is not cut out for your team (for whatever reason, skill, attitude, work ethic, culture, etc.) that is on you no matter what your hiring process is. Don't make candidates bear the costs of your hiring mistakes. Treat them well and they will be more understanding if the hiring process involves a lot more firing than most are accustomed to. If you give them 6-8 months of salary as a severance benefit (and that's on the low end), then they will be secure about the risks of getting fired and it will buy them time to find a new job if you need to let them go. For a huge number of companies, this is easily affordable and building in a fixed cost of 1/2 year of their entry salary is borderline trivial (even if people want to make a big argument about it).

Everyone likes to whine that this is expensive, but hiring the right person is expensive -- it just depends on how you want to pay the cost. Like I said before, you can engage in a bunch of fake performative nonsense like tests and whiteboard hazing, in which case you are paying the price in terms of wasting your existing employees' time and in terms of false positives and false negatives and constantly leaving money-from-would-have-been-productivity on the table, or you can just own up to what it costs and be more willing to pay the dollar amounts necessary to trial people out. Then you can have much lower barriers to entry that mostly just involve basic conversations and extremely simple sanity checks about a person's background. If they pass those and the team more or less likes them, just pay the money to see if they work out and move on. Stop obsessing over it, especially by letting HR middlemen get in the way and obfuscate things.


bookmarked


So job hunting in tech now is "unsafe." Really? Try applying for a law position, a hospital position, or a standard minimum wage job. Among the many needs to check one's privilege in this world the thought that the process of getting a tech job is "unsafe" is one of them.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: