In November of 2012 I set a goal for myself: find the most x-risk reducing role I can fill. At first I thought it would be by working directly with MIRI, but after a while it became clear that I could contribute more by simply donating. So my goal became: find the highest paying job, so I can donate lots of money to CFAR and MIRI.

A little bit of background on me. Started programming in 2000. Graduated in 2009 with Bachelor's in computer science. Worked for about a year and a half at a game company. Then did my own game startup for about a year. Then moved to the bay area and joined a game startup here, which was acquired 10 months later. Worked a bit at the new company and then left. So, just under four years of professional programming experience, but primarily in the game industry. Almost no leadership / managerial experience, aside from the startup I did where I hired freelancers.

Below is my experience of finding a software engineering job in the Silicon Valley. If you are not an engineer or not in the Silicon Valley, I think you'll still find a lot of useful information here.

 

Pre-game

Before sending out my resume, I spent about a month preparing. I read Intro to Algorithms, which was very good overall, but not a huge help in preparing for interviews.[1] I read Cracking the Coding Interview, which was extremely helpful. (If you read only one book to prepare, make it this one.) The book has a lot of questions that are similar to the ones you'll actually see during interviews. I also did TopCoder problems, which were pretty helpful as well.[2] Looking back, I wish I spent more time finding actual interview questions online and doing more of those (that's why CCI book was so helpful).

After several weeks of preparation, I compiled a long list of companies I was going to apply to. I checked on GlassDoor to see what kind of salary I could expect at each one. I then rated all the companies. Companies with low salaries and poor personal fit received the lowest rating.

I started by applying to companies with the lowest ratings. This way I could use them as practice for the companies I thought would actually make a competitive offer. This was the right move and worked very well. (Another friend of mine did the same approach with good results as well.) Remember, you are not just doing those interviews to practice the coding problems, you are practicing pitching yourself as well.

 

Interviewing with a company

Standard procedure for applying to a tech company:

1. Send them your resume.

  • Proofread your resume. Let your friends proofread it.
  • Make sure there are only relevant things on it. When I applied to tech companies, I removed a lot of game-specific things from my resume. When I applied to companies that did 3D graphics, I made sure I had all my 3D graphics experience listed. I ended up with two version of my resume.
  • Have your resume in DOC, PDF, and TXT formats. This way you'll always have the right one when you upload / paste it.
  • For a few companies, I had a friend or friend of a friend who referred me. This REALLY HELPS in two ways: 1) your resume will be processed a lot faster, 2) if your friend is a great engineer/employee, you'll be taken a lot more seriously, and the company will fight for you a lot harder.

2. You'll get an email from the recruiter and setup a time to speak, where you'll talk about yourself, what you've done, why you are interested in their company, and so on. You can and should ask them questions as well.

  • When you start getting multiple calls each day, make sure you know who is calling. There is nothing worse than talking about the challenges of streaming music to a car sharing startup. (True story.)
  • Read about the company on Wikipedia before the call. Know the basic stuff. Look at their website and read the About page.
  • Find the thing that makes the company special and successful. Find the thing that you actually think is cool about the company. Those are your answers for why you want to work there.
  • Ask non-technical questions: How is the company structured? How many teams are there? How many employees? Engineers? Think of other intelligent questions to ask.
  • In my experience, it's not very beneficial to tell them you are interviewing with a dozen other companies. When they ask who else you are interviewing with, just name a few companies, especially the competitors / similar companies.
  • Be SUPER NICE to your recruiter. They are your main point of contact with the company. They'll be the one fighting to get you the best offer.

