Maximizing Your Donations via a Job

In Novem­ber of 2012 I set a goal for my­self: find the most x-risk re­duc­ing role I can fill. At first I thought it would be by work­ing di­rectly with MIRI, but af­ter a while it be­came clear that I could con­tribute more by sim­ply donat­ing. So my goal be­came: find the high­est pay­ing job, so I can donate lots of money to CFAR and MIRI.

A lit­tle bit of back­ground on me. Started pro­gram­ming in 2000. Grad­u­ated in 2009 with Bach­e­lor’s in com­puter sci­ence. Worked for about a year and a half at a game com­pany. Then did my own game startup for about a year. Then moved to the bay area and joined a game startup here, which was ac­quired 10 months later. Worked a bit at the new com­pany and then left. So, just un­der four years of pro­fes­sional pro­gram­ming ex­pe­rience, but pri­mar­ily in the game in­dus­try. Al­most no lead­er­ship /​ man­age­rial ex­pe­rience, aside from the startup I did where I hired free­lancers.

Below is my ex­pe­rience of find­ing a soft­ware en­g­ineer­ing job in the Sili­con Valley. If you are not an en­g­ineer or not in the Sili­con Valley, I think you’ll still find a lot of use­ful in­for­ma­tion here.


Be­fore send­ing out my re­sume, I spent about a month prepar­ing. I read In­tro to Al­gorithms, which was very good over­all, but not a huge help in prepar­ing for in­ter­views.[1] I read Crack­ing the Cod­ing In­ter­view, which was ex­tremely helpful. (If you read only one book to pre­pare, make it this one.) The book has a lot of ques­tions that are similar to the ones you’ll ac­tu­ally see dur­ing in­ter­views. I also did TopCoder prob­lems, which were pretty helpful as well.[2] Look­ing back, I wish I spent more time find­ing ac­tual in­ter­view ques­tions on­line and do­ing more of those (that’s why CCI book was so helpful).

After sev­eral weeks of prepa­ra­tion, I com­piled a long list of com­pa­nies I was go­ing to ap­ply to. I checked on GlassDoor to see what kind of salary I could ex­pect at each one. I then rated all the com­pa­nies. Com­pa­nies with low salaries and poor per­sonal fit re­ceived the low­est rat­ing.

I started by ap­ply­ing to com­pa­nies with the low­est rat­ings. This way I could use them as prac­tice for the com­pa­nies I thought would ac­tu­ally make a com­pet­i­tive offer. This was the right move and worked very well. (Another friend of mine did the same ap­proach with good re­sults as well.) Re­mem­ber, you are not just do­ing those in­ter­views to prac­tice the cod­ing prob­lems, you are prac­tic­ing pitch­ing your­self as well.

In­ter­view­ing with a company

Stan­dard pro­ce­dure for ap­ply­ing to a tech com­pany:

1. Send them your re­sume.

  • Proofread your re­sume. Let your friends proofread it.

  • Make sure there are only rele­vant things on it. When I ap­plied to tech com­pa­nies, I re­moved a lot of game-spe­cific things from my re­sume. When I ap­plied to com­pa­nies that did 3D graph­ics, I made sure I had all my 3D graph­ics ex­pe­rience listed. I ended up with two ver­sion of my re­sume.

  • Have your re­sume in DOC, PDF, and TXT for­mats. This way you’ll always have the right one when you up­load /​ paste it.

  • For a few com­pa­nies, I had a friend or friend of a friend who referred me. This REALLY HELPS in two ways: 1) your re­sume will be pro­cessed a lot faster, 2) if your friend is a great en­g­ineer/​em­ployee, you’ll be taken a lot more se­ri­ously, and the com­pany will fight for you a lot harder.

2. You’ll get an email from the re­cruiter and setup a time to speak, where you’ll talk about your­self, what you’ve done, why you are in­ter­ested in their com­pany, and so on. You can and should ask them ques­tions as well.

  • When you start get­ting mul­ti­ple calls each day, make sure you know who is call­ing. There is noth­ing worse than talk­ing about the challenges of stream­ing mu­sic to a car shar­ing startup. (True story.)

  • Read about the com­pany on Wikipe­dia be­fore the call. Know the ba­sic stuff. Look at their web­site and read the About page.

  • Find the thing that makes the com­pany spe­cial and suc­cess­ful. Find the thing that you ac­tu­ally think is cool about the com­pany. Those are your an­swers for why you want to work there.

  • Ask non-tech­ni­cal ques­tions: How is the com­pany struc­tured? How many teams are there? How many em­ploy­ees? Eng­ineers? Think of other in­tel­li­gent ques­tions to ask.

  • In my ex­pe­rience, it’s not very benefi­cial to tell them you are in­ter­view­ing with a dozen other com­pa­nies. When they ask who else you are in­ter­view­ing with, just name a few com­pa­nies, es­pe­cially the com­peti­tors /​ similar com­pa­nies.

  • Be SUPER NICE to your re­cruiter. They are your main point of con­tact with the com­pany. They’ll be the one fight­ing to get you the best offer.

