There’s a meme that’s been going around for a while now: you should join a startup because the money is better and the work is more technically interesting. Paul Graham says that the best way to make money is to “start or join a startup”, which has been “a reliable way to get rich for hundreds of years”, and that you can “compress a career’s worth of earnings into a few years”. Michael Arrington says that you’ll become a part of history. Joel Spolsky says that by joining a big company, you’ll end up playing foosball and begging people to look at your code. Sam Altman says that if you join Microsoft, you won’t build interesting things and may not work with smart people. They all claim that you’ll learn more and have better options if you go work at a startup. Some of these links are a decade old now, but the same ideas are still circulating and those specific essays are still cited today.
Let’s look at these points one one-by-one.
The numbers will vary depending on circumstances, but we can do a back of the envelope calculation and adjust for circumstances afterwards. Median income in the U.S. is about $30k/yr. The somewhat bogus zeroth order lifetime earnings approximation I’ll use is $30k * 40 = $1.2M. A new grad at Google/FB/Amazon with a lowball offer will have a total comp (salary + bonus + equity) of $130k/yr. According to glassdoor’s current numbers, someone who makes it to T5/senior at Google should have a total comp of around $250k/yr. These are fairly conservative numbers1.
Someone who’s not particularly successful, but not particularly unsucessful will probably make senior in five years2. For our conservative baseline, let’s assume that we’ll never make it past senior, into the pay grades where compensation really skyrockets. We’d expect earnings (total comp including stock, but not benefits) to looks something like:
Looks like it takes six years to gross a U.S. career’s worth of income. If you want to adjust for the increased tax burden from earning a lot in a few years, add an extra year. Maybe add one to two more years if you decide to live in the bay or in NYC. If you decide not to retire, lifetime earnings for a 40 year career comes in at almost $10M.
One common, but false, objection to this is that your earnings will get eaten up by the cost of living in the bay area. Not only is this wrong, it’s actually the opposite of correct. You can work at these companies from outside the bay area; most of these companies will pay you maybe 10% less if you work in a location where cost of living is around the U.S. median by working in a satellite office of a trendy company headquartered in SV or Seattle (at least if you work in the US – pay outside of the US is often much lower for reasons that don’t really make sense to me). Market rate at smaller companies in these areas tends to be very low. When I interviewed in places like Portland and Madison, there was a 3x-5x difference between what most small companies were offering and what I could get at a big company in the same city. In places like Austin, where the market is a bit thicker, it was a 2x-3x difference. The difference in pay at 90%-ile companies is greater, not smaller, outside of the SF bay area.
Another objection is that most programmers at most companies don’t make this kind of money. If, three or four years ago, you’d told me that there’s a career track where it’s totally normal to make $250k/yr after a few years, doing work that was fundamentally pretty similar to the work I was doing then, I’m not sure I would have believed it. No one I knew made that kind of money, except maybe the CEO of the company I was working at. Well him, and folks who went into medicine or finance.
The only difference between then and now is that I took a job at a big company. When I took that job, the common story I heard at orientation was basically “I never thought I’d be able to get a job at Google, but a recruiter emailed me and I figured I might as well respond”. For some reason, women were especially likely to have that belief. Anyway, I’ve told that anecdote to multiple people who didn’t think they could get a job at some trendy large company, who then ended up applying and getting in. And what you’ll realize if you end up at a place like Google is that most of them are just normal programmers like you and me. If anything, I’d say that Google is, on average, less selective than the startup I worked at. When you only have to hire 100 people total, and half of them are folks you worked with as a technical fellow at one big company and then as an SVP at another one, you can afford to hire very slowly and being extremely selective. Big companies will hire more than 100 people per week, which means they can only be so selective.
Despite the hype about how hard it is to get a job at Google/FB/wherever, your odds aren’t that bad, and they’re certainly better than your odds striking it rich at a startup, for which Patrick McKenzie has a handy cheatsheet:
Roll d100. (Not the right kind of geek? Sorry. rand(100) then.)
0~70: Your equity grant is worth nothing.
71~94: Your equity grant is worth a lump sum of money which makes you about as much money as you gave up working for the startup, instead of working for a megacorp at a higher salary with better benefits.
95~99: Your equity grant is a life changing amount of money. You won’t feel rich — you’re not the richest person you know, because many of the people you spent the last several years with are now richer than you by definition — but your family will never again give you grief for not having gone into $FAVORED_FIELD like a proper $YOUR_INGROUP.
100: You worked at the next Google, and are rich beyond the dreams of avarice. Congratulations.
Perceptive readers will note that 100 does not actually show up on a d100 or rand(100).
For a more serious take that gives approximately the same results, 80000 hours finds that the average value of a YC founder after 5-9 years is $18M. That sounds great! But there are a few things to keep in mind here. First, YC companies are unusually successful compared to the average startup. Second, in their analysis, 80000 hours notes that 80% of the money belongs to 0.5% of companies. Another 22% are worth enough that founder equity beats working for a big company, but that leaves 77.5% where that’s not true.
If you’re an employee and not a founder, the numbers look a lot worse. If you’re a very early employee you’d be quite lucky to get 1/10th as much equity as a founder. If we guess that 30% of YC startups fail before hiring their first employee, that puts the mean equity offering at $1.8M / .7 = $2.6M. That’s low enough that for 5-9 years of work, you really need to be in the 0.5% for the payoff to be substantially better than working at a big company unless the startup is paying a very generous salary.
There’s a sense in which these numbers are too optimistic. Even if the company is successful and has a solid exit, there are plenty of things that can make your equity grant worthless. It’s hard to get statistics on this, but anecdotally, this seems to be the common case in acquisitions.
Moreover, the pitch that you’ll only need to work for four years is usually untrue. To keep your lottery ticket until it pays out (or fizzles out), you’ll probably have to stay longer. The most common form of equity at early stage startups are ISOs that, by definition, expire 90 at most days after you leave. If you get in early, and leave after four years, you’ll have to exercise your options if you want a chance at the lottery ticket paying off. If the company hasn’t yet landed a large valuation, you might be able to get away with paying O(median US annual income) to exercise your options. If the company looks like a rocketship and VCs are piling in, you’ll have a massive tax bill, too, all for a lottery ticket.
For example, say you joined company X early on and got options for 1% of the company when it was valued at $1M, so the cost exercising all of your options is only $10k. Maybe you got lucky and four years later, the company is valued at $1B and your options have only been diluted to .5%. Great! For only $10k you can exercise your options and then sell the equity you get for $5M. Except that the company hasn’t IPO’d yet, so if you exercise your options, you’re stuck with a tax bill from making $5M, and by the time the company actually has an IPO, your stock could be worthy anywhere from $0 to $LOTS. In some cases, you can sell your non-liquid equity for some fraction of its “value”, but my understanding is that it’s getting more common for companies to add clauses that limit your ability to sell your equity before the company has an IPO. And even when your contract doesn’t have a clause that prohibits you from selling your options on a secondary market, companies sometimes use backchannel communications to keep you from being able to sell your options.
Of course not every company is like this – I hear that Dropbox has generously offered to buy out people’s options at their current valuation for multiple years running and they now hand out RSUs instead of options, and Pinterest now gives people seven years to exercise their options after they leave – but stories like that are uncommon enough that they’re notable. The result is that people are incentivized to stay at most startups, even if they don’t like the work anymore. From chatting with my friends at well regarded highly-valued startups, it sounds like many of them have a substantial fraction of zombie employees who are just mailing it in and waiting for a liquidity event. A common criticism of large companies is that they’ve got a lot of lifers who are mailing it in, but most large companies will let you leave any time after the first year and walk away with a pro-rated fraction of your equity package3. It’s startups where people are incentivized to stick around even if they don’t care about the job.
At a big company, we have a career’s worth of income in six years with high probability once you get your foot in the door. This isn’t quite as good as the claim that you’ll be able to do that in three or four years at a startup, but the risk at a big company is very low once you land the job. In startup land, we have a lottery ticket that appears to have something like a 0.5% chance of paying off for very early employees. Startups might have had a substantially better expected value when Paul wrote about this in 2004, but big company compensation has increased much faster than compensation at the median startup. We’re currently in the best job market the world has ever seen for programmers. That’s likely to change at some point. The relative returns on going the startup route will probably look a lot better once things change, but for now, saving up some cash while big companies hand it out like candy doesn’t seem like a bad idea.
We’ve established that big companies will pay you decently. But there’s more to life than making money. After all, you spend 40+ hours a week working. How interesting is the work at big companies? Joel claimed that large companies don’t solve interesting problems and that Google is paying untenable salaries to kids with more ultimate frisbee experience than Python, whose main job will be to play foosball in the googleplex, Sam Altman said something similar (but much more measured) about Microsoft, every third Michael O. Church comment is about how Google tricks a huge number of overqualified programmers into taking jobs that no one wants, and basically every advice thread on HN or reddit aimed at new grads will have multiple people chime in on how the experience you get at startups is better than the experience you’ll get slaving away at a big company.
The claim that big companies have boring work is too broad and absolute to even possibly be true. It depends on what kind of work you want to do. When I look at conferences where I find a high percentage of the papers compelling, the stuff I find to be the most interesting is pretty evenly split between big companies and academia, with the (very) occasional paper by a startup. For example, looking at ISCA this year, there’s a 2:1 ratio of papers from academia to industry (and all of the industry papers are from big companies). But looking at the actual papers, a significant fraction of the academic papers are reproducing unpublished work that was done at big companies but not published, sometimes multiple years ago. If I only look at the new work that I’m personally interested in, it’s about a 1:1 ratio. There are some cases where a startup is working in the same area and not publishing, but that’s quite rare and large companies do much more research that they don’t publish. I’m just using papers as a proxy for having the kind of work I like. There are also plenty of areas where publishing isn’t the norm, but large companies do the bulk of the cutting edge work.
Of course YMMV here depending on what you want to do. I’m not really familiar with the landscape of front-end work, but it seems to me that big companies don’t do the vast majority of the cutting edge non-academic work, the way they do with large scale systems. IIRC, there’s an HN comment where Jonathan Tang describes how created his own front-end work: he had the idea, told his manager about it, and got approval to make it happen. It’s possible to do that kind of thing at a large company, but people often seem to have an easier time pursuing that kind of idea at a small company. And if your interest is in product, small companies seem like the better bet (though, once again, I’m pretty far removed from that area, so my knowledge is secondhand).
But if you’re interested in large systems, at both of my last two jobs, I’ve seen speculative research projects with 9 figure pilot budgets approved. In a pitch for one of the products, the pitch wasn’t even that the project would make the company money. It was that a specific research area was important to the company, and that this infrastructure project would enable the company to move faster in that research area. Since the company is a $X billion dollar a year company, the project only needed to move the needle by a small percentage to be worth it. And so a research project whose goal was to speed up the progress of another research project was approved. Startups simply don’t have the resources to throw that much money at research problems that aren’t core to their business. And many problems that would be hard problems at startups are curiosities at large companies. Work at Google and have a question that requires running a query that takes 10k machines? No problem! But that’s basically impossible to do at a startup, not even considering the fact that you can run the query across data startups can’t possibly get.
The flip side of this is that there are experiments that startups have a very easy time doing that established companies can’t do. When I was at EC a number of years ago, back when Facebook was still relative young, the Google ad auction folks remarked to the FB folks that FB was doing the sort of experiments they’d do if they were small enough to do them, but they couldn’t just change the structure of their ad auctions now that there was so much money going through their pipeline. As with everything else we’re discussing, there’s a tradeoff here and the real question is how to weight the various parts of the tradeoff, not which side is better in all ways.
The Michael O. Church claim is somewhat weaker: big companies have cool stuff to work on, but you won’t be allowed to work on them until you’ve paid your dues working on boring problems. A milder phrasing of this is that getting to do interesting work is a matter of getting lucky and landing on an initial project you’re interested in, but the key thing here is that most companies can give you a pretty good estimate about how lucky you’re going to be. Google is notorious for its blind allocation process, and I know multiple people who ended up at MS because they had the choice between a great project at MS and blind allocation at Google, but even Google has changed this to some extent and it’s not uncommon to be given multiple team options with an offer. In that sense, big companies aren’t much different from startups. It’s true that there are some startups that will basically only have jobs that are interesting to you (e.g., FaunaDB if you’re interested in building a distributed database). But at any startup that’s bigger and less specialized, there’s going to be work you’re interested in and work you’re not interested in, and it’s going to be up to you to figure out if your offer lets you work on stuff you’re interested in.
Something to note is that if, per “1”, you have the leverage to negotiate a good compensation package, you also have the leverage to negotiate for work that you want to do. We’re in what is probably the best job market for programmers ever. That might change tomorrow, but until it changes, you have a lot of power to get work that you want.
If this sounds completely foreign to you and you don’t have that kind of leverage, I understand. That was me a few years ago. Taking a job at a trendy big company is one way to get that leverage. Companies really want you to make it to “senior engineer” (where total comp starts at $250k to $350k, depending on the company); hiring is very expensive for them and they’re heavily incentivized to mentor the people they hire until they’re valuable and productive. Some companies are better at this than others, but the average big company that people want to work for has a lot more resources devoted to helping people learn than almost any startup. The goal at most big companies to get everyone to the senior level. Of course they’ll keep hiring which means there will always be non-senior people, but the definition of senior engineer is basically someone who can indpendently find and solve problems and doesn’t require any handholding, i.e., someone who’s easy to scale horizontally. Google even has a (unevenly enforced) policy that people who don’t “eventually” get to senior should be managed out, and you’ll notice that they’re not known for having a high involuntary attrition rate. They, and most other big companies, take teaching seriously.
What about the claim that experience at startups is more valuable? We don’t have the data to do a rigorous quantitative comparison, but qualitatively, everything’s on fire at startups, and you get a lot of breadth putting out fires, but you don’t have the time to explore problems as deeply.
I spent the first seven years of my career at a startup and I loved it. It was total chaos, which gave me the ability to work on a wide variety of different things and take on more responsibility than I would have gotten at a bigger company. I did everything from add fault tolerance to an in-house distributed system to owning a quarter of a project that added ARM instructions to an x86 chip, creating both the fastest ARM chip at the time, as well as the only chip capable of switching between ARM and x86 on the fly4. That was a great learning experience.
But I’ve had great learning experiences at big companies, too. At Google, my “starter” project was to join a previously one-person project, read the half finished design doc, provide feedback, and then start implementing. The impetus for the project was that people were worried that a certain class of applications would require Google to double the number of machines it owns if a somewhat unlikely but not impossible scenario happened. That wasn’t too much different from my startup experience, except for that bit about actually having a design doc, and that cutting infra costs could save billions a year instead of millions a year.
The next difference was that, at some point, people way above my pay grade made the decision to get serious about the project, and a lot of high-powered people ended up getting brought in to work on the project or at least provide input, folks like Norm Jouppi, Geoff Hinton, and Jeff Dean.
Was that project a better or worse learning experience than the equivalent project at a startup? At a startup, the project probably would have continued to be a two-person show, and I would have learned all the things you learn when you bang out a project with not enough time and resources and do half the thing yourself. Instead, I ended up owning a fraction of the project and merely provided feedback on the rest, and it merely a matter of luck (timing) that I had significant say on fleshing out the architecture. I definitely didn’t get the same level of understanding I would have if I implemented half of it myself. On the other hand, the larger team meant that we actually had time to do things like design reviews and code reviews, and I got feedback from people who have way more experience and knowledge than me. My experience at MS is similar – I only own maybe a quarter of the project I’m working on, and there’s an architect above me who’s extremely well regarded and probably has veto power on architectural decisions. But when I had a question the other day, I emailed a Turing award winner and got a response back within an hour. It’s almost impossible to have access to the same breadth and depth of expertise at a startup. As a result, there are things I’ve learned in an hour long design review that it would have taken me months or years to learn if I was implementing things myself.
If you care about impact, it’s also easier to have a large absolute impact at a large company, due to the scale that big companies operate at. If I implemented what I’m doing now for a companies the size of startup I used to work for, it would have had an impact of maybe $10k/month. That’s nothing to sneeze at, but it wouldn’t have covered my salary. But the same thing at a big company is worth well over 1000x that. There are simply more opportunities to have high impact at large companies because they operate at a larger scale. The corollary to this is that startups are small enough that it’s easier to have an impact on the company itself, even when the impact on the world is smaller in absolute terms. Nothing I do is make or break for a large company, but when I worked at a startup, it felt like what we did could change the odds of the company surviving.
As far as having better options after having worked for a big company or having worked for a startup, if you want to work at startups, you’ll probably have better options with experience at startups. If you want to work on the sorts of problems that are dominated by large companies, you’re better off with more experience in those areas, at large companies. There’s no right answer here.
The compensation tradeoff has changed a lot over time. When Paul Graham was writing in 2004, he used $80k/yr as a reasonable baseline for what “a good hacker” might make. Adjusting for inflation, that’s about $100k/yr now. But the total comp for “a good hacker” is $250k+/yr, not even counting perks like free food and having really solid insurance. The tradeoff has heavily tilted in favor of large companies.
The interesting work tradeoff has also changed a lot over time, but the change has been… bimodal. The existence of AWS and Azure means that ideas that would have taken millions of dollars in servers and operational expertise can be done with almost no fixed cost and low marginal costs. The scope of things you can do at an early-stage startup that were previously the domain of well funded companies is large and still growing. But at the same time, if you look at the work Google and MS are publishing at top systems conferences, startups are farther from being able to reproduce the scale-dependent work than ever before (and a lot of the most interesting work doesn’t get published). Depending on what sort of work you’re interested in, things might look relatively better or relative worse at big companies.
In any case, the reality is that the difference between types of companies is smaller than the differences between companies of the same type. That’s true whether we’re talking about startups vs. big companies or mobile gaming vs. biotech. This is recursive. The differences between different managers and teams at a company can easily be larger than the differences between companies. If someone tells you that you should work for a certain type of company, that advice is guaranteed to be wrong much of the time, whether that’s a VC advocating that you should work for a startup or a Turing award winner telling you that you should work in a research lab.
As for me, well, I don’t know you and it doesn’t matter to me whether you end up at a big company, a startup, or something in between. Whatever you decide, I hope you get to know your manager well enough to know that they have your back, your team well enough to know that you like working with them, and your project well enough to know that you find it interesting. Personally, I’m a bit tired of the sort of nonsense you see at big companies after two stints at big companies5, and I might want to trade that for the sort of nonsense you see at startups next time I look for work, but that’s just me. You should figure out what the relevant tradeoffs are for you.
Jocelyn Goldfein on big companies vs. small companies.
Patrick McKenzie on providing business value vs. technical value, with a response from Yossi Kreinin.
Yossi Kreinin on passion vs. money, and with a rebuttal to this post on regret minimization.
Alex Clemmer is writing a document that’s amazing. I’ll add a link to that once it’s finished.
Update: The responses on this post have been quite divided. Folks at big companies usually agree, except that the numbers seem low to them, especially for new grads. This is true even for people who living in places like Madison and Austin, which have a cost of living similar to U.S. median. On the other hand, a lot of people vehemently maintain that the numbers in this post are basically impossible. A lot of people are really invested in the idea that they’re making about as much as possible. If you’ve decided that making less money is the right tradeoff for you, that’s fine and I don’t have any problem with that. But if you really think that you can’t make that much money and you don’t believe me, I recommend talking to one of the hundreds of thousands of engineers at one of the many large companies that pays well.
Thanks to Kelly Eskridge, Leah Hanson, Julia Evans, Alex Clemmer, Ben Kuhn, Malcolm Matalka, Nick Bergson-Shilcock, Nat Welch, Darius Bacon, Lindsey Kuper, Prabhakar Ragde, Pierre-Yves Baccou, David Turner, Oskar Thoren, Katerina Barone-Adesi, Scott Feeney, Ralph Corderoy, Ezekiel Benjamin Smithburg, and Kyle Littler for comments/corrections/discussion.
In particular, the glassdoor numbers seem low for an average. I suspect that’s because their average is weighed down by older numbers, while compensation has skyrocketed the past seven years. The average numbers on glassdoor don’t even match the average numbers I heard from other people in my midwestern satellite office in a large town two years ago, and the market has gone up sharply since then. More recently, on the upper end, I know someone fresh out of school who has a total comp of almost $250k/yr ($350k equity over four years, a $50k signing bonus, plus a generous salary). As is normal, they got a number of offers with varying compensation levels, and then Facebook came in and bid him up. The companies that are serious about competing for people matched the offers, and that was that. This included bids in Seattle and Austin that matched the bids in SV. If you’re negotiating an offer, the thing that’s critical isn’t to be some kind of super genius. It’s enough to be pretty good, know what the market is paying, and have multiple offers. This person was worth every penny, which is he got his offers, but I know several people who are just as good who make half as much just because they only got a single offer and had no leverage.
Anyway, the point of this footnote is just that the total comp for experienced engineers can go way above the numbers mentioned in the post. In the analysis that follows, keep in mind that I’m using conservative numbers and that an aggressive estimate for experienced engineers would be much higher. Just for example, at Google, senior is level 5 out of 11 on a scale that effectively starts at 3. At Microsoft, it’s 63 out of a weirdo scale that starts anf 59 and goes to 68 and then jumps up to 80 (or something like that, I always forget the details because the scale is so silly). Senior isn’t a particularly high band, and people at senior often have total comp substantially greater than $250k/yr. Note that these numbers also don’t include the above market rate of stock growth at trendy large companies in the past few years. If you’ve actually taken this deal, your RSUs have likely appreciated substantially.[return]
This depends on the company. It’s true at places at like Facebook and Google, which make a serious effort to retain people. It’s nearly completely untrue at places like IBM, National Instruments (NI), and Epic Systems, which don’t even try. And it’s mostly untrue at places like Microsft, which tries, but in the most backwards way possible.
Microsoft (and other mid-tier companies) will give you an ok offer and match good offers from other companies. That by itself is already problematic since it incentivizes people who are inteviewing at Microsoft to also interview elsewhere. But the worse issue is that they do the same when retaining employees. If you stay at Microsoft for a long time and aren’t one of the few people on the fast track to “partner”, your pay is going to end up severely below market, sometime by as much as a factor of two. When you realize that, and you interview elsewhere, Microsoft will match external offers, but after getting underpaid for years, by hundreds of thousands or millions of dollars (depending on how long you’ve been there), the promise of making market rate for a single year and then being underpaid for the forseeable future doesn’t seem very compelling. The incentive structure appears as if it were designed to caused people who are between average and outstanding to leave. I’ve seen this happen with multiple people and I know multiple others who are planning to leave for this exact reason. Their managers are always surprised when this happens, but they shouldn’t be; it’s eminently predictable.
The IBM strategy actually makes a lot more sense to me than the Microsoft strategy. You can save a lot of money by paying people poorly. That makes sense. But why bother paying a lot to get people in the door and then incentivizing them to leave? While it’s true that the very top people I work with are well compensated and seem happy about it, there aren’t enough of those people that you can rely on them for everything.[return]
My very first interaction with an employee at big company X orientation was having that employee tell me that I couldn’t get into orientation because I wasn’t on the list. I had to ask how I could get on the list, and I was told that I’d need an email from my manager to get on the list. This was at around 7:30am because orientation starts at 7:30 and then runs for half a day for reasons no one seems to know (I’ve asked a lot of people, all the way up to VPs in HR). When I asked if I could ust come back later in the day, I was told that if I couldn’t get in within an hour I’d have to come back next week. I also asked if the fact that I was listed in some system as having a specific manager was evidence that I was supposed to be at orientation and was told that I had to be on the list. So I emailed my manager, but of course he didn’t respond because who checks their email at 7:30am? Luckily, my manager had previously given me his number and told me to call if I ever needed anything, and being able to get into orientation and not have to show up at 7:30am again next week seemed like anything, so I gave him a call. Naturally, he asked to talk to the orientation gatekeeper; when I relayed that the orientation guy, he told me that he couldn’t talk on the phone – you see, he can only accept emails and can’t talk on the phone, not even just to clarify something. Five minutes into orientation, I was already flabbergasted. But, really, I should have considered myself lucky – the other person who “wasn’t on the list” didn’t have his manager’s phone number, and as far as I know, he had to come back the next week at 7:30am to get into orientation. I asked the orientation person how often this happens, and he told me “very rarely, only once or twice per week”.
That experience was repeated approximately every half hour for the duration of orientation. I didn’t get dropped from any other orientation stations, but when I asked, I found that every station had errors that dropped people regularly. My favorite was the station where someone was standing at input queue, handing out a piece of paper. The piece of paper informed you that the machine at the station was going to give you an error with some instructions about what to do. Instead of following those instructions, you had to follow the instructions on the piece of paper when the error occurred.
These kinds of experiences occupied basically my entire first week. Now that I’m past onboarding and onto the regular day-to-day, I have a surreal Kafaka-esque experience a few times a week. And I’ve mostly figured out how to navigate the system (usually, knowing the right person and asking them to intervene solves the problem). What gets me about this isn’t the actual experience, but that most people I talk to who’ve been here a while think that it literally cannot be any other way and that things could not possibly be improved; new hires from younger companies almost always agree that the company is bizarrely screwed up in ways that are incomprehensible. Curiously, people who have been here as long who are very senior tend to agree that the company is quite messed up. I wish I had enough data on that to tell which way the causation runs. Something that’s even curiouser is that the company invests a fair amount of effort to give people the impression that things are as good as they could possibly be. At orientation, we got a very strange version of history that made it sound as if the company had pioneered everything from the GUI to the web, with multiple claims that we have the best X in the world, even when X is not best in class but in fact worst in class, so bad that X is a running joke internally. It’s not clear to me what the company gets out of making sure that most employees don’t understand what the downsides are in our own products and processes.
Whatever the reason, the attitude that things couldn’t possibly be improved isn’t just limited to administrative issues. A friend of mine needed to find a function to do something that’s a trivial one liner on Linux, but that’s considerably more involved on our OS. His first attempt was to use boost, but it turns out that the documentation for doing this on our OS is complicated enough that boost got this wrong and has had a bug in it for years. A couple days, and 72 lines of code later, he managed to figure out how to create a function to do this trivial-on-Linux thing. Since he wasn’t sure if he was missing something, he forwarded the code review to two very senior engineers (one level below Distinguished Engineer). They weren’t sure and forwarded it on to the CTO, who said that he didn’t see a simpler way to accomplish the same thing in our OS with the APIs as they currently are.
Later, my friend had a heated discussion with someone on the OS team, who maintained that the documentation on how to do this was very clear, and that it couldn’t be clearer, nor could the API be any easier. This is despite this being so hard to do that boost has been wrong for seven years, and that two very senior engineers didn’t feel confident enough to review the code and passed it up to a CTO.
Another curious thing is how easy it is to see that things don’t have to be this way from the outside. A while back, I did a round of interviews at other local companies, and they all explicitly disavowed absorbing corporate culture from the company I’m describing, not like company X across the street which is all screwed up by having hired too many employees from this company.
I’m going to stop here. I’ve been writing down big company stories and saving them, but a mere half a year of big company stories is longer than my blog. Not just longer than this post or any individual post, but longer than everything else on my blog combined, which is a bit over 100k words. Typical estimates for words per page vary between 250 and 1000, putting my rate of surreal experiences at somewhere between 100 and 400 pages every six months. I’m not sure this rate is inherently different from the rate you’d get at startups, but there’s a different flavor to the stories and you should have an idea of the flavor by this point.[return]