3. You'll have a technical phone interview with a software engineer where you'll solve a problem or two on collabedit or some similar website. At the end, you'll get a few minutes to ask them questions too.

  • All the usual interviewing tips apply here. E.g. talk out loud, your interviewer doesn't know what you are thinking.
  • Most companies don't care what language you use, as long as it's mainstream. (I used C# for almost all my coding questions.)
  • DO NOT start answering the question by writing code. If the questions seems vague, ask about the context. Who'll be using this solution? Definitely ask about the kind of data you are working with. If it's integers, are they random? Over some small range or over all possible integers?
  • List out metrics for various approaches: brute-force solution, optimized for speed solution, optimized for memory solution. Here is a question I saw a few times: Write a data structure which can accept and store integers, and can check if there exist two integers that sum up to a given number. There are multiple solutions, and the best one depends on the ratio of addInteger to checkForSum calls.
  • The previous steps should only take you a minute or two. Once you've decided what the best approach is, then you can write the solution. When you are done, check for errors, then run through several examples. Do a simple example and a slightly complicated example. When you find a bug, don't be hasty in fixing it. Understand why it happened and make sure you won't introduce new bugs by fixing it.
  • If everything works, make sure you handle errors correctly. Can you handle invalid input? Input that violates your assumptions? (As a reminder, I leave “\\Check for errors” comments in appropriate spots as I code the solution.)
  • When you are done, ask the interviewer questions. Ask them to tell you about what they do, if they haven't already. What have they been working on recently? What technologies/languages do they use at the company? Do they use Scrum/Agile? Pair-programming? Come up with other intelligent questions to ask.

 

4. You'll be invited for an on-site interview which will be 3-6 hours long, at least half of which will be coding on a white-board. (Although, a friend told me he brought his laptop with him, and most people were fine with him coding on it.)

  • All the previous tips apply.
  • Be on time. Take bathroom breaks when you need them. I found that drinking water during the interview keeps me refreshed. Remember your posture, body-language, and eye-contact skills.
  • Learn how to talk out loud as you are writing out your solution. If you are stuck, explain what you are thinking, and what your intuition is telling you.
  • Learn how to read your interviewers. If you say, "Here we should check for the null case or for empty array," and they go "Yeah, yeah, okay," they are not the type of interviewer that really cares about error conditions, so you can be somewhat more lax there. By the time I was finishing my on-site interviews, I could tell if my solution was right just by the interviewer's body language.
  • When you are done, ask them questions. What are they working on? What's the thing they like most about the company? What's their least favorite thing about the company? (Another way to phrase that: What's one thing you would change if you could change anything about the company?) Do they have to work overtime? How are the people here? Can you switch between projects? Are there company wide events? In all my interviews I've never met an interviewer that didn't try to sell their company really hard. People will always tell you their company is the best place to work.
  • If the person is a manager or a director, ask them higher level questions. What kind of culture are they trying to create? What are the current big challenges? Where do they want the company to be in the next 5 years? How does one advance in the company? (Usually there is a managerial and a technical track.) How often are reviews done? How are they structured?

 

5. You'll get a call from the recruiter congratulating you on an offer. They'll go over the offer details with you.

  • Before they make you an offer, they'll check if you are actually seriously considering their company. If you told a startup you are also interviewing with Google, they might suspect that you are not seriously considering them. Unless you dissuade those fears, they might actually not even make you an offer. (Happened to me with Rdio.)
  • If you didn't get an offer, try to get as much info as you can. What happened? What can you improve on? Below are the reasons why I didn't get an offer after an on-site interview:
    • Not doing well on a technical question. (Happened twice; one time because of a very obnoxious interviewer.)
    • Not interviewing for quite the right position (that on-site interview ended early).
    • Not having the necessary experience (a lot more important to startups than bigger companies).
    • Not being passionate enough about the company.
  • If this is not a good timing for the offer, e.g. it's one of your first interviews, then tell them so. They will probably wait to give you the offer details until you are ready to consider it.
  • The recruiter will likely ask what's important to you in an offer. How are you going to make your decision? What I've said is that compensation will be an important factor in my decision, but that the team/project/etc. are important considerations as well.

 

6. You have a few days (usually around 5 business days) until the offer expires to decide if you want to accept it.

  • Sometimes the offer will expire before you've received offers from other companies. This is why it's important to interview in rough order of ranking, so that you can just let those offers go, knowing you'll have much better ones soon. If you want to hold on to the offer, just ask your recruiter for an extension. It'll be much easier to get an extension at big companies, especially if you are interviewing for a generic position.
  • If you decline the offer, let them know.

 

Always be very nice, friendly, and polite. Walk the fine line between telling the truth and saying the right thing. Ideally, make sure those are the same. Even if you are interviewing with a company you have no intention of working at, make sure to find something you really like about them, something that makes them stand out to you. Always have a good answer to: "Why do you want to work here?"

Before each on-site interview make sure you research the company thoroughly. Use their product. Think of ways to improve it. It's very helpful if you can meet with someone that works there and talk to them. See if they can give you any tips on the interview process. Some companies (e.g. AirBnB) want people that are extremely passionate about their product. Some companies focus more than usual on architectural questions. Many companies expect the engineers to have some familiarity with UI/UX and the ability to think about a feature from all angles.

 

Managing your time

I sent my resume to 78 companies, had at least a phone conversation with a recruiter with 27 of them, had an on-site interview with 16 companies, and received 12 offers. Out of those, I've only seriously considered 3. (Companies with lower ratings had an atrocious response rate.)

My time-line ended up looking something like this:

  • Week 1: Started applying to low-rated companies. About 2 phone interviews.
  • Week 2: About 7 phone interviews. One on-site interview. Sending out more resumes.
  • Week 3: About 3 phone interviews.
  • Week 4: About 15 phone interviews. A few meetings with friends of friends, who ended up referring me. 1 on-site interview. Sent my resume to all the high-rated companies. (During this week interviewing became a full-time job.)
  • Week 5: About 10 phone interviews. 4 on-site interviews.
  • Week 6: 8 phone interviews. 4 on-site interviews.
  • Week 7: 4 phone calls. 5 on-site interviews.
  • Week 8: 12 phone calls. 2 on-site interviews.
  • Week 9: About 8 calls a day for a few days, while I negotiated with my top companies.
  • (These are strictly lower bounds for phone calls. On-site data is pretty accurate.)

Some companies move fast, some companies move slow. Google took 2 weeks from the on-site interview to the offer call. This is very common for them, but most other companies move faster. With Amazon, I actually interviewed with two different branches. With one branch things were going well, until they dropped the ball and never got back to me, even after I pestered them. This is unusual; although, Twitter did something similar, but then ended up responding with an on-site invitation. With the other Amazon branch, when I got home from the on-site interview, I already had an email saying they were going to make an offer. This is extremely fast. (I had a very good reference for that position.) Most companies take about a week between on-site and offer. The whole process, from first call to offer, takes about three weeks.

If your recruiter doesn't respond to you during 4 days or longer, shoot them an email. They might have forgotten to respond, or thought they did, or may be things are moving slowly, or may be they decided not to pursue. You want to be clear on where you stand with all the companies you are applying to.

The timing is pretty important here. You want your top-rated companies to give you an offer within a span of a week. This way you'll be able to leverage all those offers against each other.

If your current job position is already almost optimal for your goals, then it's possible you can do a few interviews, get a few offers and pick the best one, which will give you some marginal improvement. Or use those offers to leverage a raise at your existing company. But if you are pretty sure your current job has not been optimized for your goal, then I'd say, contrary to popular wisdom, just leave and spend a full month interviewing. (Or, even better, if you can, take a long "vacation".) You just can't do this kind of intense interviewing while holding another job. The one exception to this rule I can think of is if one of your highest-rated companies is a competitor with your current employer. Then you can leverage that!

Value of information is extremely high during this process. Talk to all the companies you can, talk to all the people you can. Once you have the final list of companies you are considering, reduce your uncertainty on everything. Validate all your assumptions. (Example: I was sure Google matched donations up to $12k, but turns out it's only up to $6k.)

 

How to evaluate your offer

There are 4 basic components in an offer: sign-on bonus, base salary, equity, and bonus.

Sign-on bonus. Most companies will be okay offering something like $12k sign-on bonus. Some will offer more. Most startups probably won't offer any.

Base salary. This is pretty consistent across most companies. Based on your experience, you'll be given a title (e.g. Senior Software Engineer or SE 2), and that title will determine the range of the salary you can expect. If you are good, you can demand a salary at the top of that range, but it's extremely hard to go higher.

Equity. This is the most interesting part. A good amount of value will come from this portion. With a startup, it'll be most of it. Here are two things to pay attention to:

  • Is the company public or private? If it's public, you are most likely going to be given RSUs (restricted stock units), which will basically convert to normal company shares when they vest. For private companies, see the section below.
  • What's the vesting schedule? For almost all companies you'll get 25% of your shares right after your first year. (This is called a 'cliff'.) After that you'll be given the appropriate fraction either monthly (e.g. at Google) or quarterly (e.g. at Facebook). Amazon is an example of a company where the vesting schedule is somewhat different: 5% after year 1, 15% after year 2, and then 20% each semester for the next two years.

Bonus. This is the bonus system the company has setup. You can't negotiate it, but it's important to take it into account.

  • There will usually be a cash bonus that's based on your salary. It'll have a target percent (e.g. 15%). If you can find out how many people hit their target, that will be very helpful. However, most companies don't share or simply don't have that information.
  • Some companies also have equity bonuses. Try to get as much info on those as you can. Don't assume that you'll get the maximum bonus even if you work hard. If you have friends working at that company, ask them what kind of bonuses they've been getting.
  • Lots of startups don't have bonus systems in place.

Other factors.

  • Donation matching: Google matches up to $6k (you donate $6k to any charity, they'll donate another $6k). Craigslist matches 3:1 up to 10% of your salary. Most companies don't have anything like that, and you can't negotiate it.
  • Paid Time Off: Google offers 2 weeks, all other companies I was considering offer 3 weeks, and some even have unlimited PTO. This is not negotiable in most companies.
  • Commute: how far will you have to travel to work? Are you okay moving closer to work? (Google and Facebook have shuttles that can pick you up almost anywhere, so you could work while you commute.)
  • People/culture/community/team/project are all important factors as well, depending on what you want. If you are going to spend the next several years working on something, you should be building up skills that will still be valuable in the future.

 

Thinking about private companies

If the company is private, you might be given RSUs or you might be given stock options. With stock options, you'll have to pay the strike price to exercise your options. So the total value your options have is: (price of a share - strike price) * number of shares.

You can't do anything with your shares until the company gets acquired or goes public. Some companies have liquidation events, but those are pretty rare. Most companies don't have them, and the ones that do only extend the opportunity to people that have been with the company for a while. There are also second-hand markets, but I don't know much about those.

If you are completely risk-intolerant, then just go with a public company, and don't consider private companies. (This is actually not exactly true. Just because a company is public, doesn't mean its risk-free, and just because a company is private doesn't mean there is a lot of risk. There are other important factors like the size of the company, their market diversity, and how long they've been around.) If you are okay with some risk, then you want a company that's close to an IPO or is likely to get acquired soon. If you want to have a chance to make more than a few million dollars, either start your own company or join a very early stage startup (my top pick would be Ripple). Before doing so, check out the stats on startups to make sure you understand how likely any given startup is to fail and make sure you understand the concepts of inside/outside view.

 

Taxes

It's crucial to understand all the tax implications of your salary, equity, and donations. I'm not going to go into all the details, there are a lot of resources out there for this, but you should definitely read them until it's crystal clear how you will be taxed. I'll highlight a few points:

  • Understand the tax rate schedule and notice the new 39.6% tax bracket. If your income is $100k, that doesn't mean you get taxed 28% on all of it. 28% applies only to the income portion above $87,850. Also note that this is only the federal tax. Your state will have additional taxes as well. Aside from those percentages, there are a few other flat taxes, but they are considerably smaller in magnitude.
  • The money you donate to a nonprofit (aka. 501(c)(3)) organization can be subtracted from your taxable income. This means that you will most likely get a refund when you file your taxes. Why? Because when you fill out your W4 form, you'll basically tell your employer how much money to withhold from your paycheck for tax purposes. If you don't account for your future donations, more money will be withheld than is appropriate and the discrepancy will be paid back to you after you file your taxes. Ideally, you want to take your donations into account and fill out the W4 form such that there are no discrepancies. That means you'll get your money now rather than later. (I haven't gone through this process myself, so there is some uncertainty here.)
  • You can claim tax deduction for up to 50% of your wages. That means if you make a lot of money in one year, even if you donate most of it, you'll be able to reduce your taxable income by a maximum of 50%. The rest goes over to the next year.
  • When RSUs vest, their value is treated as ordinary income for tax purposes. When you sell them, the difference is taxed as a capital gain (or loss).
  • Stock options have a more complicated set of tax rules, and you should understand them if you are considering a company that offers them.
  • You can't have your employer donate money or stock for you to bypass the taxes. I've asked.

 

Calculating donations

To calculate exactly how much I could donate if I worked at a given company, I've created this spreadsheet. (This is an example with completely fictitious company offers with very low numbers, but the calculations should be correct.) Let me walk you through the spreadsheet.

 

Time discounting (Cell B1)

Money now is more valuable than money later. By how much? That's a very complicated question. If you invest your money now, you might be able to make something like 10% annually with some risk.[3] If you are donating to a charity, and they are growing very rapidly, then they can do a lot with your money right now, and you should account for that as well. If you expect the charity to double in size/effectiveness/output in the next year, then you might use a discount rate as high as 50%. I chose to use 20% annual discount rate based on my own estimates. Since I'm doing monthly compounding, the spreadsheet value is slightly higher (~22%). You can look at the column K to see how the future value of a dollar is being discounted. Note, for example, that a dollar in 12 months is worth 80¢ to me now. This discounting rate is especially important to keep in mind when examining startups, because almost all their compensation lies in the future. The further away it is, the more heavily you have to discount it.

 

Cost of living (Cell B2)

This is how much pre-tax money a year I'm not going to donate. See column L for the monthly expenses. We time-discount those dollars as well.

 

Offers (Cells A4-I15)

This is where you plug-in the offers you get. Bonus row is for cash bonus. Equity row is for the total equity the company offers you. I use the dollar amount, but you'll notice that for some of them I'm computing the dollar amount as: RSUs the company is giving me * current share price. For private companies, this is value I expect my equity to have when the company goes public. For Square it looks like: (percent of the company I'll own) * (my guess at valuation of the company at IPO) - (cost to exercise my options). For Twitter it looks like: (growth factor up to IPO) * (current price per share) * (RSUs I am granted). (Again, the numbers are completely made up.) In my calculations I'm not expecting public companies' share price to rise or fall. If you disagree, you should adjust for that as well.

 

Monthly projections (Cells A18-I66)

We are going to look at how much money we'll be making per month for the next four years. (Four years because our equity should be fully vested by that time.) If you are certain that you will stay at the company for less time than that, then you should consider a shorter timeline. This might affect companies differently. For example, most of the equity you get at Amazon comes during the last two years. If you are not going to be there, you are missing out on a big part of your offer.

For companies that I was seriously considering, I created two columns: one for cash wages and one for equity wages. This way I can do taxes on them more precisely.

Let's go through the Google's offer:

  • For the first year we'll be only making our standard salary.

  • After the first year, we get our cash bonus (green font). Here we are assuming it'll be 15% of our salary. We also get 25% of our RSUs vested (salmon background).

  • For the remainder of the second year, we are making our normal salary. Each month we also get 1/48th of our original equity offer.

  • Google also has an equity bonus system, where each year you can get a bonus of up to 50% of your original equity offer. This bonus will be paid in RSUs, and it vests over 4 years, but with no cliff. So we count that as well, but I'm assuming I'm only going to get 15%, not the full 50%.

  • In year 3 everything is basically the same, except now we got our second equity bonus, so we have two of them running simultaneously.

  • In year 4, we have three of them running simultaneously.

For pre-IPO companies, I've estimated when they'll go IPO. Most have clauses in place that don't allow you to sell your shares until after half a year or so after the IPO. I'm assuming I will sell/donate all my shares then, and then continue selling/donating them as they continue vesting.

 

Sum (Cells A68-I71)

In row 68 we have the total sum. This is the amount of pre-tax dollars we expect to earn in the next four years (remember that this amount has been adjusted for time-discounting, so it'll seem much lower than you'd normally expect). L68 is how much money we are spending on ourselves during those four years.

In row 69 we subtract our living expenses to get the amount of money we'll be able to donate. Note that I'm subtracting it from the cash column, leaving the equity column alone (for the companies where I split the two).

In row 70 we account for taxes. Note that our living expenses already accounted for the taxes we pay up to $65k, so the rest of it will be taxed at around 28% or higher. You could sell your shares, or you could just donate your shares directly to your charity. (That's what we are doing with our Google offer.)

In row 71 we simply sum up the donations from cash and equity.

 

Disclaimer 1: while I tried as hard as I could to double check this spreadsheet, there might still be mistakes there, so use it with caution and triple check everything. The tax calculations as they are right now are wrong, and you'll have to redo them (basically the whole Row 70) based on your own numbers.

Disclaimer 2: this spreadsheet is not great for evaluating an offer from a startup, since it doesn't capture the associated uncertainty and risk. Furthermore, if you expect the startup to succeed after more than 4 years, to correctly compare it to other companies you'll have to compute more than 48 months and potentially start accounting for things like promotions and raises.

 

Picking the one

All right, so how do you actually pick the best company? It's not as simple as picking the one with the highest EV, since you have to account for risk involved with startups and even pre-IPO companies. In fact, you should be surprised if your offers from public companies have a higher EV than offers from startups. If that's the case, I'd double check your calculations.

This is where it becomes extremely crucial to narrow down your uncertainty. When is the company going to IPO? What is the likely valuation? Does the company have a lot of competitors? Does the company have the necessary talent to execute on their plan? What's the company's history? What is the employee churn rate (especially for executives)? How well is the company doing financially? Who are the investors? Etc, etc, etc... There is a ton of questions you should be asking, and you should be asking them to everyone whose opinion on this issue you can respect. Honest opinion from an informed and knowledgeable neutral party is worth a LOT here!

You should also talk to the people at the company. Your recruiter will connect you to the right people if you ask. Keep in mind that nobody there will tell you that the company is going to go bankrupt or fail. But you can still get some valuable estimates, and then potentially discount them down a bit. You can even ask for their opinion on other companies you are interviewing with. Expect them to completely throw the other company under the bus though, but even so, you could get a lot of valuable criticism and bring it up when you talk to that other company. Overall, expect a lot of conflicting messages.

Keep in mind the charities you'll be donating to. What kind of donors do they have already? Are most people donating a bit from their salary? In that case, a more risky venture might be reasonable. Can they really use some money right now, or would they be a lot more effective later on with a large capital? What's their time discount rate? If you care about your charity, you can help them diversify their donor pool.

For me, it was a hard choice between big public companies (primary candidate: Google) and close to IPO companies (primary candidates: Twitter and Square).

 

Negotiating

You have to negotiate your offer. You have to have to have to HAVE TO. For any given company, you'll be able to get them to up their offer at least once and potentially thrice. Example: Google upped my offer three times.

  • Some companies will tell you their offer is not negotiable. That's not true.
  • It's much easier to leverage similar companies against each other. Leverage big public companies against each other; leverage pre-IPO companies against each other; etc... Leveraging between those categories is a bit more difficult, because startups know they can't compete with the raw cash value you are offered at bigger companies. The only thing they can do is up their equity offer and hope that they are a much better personal fit for you than the large companies.
  • Recruiters will ask you very directly what the other companies are offering you. You can choose to disclose or not to disclose. If you don't disclose, the company will come back to you with their standard offer. That offer might be higher or lower than you expected. (Example: The first offer I got from Google was significantly worse than initial offers I got from Facebook and Amazon.) If you tell them what offers you have (and you should only disclose details of your very best offers), then they'll very likely match or come in a bit stronger. Usually you don't have much to gain by disclosing your other offers upfront. You can always do so later. However, you should let your recruiters know that other companies did make an offer, or you are expecting them to. That gives you more leveraging power.
  • Sign-on bonus is very easy to negotiate. You can easily convince a company to match a sign-on bonus their competitor has offered.
  • Negotiating salary is much harder, but, again, usually you can convince a company to match a salary their competitor has offered or at least come closer to it. If you are interviewing with startups, their salary offer will usually be lower than at bigger companies and even harder to negotiate. ("Cash is king" is the common phrase used there.)

First negotiating phase: simply email / call back your recruiter (who is now your best friend, right?) and tell them that the offer is somewhat lower than you expected, you have other better offers from other companies, and you are wondering if they can increase their offer. If the company made you a clearly worse offer than another similar company, you should be very open about it.

Second negotiating phase: matching other companies. This is when it makes the most sense to disclose your other offers. For example, I used my Amazon and Facebook offers to convince Google to up their offer significantly. For some reason their original offer was very low, but seeing their competitors with much better offers convinced them to update pretty quickly. You can also bring up the perks one company has that the other doesn't (e.g. donation matching or unlimited PTO). The company can make up for that with salary/equity. There is some difficulty in using offers from private companies as leverage, because there is not much information you can disclose about them. You can talk about the number of shares you'll have, but it might not mean anything to the other recruiters if they are not familiar with the startup.

Third negotiating phase: once you picked the company you'll work for, go back to them and say something along the lines of "I really like the offer and the company, but there are a few things that don't make it ideal for me. One of your competitors did this, and another company has that. Right now I'm inclined to go with your competitor, but it's a tough decision, and I would rather go with you. I think if you can make me an offer with the following parameters, it'll make my decision extremely easy, and I'll sign on the spot." Include offer letters from other companies, especially the ones that have them beat or beat on some parameters. Notice the key promise at the end: you will sign with them. Your recruiter will have a lot more leverage in fighting for you if you make that promise. You are not legally obligated to follow through with your promise, but I wouldn't advise breaking it or using it just to extract more value to use as leverage against other companies. Use this tactic at the very end to extract that last bit of value from the company that's already the best. This is what I did with Google. I asked for about 3% higher salary and 12% more equity than what they were offering, and they came back with the exact numbers I requested, which means I should have asked for more. My advice would be to ask for about twice or may be even three times as much (6% and 30% respectively). Even if they come back with a compromise, it'll very likely be more than 3% and 12% increase. If not, you can try to barter one more time.

I'm sure some people will cringe at this kind of haggling, but, in all honesty, this is what recruiters expect, and they are very much used to it. Nobody even blinked an eye when I started negotiating, even on second and third rounds. However, some recruiters might try to make you feel guilty. They'll say that if you really want to work at their startup, then you shouldn't really care about your compensation. Most points they'll make will even be valid, but if you are trying to optimize for donations, then you have to make the compensation the most important factor in your decision. I've actually told most of my recruiters that I plan to donate most of my salary to charities. I don't think that got me higher offers, but it made me come off less like a greedy jerk.

At the end of the day, the company wants you, but they want to pay you as little as possible. But, given the choice of having you and paying you the most you deserve VS. not having you, all companies will pick the first option. ALL OF THEM. This is one of the best perks of being a talented software engineer in the bay area.

Once you accept the offer, don't forget to email everyone else and let them know. Thank everyone that helped you. Some recruiters will be surprised by your decision, and some will even fight really hard to get you to reconsider.

 

 


 

[1] None of the interviews required a data structure more complicated than a heap. All the answers had a very easy to compute complexity, either polynomial, polynomial * logarithmic, or factorial. The most weird one was probably O(√n) for computing prime numbers.

[2] Some problems I did during actual single-round match-up (SRM) competitions, which is good for training yourself how to code and think faster than you are used to. I also did a lot of old SRM problems, which have solutions and explanations posted in case I couldn't get them. I could easily do problem 1 & 2 in the easy division, and could do problem 3 most of the time. I didn't really bother with the hard division, and none of the interview questions were ever as hard as problem 3 in the easy division.

[3] According to the comments, this number is too high. Pick your own best estimate.

New Comment
58 comments, sorted by Click to highlight new comments since:
[-]Nisan390

Thank you so much for writing this. I will be in a similar situation in a couple months.

[-]Nisan360

It worked! I now have a similar job to Alexei's.

[-][anonymous]290

This is an excellent piece! If you're comfortable with doing so, I'd suggest that you email 80,000 Hours about posting this on their blog. They provide career advice for Effective Altruists - this would be perfect for them.

The address is: editor AT 80000hours DOT org

[-]Alexei140

Done. Thanks!

On resume stuff, one way to make a pretty resume is to format it using LaTeX. If you don't know LaTeX, you can find templates online and modify them (e.g. here).

Here's a checklist for considering job offers.

Re: solving interview problems, I got a lot better at it when I started saying everything I was thinking out loud... I'd have a friendly conversation with my interviewer and just keep saying intelligent things until the problem was solved. (My impression is that it's generally OK to go on tangents as long as they're intelligent tangents. Typically you're going to see multiple avenues of attack for any given problem, and if you intelligently explain your way down one avenue, you can probably get points for that time spent during the interview even if it turns out to be the wrong approach.) I do part-time work as a tutor and I'm pretty good at explaining stuff, so maybe this advice works unusually well for me. But I suspect that "brain freezes" are a huge cause of programming interview underperformance, so if you think you're good at coding but you don't interview well, you probably are actually good and you just need to find a way to solve your performance anxiety.

I suspect that writing bug-free code and fixing bugs without the usual tools like print statements are skills that most programmers don't practice (since they're not typically necessary), but that you totally can practice and get better at. Cracking the Coding Interview has good instructions on doing this; the Quixey Challenge is also interesting. I actually started making a list of all the sorts of bugs I seem to make and cycling through my list before testing my code, and paying attention to what kind of mental activity I needed to induce (in sort of a meditative way) in order to best write bug-free code/search for bugs.

Apparently infosec is so hot right now that White Hat Security is hiring people with no programming experience who seem like logical thinkers and training them on the job. (I can probably put you in contact with someone who works there and got hired with no programming experience if you send me a PM.)

You can claim tax deduction for up to 50% of your wages. That means if you make a lot of money in one year, even if you donate most of it, you'll be able to reduce your taxable income by a maximum of 50%. The rest goes over to the next year.

I'm confused. Do I want to strategically spread my income out over multiple years, or does it not matter?

you might be able to make something like 10% annually with some risk.

My vague intuition is that this is really optimistic, especially in the current economic climate.

In fact, you should be surprised if your offers from public companies have a higher EV than offers from startups.

This guy argues otherwise.

Some companies will tell you their offer is not negotiable. That's not true.

Was pretty much true in the experience of one friend of mine. Ironically, he's a bit of a salary negotiation guru, but was busy when he was interviewing at companies a few years ago and ended up taking an offer that he didn't negotiate up much.

I suspect that writing bug-free code and fixing bugs without the usual tools like print statements are skills that most programmers don't practice (since they're not typically necessary), but that you totally can practice and get better at.

It may be under-practised because debugging takes too much time. Writing near bugfree code is the only way to get something done in a short timeframe.

My experience is that writing bug-free code typically takes up additional time in other ways.

Yes, nothing comes for free, of course... but it seems to me that with careful coding one can massively decrease bug rate while spending only little extra time. Debuggers make bug finding much easier but not so much faster. Coding carefully also feels very difficult out of proportion how slower it is.

My (perhaps out-of-date) experience is that lots of recruitment agents, companies etc seem to expect CVs to be in Microsoft Word format, and so providing only a PDF may be an inconvenience to them.

[-]Jiro150

Recruitment agents often want to be able to pass your resume around to companies while preventing the company from contacting you directly. They can do that by editing out your contact information, but they can only do that if your resume is in a format that they know how to edit, such as Word. That's why many of them don't like PDF--they can't easily edit it.

[-][anonymous]110

Conversely, there are some niche places that look very favorably upon LaTeX CVs. It's important to know the culture.

[-]matt170

At TrikeApps our job ads say "Choose an appropriate file format for your resume – we’ll draw conclusions about you from the tools you use". Anyone who expects us to prefer a proprietary file format over LaTeX or PDF is probably applying to the wrong place :)

