A lot of software engineers coming out of college will need to make an important decision right out of the gate: Should you take that high paying FAANG job or go to that hip looking startup to change the world?
My advice? Skip the startup.
Startups have been glamorized in the tech culture and media with shows like Silicon Valley. They’ve become some kind of fantasy: Move to Silicon Valley, join a team that can fit at a single table, build a widget and grow to millions of customers. Then sell the company and make millions. After working at a startup and interacting with dozens more, the reality is that startups have very little upside and will likely not push your career forward as much as you think.
I’ll start by saying I really enjoyed my time at a startup. And by enjoyed, I mean I had a lot of fun. It was work hard, play hard. Weekly happy hours, free food all day long, ping-pong tournaments, poker nights, and even field trips. At times, it felt more like a summer camp than work. I made a lot of great friends and good memories. But the problem with summer camp is that eventually winter comes and it’s not so fun any more. And maybe having fun isn’t the most important thing to look for in a company.
Here’s a few reasons why I think you should skip the startup. I realize this is based on my own experience, but I’ve also discussed these reasons extensively with other startup friends who agree with most of it. These reasons are not specific to one startup, but rather trends I’ve seen across the industry.
Optimize for Learning
Early in your career, the most important thing you should optimize for is learning.
Coming out of college, you have a major skills gap that needs to be closed. You have a lot of book knowledge, and not a lot of experience. If you want to become a valuable engineer, you need to learn to build real products that provide actual value to other people. The only way to do that is through experience. And the best way to get that experience is to go to the place where you can learn the quickest.
College teaches you almost nothing about the real world. You learned theories and did homework problems. Nothing wrong with that, but there’s a huge gap between writing a program to simulate bank accounts and deploying a payments system that millions of people use to transfer real money day to day.
College doesn’t teach you to scale systems, or to jump into a legacy codebase, or to keep a system up 24/7. Some don’t even teach version control. These are all critical skills that most graduates will lack on day one. These are skills that you will need to grow into a valuable engineer. You should go to the place that will teach you these skills as quickly as possible.
Most startups are simply not optimized for learning. This is contrary to most of what I was told before joining a startup. The pitch was that startups are the perfect place to learn because they force you to build something from scratch and challenge you to quickly launch products.
It’s the approach that learning to swim is easiest when you get thrown in the deep end. But how many of us actually do this? How many of us would throw our kid in the deep end of the pool for the first time and expect them to pop up swimming? More likely, your kid would be drowning, and looking for help.
This is often the case with startups as well. Given a big problem, a lot of young techies won’t know where to start. It will overwhelm them, and they’ll spend weeks working on the wrong things, slowly discovering what doesn’t work.
Generally, it’s easier to learn by working on a successful system and then building your own vs blindly trying to bootstrap something. So much of startup life seems to be reinventing the wheel because engineers didn’t know about best practices. This leads to the next problem…
Lack of Mentors
This is related to the last point, but I think it deserves it’s own section. Startups seem to be in short supply of experienced engineers. For whatever reason, startups are heavily skewed towards young, inexperienced people. Is it because young people are attracted to startups? Or because startups create an environment tailored to young people and seek them out? Probably some of both.
Anyway, this means you have a large group of young engineering ready to learn…and no one to teach them. Ideas are decided by consensus, which quickly devolves into group think. Bad habits are developed and nobody knows any differently. Mistakes are common, costly, and lead to constant fire drills. But engineers believe these are normal in a startup and can’t imagine that engineering processes may be to blame.
The senior engineers that wade into startup land don’t tend to stay long. I remember several senior engineers that we hired were so shocked at how sloppy the engineering culture was, they decided to leave a few weeks later, apparently thinking it was too far gone to change. The few senior engineers that do decide to stick it out are often so busy trying to build out difficult features, they don’t have time to mentor and teach others.
Career Growth
Career growth is something most graduates don’t even think about when joining a startup. They are just excited to have a job that’s going to change the world. But a year or so into their startup career, they discover startups don’t know what a career is. The conversation goes something like this:
Hey, can I have a promotion?
Yeah we can talk about it
Six months later. Ok, how about now?
Ok, sure, you are promoted! Just add a senior to your title.
Great, what kind of raise do I get?
Oh, you want a raise?
Startups don’t like talking about money. Asking for more money suggests that you aren’t committed to the mission any longer. Oh, you’re just here for the money? No, but I do need to eat you see.
They usually don’t have any notion of levels or a defined promotion process. Startups are so busy focusing on their product, they don’t put much effort into HR activities. Many will outsource that sort of thing. Turns out, investors don’t care so much about whether you have a promotion process in place.
This might be attractive to some people who are sick of the corporate structure of performance reviews and promotion politics. I can certainly understand the appeal of leaving that behind. The problem is that the results are usually even worse. With a difficult, stressful promotion system, you might not be promoted. Without, you definitely won’t get promoted.Without a promotion process, promotions don’t happen.
Here’s the other problem. You join a startup, and you are doing everything you can to learn more, take on bigger projects, and have more impact. Problem is, you might be growing faster than the startup is. That means you might be ready for a role that the startup doesn’t need. You were hired to build widgets, and now you are ready to build data pipelines, but the company just needs widgets. You become stuck in your role waiting for bigger opportunities that may never come.
Speed over Everything Else
Startups are all about speed. Get something released yesterday. Some of this is the nature of the beast – releasing something first can be an advantage. But many times speed is just a symptom of chaos. The root causes are things like poor planning, overcommitment to customers, rapidly changing business priorities, unrealistic expectations, etc. All of these are standard procedures for startups.
So, under pressure, teams rush to implement whatever is quickest, throwing out best practices and deploying shoddy architecture with bug-filled code. Gradually, tech debt accumulates over time until the team is spending more time fixing bugs than shipping new features. At some point, the team decides the code is in such bad shape that it needs rebuilt from the ground up.
Ancillary activities like testing, documentation, and developer tools are weak if they exist at all. Most of the team relies on tribal knowledge that is easy to lose when turnover happens. It’s like every decision is made assuming the company will go bust in the next 2 weeks. In many cases, slowing down with some planning and careful decision making would have saved time and resources even in the short term.
It’s not just irritating to always be rushing around, it’s a barrier to growth. It teaches you to make short sighted decisions, always thinking about tomorrow and not next month. It encourages tech debt and “kicking the can down the road” on important activities that invariably will never get done. It also means you won’t get much experience working on long term projects. These can be especially rewarding as you learn the full cycle of engineering, to include operations and maintenance. It forces you to think carefully about the impacts of your decisions and document your design in detail for later on.
Lower Compensation
I left this one for last because I think it is the least important reason. As I said before, early on in your career, I think you should optimize for learning above all else. If this means taking a lower paying job so you can learn valuable skills, I absolutely would do it. Taking a high paying job that will not give you learning opportunities is actually a dangerous position. When you start to fall behind your peers a few years down the road, you will not have the skills you need and will have difficulty finding another job. You will have wasted valuable time and inertia that is hard to make up. Early on, investing in learning has a far greater return than investing money. Think about that. You will become more valuable by the skills you’ve refined, not by the extra cash up front. Choose the place by learning potential.
So, if startups really gave an exponential learning boost at the cost of some compensation, I would say go there. But you don’t necessarily need to choose between comp and learning opportunities. I think in general Big Tech can offer both, and startups might offer neither.
It’s also hard to ignore just how big the difference in comp might be between a startup and Big Tech. Most startups are going to give you stock options. There’s a ton of articles online on how they work and what you do with them, but here’s the TL:DR:
- It’s extremely difficult to tell what your options are worth now, and what they might be worth in the future. Which leads to…
- It’s difficult to know what your actual compensation is and how to negotiate. Which leads to…
- You probably aren’t actually getting that many options.
- It’s nearly impossible to sell your options except if you get acquired or IPO.
- You often have to exercise (or put up money to buy them) before you know when/if you can sell them. So yes, stock options might *cost* you money.
Compare this to public companies where you can look up the exact value of the stock and sell instantly on the open market. In short, don’t include startup stock options in your compensation comparison with Big Tech. Suddenly, you might be giving up 6 digits by going the startup route. Tough to swallow.
So you just don’t like startups?
It may seem like I”m anti-startup, but this is not the case. There are a lot of startups working on important problems and many of them are in better positions to solve them than Big Tech. I happily cheer on startups to be successful if I like their mission. I just don’t think that startups are the best fit for young engineers.
Experienced engineers have an enormous advantage at startups. Their experience means they can come in on day one already familiar with different technologies and designs and deeply understand the tradeoffs with each. They will spend less time trying things out for the first time and will have a good idea of how to approach problems. They will also have better estimation for the amount of work something will take and how to prioritize. In short, they are battle-tested and ready to step out on their own.
From a startup perspective, a senior engineer can easily be 10x as productive as a new engineer. Given that they won’t cost 10x as much, this seems like a great tradeoff for a cash-strapped business. Big Tech can afford to take new grads and invest in them over many years. Startups don’t have that luxury. They need top talent from the beginning. Plus, fewer engineers at a higher tier will also yield some collaboration benefits.
For younger engineers, I think it’s best to start out in Big Tech. Now, obviously these reasons I’ve laid out are broad and don’t apply to every startup. There certainly are some gems out there. And larger companies also have their downsides. But given the trade-offs, I’d start larger, and move smaller later on in my career.