top | item 11181922

What Developers Should Know About Job Searching and Negotiation

420 points| shakes | 10 years ago |twilio.com

235 comments

order
[+] pumblechook|10 years ago|reply
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.

[+] cgopalan|10 years ago|reply
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.

[+] nickbauman|10 years ago|reply
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.

[+] rhodysurf|10 years ago|reply
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.
[+] potatolicious|10 years ago|reply
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).

[+] Spooky23|10 years ago|reply
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.

[+] robodale|10 years ago|reply
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.

[+] mixmastamyk|10 years ago|reply
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.

[+] darrenkopp|10 years ago|reply
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.
[+] rpgmaker|10 years ago|reply
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).
[+] InclinedPlane|10 years ago|reply
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.
[+] fecak|10 years ago|reply
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.

[+] kzhahou|10 years ago|reply
> 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.

[+] dotBen|10 years ago|reply
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)

[+] henrik_w|10 years ago|reply
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.
[+] atom-morgan|10 years ago|reply
> 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.

[+] iandanforth|10 years ago|reply
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.

[+] tlogan|10 years ago|reply
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).

[+] aturek|10 years ago|reply
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.

[+] st3v3r|10 years ago|reply
"I always volunteer to work for free prior to getting hired."

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

[+] tacos|10 years ago|reply
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.

[+] xiphias|10 years ago|reply
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).

[+] goldbrick|10 years ago|reply
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.

[+] gclaramunt|10 years ago|reply
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
[+] tetraodonpuffer|10 years ago|reply
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

[+] Mc_Big_G|10 years ago|reply
"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.

[+] pmiller2|10 years ago|reply
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)
[+] pmiller2|10 years ago|reply
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. :)

[+] innertracks|10 years ago|reply
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.

[+] claudiusd|10 years ago|reply
> 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.

[+] vonmoltke|10 years ago|reply
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.

[+] bbarn|10 years ago|reply
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.

[+] ryandrake|10 years ago|reply
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.
[+] bryanlarsen|10 years ago|reply
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...

[+] rubidium|10 years ago|reply
Yea, there's hiring freezes too at bigger corps. Even if they loose a dev that can't always replace her.
[+] goldbrick|10 years ago|reply
> 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.

[+] pound|10 years ago|reply
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.
[+] phamilton|10 years ago|reply
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?

[+] mywittyname|10 years ago|reply
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.

[+] dreamjobexec|10 years ago|reply
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...

[+] morgante|10 years ago|reply
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.

[+] jgroszko|10 years ago|reply
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.
[+] fecak|10 years ago|reply
It's sometimes called an 'informational interview', happens quite a bit in the market I work in (Philly).
[+] rb808|10 years ago|reply
I've never heard of this either, sounds creepy.
[+] dpweb|10 years ago|reply
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.

[+] betadreamer|10 years ago|reply
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.

[+] s3nnyy|10 years ago|reply
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.

[+] dikaiosune|10 years ago|reply
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.

[+] 83457|10 years ago|reply
Conferences, conventions, vacations?