An online HTML/JS CV resonated well for me. This was mostly the case with startups without specialized recruiters.

I'm confused. Do I want to strategically spread my income out over multiple years, or does it not matter?

No, I'm just trying to maximize the money I donate. If somehow I could donate it all right now, then I would. Like I mentioned, donating money now creates more value, so in that sense it's easier.

[-]Alexei200

Below are some valuable comments about this topic posted elsewhere by someone else. I'm simply copying them over here since the OP doesn't have a LW account:

"""If your current job position is already almost optimal for your goals, then it's possible you can do a few interviews, get a few offers and pick the best one, which will give you some marginal improvement. Or use those offers to leverage a raise at your existing company."""

And you don't even have to apply at 72 (!!!?) companies. After one year of employment, I applied at three other companies, got offers from two, leveraged them off each other, then used those offers to negotiate a raise in the range of 50-100%. All while working full time (with some vacation days for interviews).
(I did not have a lot of free / social time during those weeks, though.)

I haven't finished reading original article, but there are often downsides to leaving a job (golden handcuffs, business relationships, social relationships, etc). So staying can be best even if the offer isn't as good on paper, depending...

Also, original article really only applies if you're in an industry where labor is relatively liquid and your talents are highly desired by employers. This is a privilege workers in the software industry (me and OP) have; the vast majority of workers probably can't really follow this advice.