3. You’ll have a tech­ni­cal phone in­ter­view with a soft­ware en­g­ineer where you’ll solve a prob­lem or two on col­labe­dit or some similar web­site. At the end, you’ll get a few min­utes to ask them ques­tions too.

  • All the usual in­ter­view­ing tips ap­ply here. E.g. talk out loud, your in­ter­viewer doesn’t know what you are think­ing.

  • Most com­pa­nies don’t care what lan­guage you use, as long as it’s main­stream. (I used C# for al­most all my cod­ing ques­tions.)

  • DO NOT start an­swer­ing the ques­tion by writ­ing code. If the ques­tions seems vague, ask about the con­text. Who’ll be us­ing this solu­tion? Definitely ask about the kind of data you are work­ing with. If it’s in­te­gers, are they ran­dom? Over some small range or over all pos­si­ble in­te­gers?

  • List out met­rics for var­i­ous ap­proaches: brute-force solu­tion, op­ti­mized for speed solu­tion, op­ti­mized for mem­ory solu­tion. Here is a ques­tion I saw a few times: Write a data struc­ture which can ac­cept and store in­te­gers, and can check if there ex­ist two in­te­gers that sum up to a given num­ber. There are mul­ti­ple solu­tions, and the best one de­pends on the ra­tio of ad­dIn­te­ger to check­ForSum calls.

  • The pre­vi­ous steps should only take you a minute or two. Once you’ve de­cided what the best ap­proach is, then you can write the solu­tion. When you are done, check for er­rors, then run through sev­eral ex­am­ples. Do a sim­ple ex­am­ple and a slightly com­pli­cated ex­am­ple. When you find a bug, don’t be hasty in fix­ing it. Un­der­stand why it hap­pened and make sure you won’t in­tro­duce new bugs by fix­ing it.

  • If ev­ery­thing works, make sure you han­dle er­rors cor­rectly. Can you han­dle in­valid in­put? In­put that vi­o­lates your as­sump­tions? (As a re­minder, I leave “\\Check for er­rors” com­ments in ap­pro­pri­ate spots as I code the solu­tion.)

  • When you are done, ask the in­ter­viewer ques­tions. Ask them to tell you about what they do, if they haven’t already. What have they been work­ing on re­cently? What tech­nolo­gies/​lan­guages do they use at the com­pany? Do they use Scrum/​Agile? Pair-pro­gram­ming? Come up with other in­tel­li­gent ques­tions to ask.

4. You’ll be in­vited for an on-site in­ter­view which will be 3-6 hours long, at least half of which will be cod­ing on a white-board. (Although, a friend told me he brought his lap­top with him, and most peo­ple were fine with him cod­ing on it.)

  • All the pre­vi­ous tips ap­ply.

  • Be on time. Take bath­room breaks when you need them. I found that drink­ing wa­ter dur­ing the in­ter­view keeps me re­freshed. Re­mem­ber your pos­ture, body-lan­guage, and eye-con­tact skills.

  • Learn how to talk out loud as you are writ­ing out your solu­tion. If you are stuck, ex­plain what you are think­ing, and what your in­tu­ition is tel­ling you.

  • Learn how to read your in­ter­view­ers. If you say, “Here we should check for the null case or for empty ar­ray,” and they go “Yeah, yeah, okay,” they are not the type of in­ter­viewer that re­ally cares about er­ror con­di­tions, so you can be some­what more lax there. By the time I was finish­ing my on-site in­ter­views, I could tell if my solu­tion was right just by the in­ter­viewer’s body lan­guage.

  • When you are done, ask them ques­tions. What are they work­ing on? What’s the thing they like most about the com­pany? What’s their least fa­vorite thing about the com­pany? (Another way to phrase that: What’s one thing you would change if you could change any­thing about the com­pany?) Do they have to work over­time? How are the peo­ple here? Can you switch be­tween pro­jects? Are there com­pany wide events? In all my in­ter­views I’ve never met an in­ter­viewer that didn’t try to sell their com­pany re­ally hard. Peo­ple will always tell you their com­pany is the best place to work.

  • If the per­son is a man­ager or a di­rec­tor, ask them higher level ques­tions. What kind of cul­ture are they try­ing to cre­ate? What are the cur­rent big challenges? Where do they want the com­pany to be in the next 5 years? How does one ad­vance in the com­pany? (Usu­ally there is a man­age­rial and a tech­ni­cal track.) How of­ten are re­views done? How are they struc­tured?

5. You’ll get a call from the re­cruiter con­grat­u­lat­ing you on an offer. They’ll go over the offer de­tails with you.

  • Be­fore they make you an offer, they’ll check if you are ac­tu­ally se­ri­ously con­sid­er­ing their com­pany. If you told a startup you are also in­ter­view­ing with Google, they might sus­pect that you are not se­ri­ously con­sid­er­ing them. Un­less you dis­suade those fears, they might ac­tu­ally not even make you an offer. (Hap­pened to me with Rdio.)

  • If you didn’t get an offer, try to get as much info as you can. What hap­pened? What can you im­prove on? Below are the rea­sons why I didn’t get an offer af­ter an on-site in­ter­view:

    • Not do­ing well on a tech­ni­cal ques­tion. (Hap­pened twice; one time be­cause of a very ob­nox­ious in­ter­viewer.)

    • Not in­ter­view­ing for quite the right po­si­tion (that on-site in­ter­view ended early).

    • Not hav­ing the nec­es­sary ex­pe­rience (a lot more im­por­tant to star­tups than big­ger com­pa­nies).

    • Not be­ing pas­sion­ate enough about the com­pany.

  • If this is not a good timing for the offer, e.g. it’s one of your first in­ter­views, then tell them so. They will prob­a­bly wait to give you the offer de­tails un­til you are ready to con­sider it.

  • The re­cruiter will likely ask what’s im­por­tant to you in an offer. How are you go­ing to make your de­ci­sion? What I’ve said is that com­pen­sa­tion will be an im­por­tant fac­tor in my de­ci­sion, but that the team/​pro­ject/​etc. are im­por­tant con­sid­er­a­tions as well.

6. You have a few days (usu­ally around 5 busi­ness days) un­til the offer ex­pires to de­cide if you want to ac­cept it.

  • Some­times the offer will ex­pire be­fore you’ve re­ceived offers from other com­pa­nies. This is why it’s im­por­tant to in­ter­view in rough or­der of rank­ing, so that you can just let those offers go, know­ing you’ll have much bet­ter ones soon. If you want to hold on to the offer, just ask your re­cruiter for an ex­ten­sion. It’ll be much eas­ier to get an ex­ten­sion at big com­pa­nies, es­pe­cially if you are in­ter­view­ing for a generic po­si­tion.

  • If you de­cline the offer, let them know.

Always be very nice, friendly, and po­lite. Walk the fine line be­tween tel­ling the truth and say­ing the right thing. Ideally, make sure those are the same. Even if you are in­ter­view­ing with a com­pany you have no in­ten­tion of work­ing at, make sure to find some­thing you re­ally like about them, some­thing that makes them stand out to you. Always have a good an­swer to: “Why do you want to work here?”

Be­fore each on-site in­ter­view make sure you re­search the com­pany thor­oughly. Use their product. Think of ways to im­prove it. It’s very helpful if you can meet with some­one that works there and talk to them. See if they can give you any tips on the in­ter­view pro­cess. Some com­pa­nies (e.g. AirBnB) want peo­ple that are ex­tremely pas­sion­ate about their product. Some com­pa­nies fo­cus more than usual on ar­chi­tec­tural ques­tions. Many com­pa­nies ex­pect the en­g­ineers to have some fa­mil­iar­ity with UI/​UX and the abil­ity to think about a fea­ture from all an­gles.

Manag­ing your time

I sent my re­sume to 78 com­pa­nies, had at least a phone con­ver­sa­tion with a re­cruiter with 27 of them, had an on-site in­ter­view with 16 com­pa­nies, and re­ceived 12 offers. Out of those, I’ve only se­ri­ously con­sid­ered 3. (Com­pa­nies with lower rat­ings had an atro­cious re­sponse rate.)

My time-line ended up look­ing some­thing like this:

  • Week 1: Started ap­ply­ing to low-rated com­pa­nies. About 2 phone in­ter­views.

  • Week 2: About 7 phone in­ter­views. One on-site in­ter­view. Send­ing out more re­sumes.

  • Week 3: About 3 phone in­ter­views.

  • Week 4: About 15 phone in­ter­views. A few meet­ings with friends of friends, who ended up refer­ring me. 1 on-site in­ter­view. Sent my re­sume to all the high-rated com­pa­nies. (Dur­ing this week in­ter­view­ing be­came a full-time job.)

  • Week 5: About 10 phone in­ter­views. 4 on-site in­ter­views.

  • Week 6: 8 phone in­ter­views. 4 on-site in­ter­views.

  • Week 7: 4 phone calls. 5 on-site in­ter­views.

  • Week 8: 12 phone calls. 2 on-site in­ter­views.

  • Week 9: About 8 calls a day for a few days, while I ne­go­ti­ated with my top com­pa­nies.

  • (Th­ese are strictly lower bounds for phone calls. On-site data is pretty ac­cu­rate.)

Some com­pa­nies move fast, some com­pa­nies move slow. Google took 2 weeks from the on-site in­ter­view to the offer call. This is very com­mon for them, but most other com­pa­nies move faster. With Ama­zon, I ac­tu­ally in­ter­viewed with two differ­ent branches. With one branch things were go­ing well, un­til they dropped the ball and never got back to me, even af­ter I pestered them. This is un­usual; al­though, Twit­ter did some­thing similar, but then ended up re­spond­ing with an on-site in­vi­ta­tion. With the other Ama­zon branch, when I got home from the on-site in­ter­view, I already had an email say­ing they were go­ing to make an offer. This is ex­tremely fast. (I had a very good refer­ence for that po­si­tion.) Most com­pa­nies take about a week be­tween on-site and offer. The whole pro­cess, from first call to offer, takes about three weeks.

If your re­cruiter doesn’t re­spond to you dur­ing 4 days or longer, shoot them an email. They might have for­got­ten to re­spond, or thought they did, or may be things are mov­ing slowly, or may be they de­cided not to pur­sue. You want to be clear on where you stand with all the com­pa­nies you are ap­ply­ing to.

The timing is pretty im­por­tant here. You want your top-rated com­pa­nies to give you an offer within a span of a week. This way you’ll be able to lev­er­age all those offers against each other.

If your cur­rent job po­si­tion is already al­most op­ti­mal for your goals, then it’s pos­si­ble you can do a few in­ter­views, get a few offers and pick the best one, which will give you some marginal im­prove­ment. Or use those offers to lev­er­age a raise at your ex­ist­ing com­pany. But if you are pretty sure your cur­rent job has not been op­ti­mized for your goal, then I’d say, con­trary to pop­u­lar wis­dom, just leave and spend a full month in­ter­view­ing. (Or, even bet­ter, if you can, take a long “va­ca­tion”.) You just can’t do this kind of in­tense in­ter­view­ing while hold­ing an­other job. The one ex­cep­tion to this rule I can think of is if one of your high­est-rated com­pa­nies is a com­peti­tor with your cur­rent em­ployer. Then you can lev­er­age that!

Value of in­for­ma­tion is ex­tremely high dur­ing this pro­cess. Talk to all the com­pa­nies you can, talk to all the peo­ple you can. Once you have the fi­nal list of com­pa­nies you are con­sid­er­ing, re­duce your un­cer­tainty on ev­ery­thing. Val­i­date all your as­sump­tions. (Ex­am­ple: I was sure Google matched dona­tions up to $12k, but turns out it’s only up to $6k.)

How to eval­u­ate your offer

There are 4 ba­sic com­po­nents in an offer: sign-on bonus, base salary, equity, and bonus.

Sign-on bonus. Most com­pa­nies will be okay offer­ing some­thing like $12k sign-on bonus. Some will offer more. Most star­tups prob­a­bly won’t offer any.

Base salary. This is pretty con­sis­tent across most com­pa­nies. Based on your ex­pe­rience, you’ll be given a ti­tle (e.g. Se­nior Soft­ware Eng­ineer or SE 2), and that ti­tle will de­ter­mine the range of the salary you can ex­pect. If you are good, you can de­mand a salary at the top of that range, but it’s ex­tremely hard to go higher.

Equity. This is the most in­ter­est­ing part. A good amount of value will come from this por­tion. With a startup, it’ll be most of it. Here are two things to pay at­ten­tion to:

  • Is the com­pany pub­lic or pri­vate? If it’s pub­lic, you are most likely go­ing to be given RSUs (re­stricted stock units), which will ba­si­cally con­vert to nor­mal com­pany shares when they vest. For pri­vate com­pa­nies, see the sec­tion be­low.

  • What’s the vest­ing sched­ule? For al­most all com­pa­nies you’ll get 25% of your shares right af­ter your first year. (This is called a ‘cliff’.) After that you’ll be given the ap­pro­pri­ate frac­tion ei­ther monthly (e.g. at Google) or quar­terly (e.g. at Face­book). Ama­zon is an ex­am­ple of a com­pany where the vest­ing sched­ule is some­what differ­ent: 5% af­ter year 1, 15% af­ter year 2, and then 20% each semester for the next two years.

Bonus. This is the bonus sys­tem the com­pany has setup. You can’t ne­go­ti­ate it, but it’s im­por­tant to take it into ac­count.

  • There will usu­ally be a cash bonus that’s based on your salary. It’ll have a tar­get per­cent (e.g. 15%). If you can find out how many peo­ple hit their tar­get, that will be very helpful. How­ever, most com­pa­nies don’t share or sim­ply don’t have that in­for­ma­tion.

  • Some com­pa­nies also have equity bonuses. Try to get as much info on those as you can. Don’t as­sume that you’ll get the max­i­mum bonus even if you work hard. If you have friends work­ing at that com­pany, ask them what kind of bonuses they’ve been get­ting.

  • Lots of star­tups don’t have bonus sys­tems in place.

Other fac­tors.

  • Dona­tion match­ing: Google matches up to $6k (you donate $6k to any char­ity, they’ll donate an­other $6k). Craigslist matches 3:1 up to 10% of your salary. Most com­pa­nies don’t have any­thing like that, and you can’t ne­go­ti­ate it.

  • Paid Time Off: Google offers 2 weeks, all other com­pa­nies I was con­sid­er­ing offer 3 weeks, and some even have un­limited PTO. This is not ne­go­tiable in most com­pa­nies.

  • Com­mute: how far will you have to travel to work? Are you okay mov­ing closer to work? (Google and Face­book have shut­tles that can pick you up al­most any­where, so you could work while you com­mute.)

  • Peo­ple/​cul­ture/​com­mu­nity/​team/​pro­ject are all im­por­tant fac­tors as well, de­pend­ing on what you want. If you are go­ing to spend the next sev­eral years work­ing on some­thing, you should be build­ing up skills that will still be valuable in the fu­ture.

Think­ing about pri­vate companies

If the com­pany is pri­vate, you might be given RSUs or you might be given stock op­tions. With stock op­tions, you’ll have to pay the strike price to ex­er­cise your op­tions. So the to­tal value your op­tions have is: (price of a share—strike price) * num­ber of shares.

You can’t do any­thing with your shares un­til the com­pany gets ac­quired or goes pub­lic. Some com­pa­nies have liqui­da­tion events, but those are pretty rare. Most com­pa­nies don’t have them, and the ones that do only ex­tend the op­por­tu­nity to peo­ple that have been with the com­pany for a while. There are also sec­ond-hand mar­kets, but I don’t know much about those.

If you are com­pletely risk-in­tol­er­ant, then just go with a pub­lic com­pany, and don’t con­sider pri­vate com­pa­nies. (This is ac­tu­ally not ex­actly true. Just be­cause a com­pany is pub­lic, doesn’t mean its risk-free, and just be­cause a com­pany is pri­vate doesn’t mean there is a lot of risk. There are other im­por­tant fac­tors like the size of the com­pany, their mar­ket di­ver­sity, and how long they’ve been around.) If you are okay with some risk, then you want a com­pany that’s close to an IPO or is likely to get ac­quired soon. If you want to have a chance to make more than a few mil­lion dol­lars, ei­ther start your own com­pany or join a very early stage startup (my top pick would be Rip­ple). Be­fore do­ing so, check out the stats on star­tups to make sure you un­der­stand how likely any given startup is to fail and make sure you un­der­stand the con­cepts of in­side/​out­side view.


It’s cru­cial to un­der­stand all the tax im­pli­ca­tions of your salary, equity, and dona­tions. I’m not go­ing to go into all the de­tails, there are a lot of re­sources out there for this, but you should definitely read them un­til it’s crys­tal clear how you will be taxed. I’ll high­light a few points:

  • Un­der­stand the tax rate sched­ule and no­tice the new 39.6% tax bracket. If your in­come is $100k, that doesn’t mean you get taxed 28% on all of it. 28% ap­plies only to the in­come por­tion above $87,850. Also note that this is only the fed­eral tax. Your state will have ad­di­tional taxes as well. Aside from those per­centages, there are a few other flat taxes, but they are con­sid­er­ably smaller in mag­ni­tude.

  • The money you donate to a non­profit (aka. 501(c)(3)) or­ga­ni­za­tion can be sub­tracted from your tax­able in­come. This means that you will most likely get a re­fund when you file your taxes. Why? Be­cause when you fill out your W4 form, you’ll ba­si­cally tell your em­ployer how much money to with­hold from your pay­check for tax pur­poses. If you don’t ac­count for your fu­ture dona­tions, more money will be with­held than is ap­pro­pri­ate and the dis­crep­ancy will be paid back to you af­ter you file your taxes. Ideally, you want to take your dona­tions into ac­count and fill out the W4 form such that there are no dis­crep­an­cies. That means you’ll get your money now rather than later. (I haven’t gone through this pro­cess my­self, so there is some un­cer­tainty here.)

  • You can claim tax de­duc­tion 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 re­duce your tax­able in­come by a max­i­mum of 50%. The rest goes over to the next year.

  • When RSUs vest, their value is treated as or­di­nary in­come for tax pur­poses. When you sell them, the differ­ence is taxed as a cap­i­tal gain (or loss).

  • Stock op­tions have a more com­pli­cated set of tax rules, and you should un­der­stand them if you are con­sid­er­ing a com­pany that offers them.

  • You can’t have your em­ployer donate money or stock for you to by­pass the taxes. I’ve asked.

Calcu­lat­ing donations

To calcu­late ex­actly how much I could donate if I worked at a given com­pany, I’ve cre­ated this spread­sheet. (This is an ex­am­ple with com­pletely fic­ti­tious com­pany offers with very low num­bers, but the calcu­la­tions should be cor­rect.) Let me walk you through the spread­sheet.

Time dis­count­ing (Cell B1)

Money now is more valuable than money later. By how much? That’s a very com­pli­cated ques­tion. If you in­vest your money now, you might be able to make some­thing like 10% an­nu­ally with some risk.[3] If you are donat­ing to a char­ity, and they are grow­ing very rapidly, then they can do a lot with your money right now, and you should ac­count for that as well. If you ex­pect the char­ity to dou­ble in size/​effec­tive­ness/​out­put in the next year, then you might use a dis­count rate as high as 50%. I chose to use 20% an­nual dis­count rate based on my own es­ti­mates. Since I’m do­ing monthly com­pound­ing, the spread­sheet value is slightly higher (~22%). You can look at the column K to see how the fu­ture value of a dol­lar is be­ing dis­counted. Note, for ex­am­ple, that a dol­lar in 12 months is worth 80¢ to me now. This dis­count­ing rate is es­pe­cially im­por­tant to keep in mind when ex­am­in­ing star­tups, be­cause al­most all their com­pen­sa­tion lies in the fu­ture. The fur­ther away it is, the more heav­ily you have to dis­count it.

Cost of liv­ing (Cell B2)

This is how much pre-tax money a year I’m not go­ing to donate. See column L for the monthly ex­penses. We time-dis­count those dol­lars 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 to­tal equity the com­pany offers you. I use the dol­lar amount, but you’ll no­tice that for some of them I’m com­put­ing the dol­lar amount as: RSUs the com­pany is giv­ing me * cur­rent share price. For pri­vate com­pa­nies, this is value I ex­pect my equity to have when the com­pany goes pub­lic. For Square it looks like: (per­cent of the com­pany I’ll own) * (my guess at val­u­a­tion of the com­pany at IPO) - (cost to ex­er­cise my op­tions). For Twit­ter it looks like: (growth fac­tor up to IPO) * (cur­rent price per share) * (RSUs I am granted). (Again, the num­bers are com­pletely made up.) In my calcu­la­tions I’m not ex­pect­ing pub­lic com­pa­nies’ share price to rise or fall. If you dis­agree, you should ad­just for that as well.

Monthly pro­jec­tions (Cells A18-I66)

We are go­ing to look at how much money we’ll be mak­ing per month for the next four years. (Four years be­cause our equity should be fully vested by that time.) If you are cer­tain that you will stay at the com­pany for less time than that, then you should con­sider a shorter timeline. This might af­fect com­pa­nies differ­ently. For ex­am­ple, most of the equity you get at Ama­zon comes dur­ing the last two years. If you are not go­ing to be there, you are miss­ing out on a big part of your offer.

For com­pa­nies that I was se­ri­ously con­sid­er­ing, I cre­ated two columns: one for cash wages and one for equity wages. This way I can do taxes on them more pre­cisely.

Let’s go through the Google’s offer:

  • For the first year we’ll be only mak­ing our stan­dard salary.

  • After the first year, we get our cash bonus (green font). Here we are as­sum­ing it’ll be 15% of our salary. We also get 25% of our RSUs vested (salmon back­ground).

  • For the re­main­der of the sec­ond year, we are mak­ing our nor­mal salary. Each month we also get 148th of our origi­nal equity offer.

  • Google also has an equity bonus sys­tem, where each year you can get a bonus of up to 50% of your origi­nal 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 as­sum­ing I’m only go­ing to get 15%, not the full 50%.

  • In year 3 ev­ery­thing is ba­si­cally the same, ex­cept now we got our sec­ond equity bonus, so we have two of them run­ning si­mul­ta­neously.

  • In year 4, we have three of them run­ning si­mul­ta­neously.

For pre-IPO com­pa­nies, I’ve es­ti­mated when they’ll go IPO. Most have clauses in place that don’t al­low you to sell your shares un­til af­ter half a year or so af­ter the IPO. I’m as­sum­ing I will sell/​donate all my shares then, and then con­tinue sel­l­ing/​donat­ing them as they con­tinue vest­ing.

Sum (Cells A68-I71)

In row 68 we have the to­tal sum. This is the amount of pre-tax dol­lars we ex­pect to earn in the next four years (re­mem­ber that this amount has been ad­justed for time-dis­count­ing, so it’ll seem much lower than you’d nor­mally ex­pect). L68 is how much money we are spend­ing on our­selves dur­ing those four years.

In row 69 we sub­tract our liv­ing ex­penses to get the amount of money we’ll be able to donate. Note that I’m sub­tract­ing it from the cash column, leav­ing the equity column alone (for the com­pa­nies where I split the two).

In row 70 we ac­count for taxes. Note that our liv­ing ex­penses already ac­counted 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 di­rectly to your char­ity. (That’s what we are do­ing with our Google offer.)

In row 71 we sim­ply sum up the dona­tions from cash and equity.

Dis­claimer 1: while I tried as hard as I could to dou­ble check this spread­sheet, there might still be mis­takes there, so use it with cau­tion and triple check ev­ery­thing. The tax calcu­la­tions as they are right now are wrong, and you’ll have to redo them (ba­si­cally the whole Row 70) based on your own num­bers.

Dis­claimer 2: this spread­sheet is not great for eval­u­at­ing an offer from a startup, since it doesn’t cap­ture the as­so­ci­ated un­cer­tainty and risk. Fur­ther­more, if you ex­pect the startup to suc­ceed af­ter more than 4 years, to cor­rectly com­pare it to other com­pa­nies you’ll have to com­pute more than 48 months and po­ten­tially start ac­count­ing for things like pro­mo­tions and raises.

Pick­ing the one

All right, so how do you ac­tu­ally pick the best com­pany? It’s not as sim­ple as pick­ing the one with the high­est EV, since you have to ac­count for risk in­volved with star­tups and even pre-IPO com­pa­nies. In fact, you should be sur­prised if your offers from pub­lic com­pa­nies have a higher EV than offers from star­tups. If that’s the case, I’d dou­ble check your calcu­la­tions.

This is where it be­comes ex­tremely cru­cial to nar­row down your un­cer­tainty. When is the com­pany go­ing to IPO? What is the likely val­u­a­tion? Does the com­pany have a lot of com­peti­tors? Does the com­pany have the nec­es­sary tal­ent to ex­e­cute on their plan? What’s the com­pany’s his­tory? What is the em­ployee churn rate (es­pe­cially for ex­ec­u­tives)? How well is the com­pany do­ing fi­nan­cially? Who are the in­vestors? Etc, etc, etc… There is a ton of ques­tions you should be ask­ing, and you should be ask­ing them to ev­ery­one whose opinion on this is­sue you can re­spect. Hon­est opinion from an in­formed and knowl­edge­able neu­tral party is worth a LOT here!

You should also talk to the peo­ple at the com­pany. Your re­cruiter will con­nect you to the right peo­ple if you ask. Keep in mind that no­body there will tell you that the com­pany is go­ing to go bankrupt or fail. But you can still get some valuable es­ti­mates, and then po­ten­tially dis­count them down a bit. You can even ask for their opinion on other com­pa­nies you are in­ter­view­ing with. Ex­pect them to com­pletely throw the other com­pany un­der the bus though, but even so, you could get a lot of valuable crit­i­cism and bring it up when you talk to that other com­pany. Over­all, ex­pect a lot of con­flict­ing mes­sages.

Keep in mind the char­i­ties you’ll be donat­ing to. What kind of donors do they have already? Are most peo­ple donat­ing a bit from their salary? In that case, a more risky ven­ture might be rea­son­able. Can they re­ally use some money right now, or would they be a lot more effec­tive later on with a large cap­i­tal? What’s their time dis­count rate? If you care about your char­ity, you can help them di­ver­sify their donor pool.

For me, it was a hard choice be­tween big pub­lic com­pa­nies (pri­mary can­di­date: Google) and close to IPO com­pa­nies (pri­mary can­di­dates: Twit­ter and Square).


You have to ne­go­ti­ate your offer. You have to have to have to HAVE TO. For any given com­pany, you’ll be able to get them to up their offer at least once and po­ten­tially thrice. Ex­am­ple: Google upped my offer three times.

  • Some com­pa­nies will tell you their offer is not ne­go­tiable. That’s not true.

  • It’s much eas­ier to lev­er­age similar com­pa­nies against each other. Lev­er­age big pub­lic com­pa­nies against each other; lev­er­age pre-IPO com­pa­nies against each other; etc… Lev­er­ag­ing be­tween those cat­e­gories is a bit more difficult, be­cause star­tups know they can’t com­pete with the raw cash value you are offered at big­ger com­pa­nies. The only thing they can do is up their equity offer and hope that they are a much bet­ter per­sonal fit for you than the large com­pa­nies.

  • Re­cruiters will ask you very di­rectly what the other com­pa­nies are offer­ing you. You can choose to dis­close or not to dis­close. If you don’t dis­close, the com­pany will come back to you with their stan­dard offer. That offer might be higher or lower than you ex­pected. (Ex­am­ple: The first offer I got from Google was sig­nifi­cantly worse than ini­tial offers I got from Face­book and Ama­zon.) If you tell them what offers you have (and you should only dis­close de­tails of your very best offers), then they’ll very likely match or come in a bit stronger. Usu­ally you don’t have much to gain by dis­clos­ing your other offers up­front. You can always do so later. How­ever, you should let your re­cruiters know that other com­pa­nies did make an offer, or you are ex­pect­ing them to. That gives you more lev­er­ag­ing power.

  • Sign-on bonus is very easy to ne­go­ti­ate. You can eas­ily con­vince a com­pany to match a sign-on bonus their com­peti­tor has offered.

  • Ne­go­ti­at­ing salary is much harder, but, again, usu­ally you can con­vince a com­pany to match a salary their com­peti­tor has offered or at least come closer to it. If you are in­ter­view­ing with star­tups, their salary offer will usu­ally be lower than at big­ger com­pa­nies and even harder to ne­go­ti­ate. (“Cash is king” is the com­mon phrase used there.)

First ne­go­ti­at­ing phase: sim­ply email /​ call back your re­cruiter (who is now your best friend, right?) and tell them that the offer is some­what lower than you ex­pected, you have other bet­ter offers from other com­pa­nies, and you are won­der­ing if they can in­crease their offer. If the com­pany made you a clearly worse offer than an­other similar com­pany, you should be very open about it.

Se­cond ne­go­ti­at­ing phase: match­ing other com­pa­nies. This is when it makes the most sense to dis­close your other offers. For ex­am­ple, I used my Ama­zon and Face­book offers to con­vince Google to up their offer sig­nifi­cantly. For some rea­son their origi­nal offer was very low, but see­ing their com­peti­tors with much bet­ter offers con­vinced them to up­date pretty quickly. You can also bring up the perks one com­pany has that the other doesn’t (e.g. dona­tion match­ing or un­limited PTO). The com­pany can make up for that with salary/​equity. There is some difficulty in us­ing offers from pri­vate com­pa­nies as lev­er­age, be­cause there is not much in­for­ma­tion you can dis­close about them. You can talk about the num­ber of shares you’ll have, but it might not mean any­thing to the other re­cruiters if they are not fa­mil­iar with the startup.

Third ne­go­ti­at­ing phase: once you picked the com­pany you’ll work for, go back to them and say some­thing along the lines of “I re­ally like the offer and the com­pany, but there are a few things that don’t make it ideal for me. One of your com­peti­tors did this, and an­other com­pany has that. Right now I’m in­clined to go with your com­peti­tor, but it’s a tough de­ci­sion, and I would rather go with you. I think if you can make me an offer with the fol­low­ing pa­ram­e­ters, it’ll make my de­ci­sion ex­tremely easy, and I’ll sign on the spot.” In­clude offer let­ters from other com­pa­nies, es­pe­cially the ones that have them beat or beat on some pa­ram­e­ters. No­tice the key promise at the end: you will sign with them. Your re­cruiter will have a lot more lev­er­age in fight­ing for you if you make that promise. You are not legally obli­gated to fol­low through with your promise, but I wouldn’t ad­vise break­ing it or us­ing it just to ex­tract more value to use as lev­er­age against other com­pa­nies. Use this tac­tic at the very end to ex­tract that last bit of value from the com­pany 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 offer­ing, and they came back with the ex­act num­bers I re­quested, which means I should have asked for more. My ad­vice would be to ask for about twice or may be even three times as much (6% and 30% re­spec­tively). Even if they come back with a com­pro­mise, it’ll very likely be more than 3% and 12% in­crease. If not, you can try to barter one more time.

I’m sure some peo­ple will cringe at this kind of hag­gling, but, in all hon­esty, this is what re­cruiters ex­pect, and they are very much used to it. No­body even blinked an eye when I started ne­go­ti­at­ing, even on sec­ond and third rounds. How­ever, some re­cruiters might try to make you feel guilty. They’ll say that if you re­ally want to work at their startup, then you shouldn’t re­ally care about your com­pen­sa­tion. Most points they’ll make will even be valid, but if you are try­ing to op­ti­mize for dona­tions, then you have to make the com­pen­sa­tion the most im­por­tant fac­tor in your de­ci­sion. I’ve ac­tu­ally told most of my re­cruiters that I plan to donate most of my salary to char­i­ties. 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 com­pany wants you, but they want to pay you as lit­tle as pos­si­ble. But, given the choice of hav­ing you and pay­ing you the most you de­serve VS. not hav­ing you, all com­pa­nies will pick the first op­tion. ALL OF THEM. This is one of the best perks of be­ing a tal­ented soft­ware en­g­ineer in the bay area.

Once you ac­cept the offer, don’t for­get to email ev­ery­one else and let them know. Thank ev­ery­one that helped you. Some re­cruiters will be sur­prised by your de­ci­sion, and some will even fight re­ally hard to get you to re­con­sider.

[1] None of the in­ter­views re­quired a data struc­ture more com­pli­cated than a heap. All the an­swers had a very easy to com­pute com­plex­ity, ei­ther polyno­mial, polyno­mial * log­a­r­ith­mic, or fac­to­rial. The most weird one was prob­a­bly O(√n) for com­put­ing prime num­bers.

[2] Some prob­lems I did dur­ing ac­tual sin­gle-round match-up (SRM) com­pe­ti­tions, which is good for train­ing your­self how to code and think faster than you are used to. I also did a lot of old SRM prob­lems, which have solu­tions and ex­pla­na­tions posted in case I couldn’t get them. I could eas­ily do prob­lem 1 & 2 in the easy di­vi­sion, and could do prob­lem 3 most of the time. I didn’t re­ally bother with the hard di­vi­sion, and none of the in­ter­view ques­tions were ever as hard as prob­lem 3 in the easy di­vi­sion.

[3] Ac­cord­ing to the com­ments, this num­ber is too high. Pick your own best es­ti­mate.