Wow. This is so badass.

[-]gjm110

For those of us who are curious about Silicon Valley salaries (idly so in my case; I'm living in the UK and don't fancy moving across the Atlantic), could you give a rough indication of how much too low the numbers in the spreadsheet are?

[EDITED to fix a stupid typo]

[-]Alexei120

At a company like Google you could make ~$100k+ base salary with no experience and a Bachelor's degree, and ~$140k+ base salary with my level of experience. The equity portion will be about ~1.3 that much, but obviously given in stock (options) and spread over 4 years. And then there are bonuses that come out to something like 10-20% annually.

[-]gjm40

Thanks. Those are pretty generous numbers in comparison with what I know of software developers' salaries in the UK, but that's not a huge surprise.

(When you wrote "1.3 that much", did you mean 0.3, or do you actually mean that you get paid more in equity than in cash?)

Equity value in USD = 1.3 * salary value in USD (roughly)

[-]gjm100

So we're talking about a package whose total value [EDIT: excluding other benefits like healthcare, free food, etc.] is on the order of $340k/year assuming the stock price is stable? And you had broadly comparable offers from other companies? Then I take back what I said: those are incredibly generous numbers in comparison with what I know of software developers' salaries in the UK. I don't know how that splits between (1) Silicon Valley being a really good place to be right now and (2) you personally being awesome, but congratulations in either case :-).

[EDIT: If whoever downvoted this is reading, and would like to tell me what's wrong with what I wrote, I'm listening. It still looks OK to me after rereading.]

Yup, that's basically right. Silicon Valley is definitely an amazing place to be right now. I'd consider myself to be a good/solid engineer, but not remarkable. One thing to keep in mind is that the cost of living here is more, but unless you are a big spender (need nice house, etc...), you'll do better here than elsewhere.

What's the vesting schedule for stock? And are they options or outright equity?

Thank you for this article, it was extremely helpful.

The most common one is you get 25% after the first year, and then the rest gets vested equally on monthly (or quarterly) basis. For public companies it's RSU (restricted stock units), which are basically equity. For startups sometimes you get options.

I'm getting $206.5K: $140K base salary + ($140K 1.3 / 4) annualized equity + ($140K 0.15) average bonus.

That looks attainable. It's better than what I'm getting as a developer in the same area, but most of the difference is in the equity package (I work for a privately held company that doesn't offer equity), and there's obviously some risk compensation going on there.

[-]gjm00

D'oh, I completely misunderstood what Alexei meant about the equity portion. Thanks to Nornagest and emr for the correction.

($200k-ish is still extremely generous in comparison with the UK, but not better by so staggering a margin.)

[-]emr00

Is this correct?

afaik, a typical equity package (at a large public company) is worth 1-2x the annual salary, but is spread over several years. So you get something like Base+(Base1.3)/4 per year, not Base + Base1.3 every year. So a more typical package might be 150-200k average annual compensation, (which is matches the estimates for total compensation on glassdoor). It seems very unlikely that the median compensation for programmers in the Bay Area is at all close to 300k (although the upper few percent might certainly make that amount).

[-]Rune110

"If you invest your money now, you might be able to make something like 10% annually with some risk."

Speaking of this, does anyone know of any LW posts or other articles about how to make the most of idle capital with some risk? Ideally with the risk analyzed by a competent Bayesian.

"If you invest your money now, you might be able to make something like 10% annually with some risk."

10% is rather questionable as a long-term prediction: only the most successful equities markets in the world managed close to that in the last century, and many disappeared entirely. After corrections for inflation, survivorship, taxes, and so forth real returns are closer to world growth rates.

Speaking of this, does anyone know of any LW posts or other articles about how to make the most of idle capital with some risk?

The ultra-standard advice of economists is index funds. They beat the overwhelming majority of actively managed funds in any given year and outperform active management (even the rare few hedge and private equity funds that seem to have real repeatable skill just raise fees until the marginal investor is indifferent) via low fees and just holding the diversified market. Basically, it's very hard to beat the market, and management and trading fees are costly, so index funds don't try to do the former and clean up on the latter.

Anna and I invest with Vanguard, which we picked based on low fees, large size, and good reputation, but almost any brokerage will offer them. You can just go to one of their websites with your bank information at hand and get things set up quite rapidly (it took less than an hour for us to invest at the Vanguard website in global equity index funds, seeking high diversification and exposure to the historical equity premium).

You can search LW for "index fund(s)" if you want, and find some economists (James Miller and maybe Robin Hanson) among others saying this, but I would go for index funds based on the track record and the overwhelming consensus of financial economists rather than LW opinion.

I was going to suggest approximating your own index funds, Monte Carlo style doing random sampling from the index you want to copy. Saving the additional fees and/or the skimming off the top. Also not relying on the provider's reputation.

But damn, their fees are low.

10% sounds high, even with the caveat of 'some risk'... how much risk does one have to eat currently to get 10%, exactly?

Speaking of this, does anyone know of any LW posts or other articles about how to make the most of idle capital with some risk?

No, or at least if there is, I haven't seen it. LW doesn't really specialize in finance; but there are so many finance blogs out there that I'd find it hard to believe none were useful, Bayesian, or both useful and Bayesian. (And there's the obvious issue that anyone who really is good enough to do such analyses probably has a finance day job and may not want to give you their analysis for free.)

[-]elharo100

I'm curious. Where did you end up after all this? If you're not comfortable sharing the exact name, I'm still curious to know whether you went to a startup or an established company, and how big of one.

[-]Alexei160

Yeah, I chose to go with Google.

Welcome! I don't know if you've started yet, but when you do you should join giving@ and effective-altruism@.

In the third negotiating phase, it seems implied that he accepted the offer from Google and will now start working there. The most relevant part is here:

You are not legally obligated to follow through with your promise, but I wouldn't advise breaking it or using it just to extract more value to use as leverage against other companies. Use this tactic at the very end to extract that last bit of value from the company that's already the best. This is what I did with Google. I asked for about 3% higher salary and 12% more equity than what they were offering, and they came back with the exact numbers I requested, which means I should have asked for more.

you might be able to make something like 10% annually with some risk.

Please put the same level of thought into this that you put into your other decisions.

1) 10% annually, especially if you're talking after-tax and after-inflation returns, is quite aggressive.

2) "with some risk" is a meaningless phrase. Include risks in your estimates. What's your estimate of mean return, including risks?

Understanding your discount rate (or rather "rates", as they can differ for different purposes) is one of the the most important and underappreciated factors in these kinds of life decisions. Whether investing monetary capital, human capital (say, taking a lower-paying job that leads to higher-paying ones), or just deciding when/how to donate, your time horizon will turn a number of close decisions into obvious ones.

In fact, you may even have a negative discount rate for some charities, if you expect they'll waste a windfall on their current priorities, but would do a ton of good toward your goals after a breakthrough or if it were given to them over time.

Good point, I pulled 10% figure more or less out of thin air. I've added a footnote.

And very good point on the discount rate in general. I completely agree.

Incidentally, if your discount rate is really this high (you mention 22% annual at one point), you should be borrowing as much as you can from banks (including potentially running up credit cards if you have to - many of those seem to be 20% annual) and just using your income to pay down your debt.

I'd say just use your cost of borrowing (probably 7% or so?) for the purposes of discounting your salary and things, and then decide whether you should borrow to donate or not based on whether that rate is less than the expected rate of return for charities. (This is assuming that you can get access to adequate funds at this rate - I'm not entirely sure, but it seems plausible.)

Question: how much of this applies to a college grad getting his first job? His second? Basically, roughly how much work experience corresponds to how much bargaining power?

All of this applies to getting your first job or your second or whatever. The more offers you have, the more leverage you have, and the easier it is to show others that you are wanted.

It seems like there'd be enough just-out-of-college people for it to be easier to just say "nope, I'll take this guy who jumped at the chance instead."

But then, I'm told that the demand for programmers is much higher than supply...

[-]Alexei110

If you are a talented programmer, you'll never hear "nope, I'll take this guy who jumped at the chance instead." They want both. Also, during negotiations, they won't tell you "you are negotiating too hard, we don't want you any more". They'll just say: "This is our final offer and we can't do better than that."

[-]Shmi40

Hmm, a fair chunk of this applies to the more mundane of us, those who would not even receive a reply from the likes of Google, Amazon or Facebook, let alone an interview.

So if Uncle Sam lets me give away 50% of my income each year before taxes, isn't this a powerful argument against Robin Hanson's idea of letting money earn interest and donating it right before one dies? Let's say I've got a great job where I'm making $200K per year, and once state and federal taxes are considered, I'm being taxed at 40% of my income from $100K to $200K. Let's say that I want to keep whatever's left after taxes of the first $100K for myself and give away all the money I make beyond that. I could give away the additional $100K now, and have it stay entirely untaxed, or I could keep it, have it taxed at 40%, and put the remaining $60K in a bank account to give away right before I die (which doesn't seem that attractive, especially in light of other arguments against Hanson's idea).

I guess if I put the money in a donor-advised fund then that would make it tax-deductible while (possibly) still allowing it to earn interest? So Hanson's idea would translate in to "put 50% of your income in a donor-advised fund each year that you advise to donate to charity right before you die".

Does anyone know stuff about this? I did some quick research and it seems like it would work (and might even offer improved growth: "Assets invested in a philanthropic account at Vanguard Charitable grow tax-free, meaning your contributions may be worth more accruing for charity than they would be if you personally invested them in the market." (source)).

Yeah, you can donate to a charity that will then donate it to other charities. But I find the idea of waiting until you are dead to donate to be quiet preposterous to be honest. Given any reasonable time discounting factor, you best impact is to donate right now, unless there are no semi-efficient charities doing what you want.

I have mixed feelings about this post. On one hand I found it fairly useful, and would have found it extremely useful before I independently the topic and got most of your advice from other sources. On the other hand, I'm not really sure its on topic for Less Wrong.

[-]gwern700

On the other hand, I'm not really sure its on topic for Less Wrong.

As far as the 'instrumental rationality' theme of LW goes, this is more on-topic than anything I've read here in months. Utilitarian ethics, optimal charity discounting, value of information, exploiting the current tech boom, overcoming geek hangups about negotiating, etc

We evaluated this for the impact purchase. Comments and criticism of the evaluation are welcome, though we may not respond.

Our very rough estimate was that writing this post was as valuable as about $20k of stimulated donations by effective altruists.

We looked at the number of upvotes on LessWrong and the list of people who Alexei thought might have benefited during their own job searches. We contacted a handful of these people and asked about how much the post helped them. The sample was not random, and Alexei's list was clearly not exhaustive.

Our impression is that the largest benefits were from:

  • Gaining confidence and pursuing a career search in a more wholehearted way.
  • Increasing the number of interviews that people took, which probably improved their offers and decreased time unemployed.
  • Modestly improving people's ability to perform well on interviews
  • Modestly improving people's willingness to negotiate.

Most of these effects have somewhat ambiguous signs, i.e. people made tradeoffs differently and it's not obvious that they made improvements. Although we have some reservations with some of the advice in this post, the biggest effects seemed to be improving people's understanding of the recruitment process, and we expect that effect to be positive.

Our extremely rough estimate was that this effect amounted to $200k in total increased (pre-tax) earnings. We guess that on the order of 5-15 people benefited significantly from the post, that the per individual benefits were on the order of $5-10k / year, and that these benefits probably persist anywhere from one to a few years (in many cases the benefit was finding a similarly good job faster, which seems to have a comparably large impact concentrated in one year). This is the crux of our estimate, but it isn't very well informed.

Based on the individuals who benefited we'd guess that about 10% of this money is used to cost-effectively make the future better (and probably somewhat more), and we are valuing the intervention at about $20k EA dollars moved.

We are generally inclined to count financial benefits beyond the fraction that is donated, and our 10% reduction is not motivated entirely by this estimate for donations (which we think is a bit low, and which we haven't adjusted to account for the fact that beneficiaries were disproportionately likely to support causes that we like rather than other EA causes). In this case there are a number of considerations that justify the discount to 10%:

  • Much of the salary gains reflect zero sum competition amongst applicants or between applicants and employers, though there are some increases in allocative efficiency.
  • Much of the credit for any positive impact of the advice is reserved for the people who actually made changes on its basis; we try to have the allocation for credit add up to 100%.
  • Related to both of the above, to the extent that taking more interviews, being more likely to pursue a job, and negotiating more aggressively create value, they also have costs that claw back some of the benefits.

"Google offers 2 weeks"

Why do you say that? I get 3, and I think that's standard. (you get an extra week after four years, and another extra week after six.)

"I was sure Google matched donations up to $12k, but turns out it's only up to $6k."

It was $12k through 2012, now it's $6k.

2 weeks, not counting holidays. Right?

Nope; 12 holidays and 15 vacation days.

(You might be confused about 15 sounding like two weeks of seven days but actually being three weeks of five days?)

That's correct, and that's what I have as well. It does depend how you count, I was counting 1 week = 7 days.

Did you supply any code samples with your application materials?

For any given company, you'll be able to get them to up their offer at least once and potentially thrice.

How do you assess when a company isn't going to up their offer anymore? It seems hard to distinguish between "We're saying this is our highest offer but it's actually not" and "This is our highest offer."

Intuition. But I found that usually if you are trying to make them up the offer and they can in any way, they will. When they say they are done, they are basically done. The only way you would ever extract more value is if you said something like: "give me 10% more than what you are offering and I'll accept your offer right this instant."

[-][anonymous]00

This point seems obvious to me but may not be to other people: optimal philanthropists are risk-loving. You should take the option that maximizes expected earnings, without too much concern for variance. Most people make career decisions designed to optimize expected utility, not earnings, and this prompts them to pick much safer, middle-of-the-road type career trajectories. To put it another way, a normal person would probably prefer a guaranteed $1 million career to one that gives a 1% shot at $200 million, but MIRI would prefer its donors to take the long shot.

[This comment is no longer endorsed by its author]Reply

Don't you need to pay tax before you pay your living expenses? eg B70 = f(B68). And then B(69) = f(B70).

Living expenses include tax already; it's measured in pre-tax dollars.