In 2018, I wrote Career advice for recent Computer Science graduates about joining a big company instead of a startup after college.
In 2019, when I left NVIDIA, I wrote Lessons learned after my first full-time job about leaving a big company for a startup.
Now that I’ve left my first full-time job at a startup, I want to revisit the topic. This is based on some personal experience, but most come from friends’ experiences, including the intensive note on startups from a friend who had worked at 3 startups before and who would like to remain anonymous. I hope that it’ll give some pointers to those trying to decide whether to take the leap.
Some asked if this post is about Snorkel. It’s not. Snorkel is an exception. It’s a great startup, which is a reason why I joined in the first place, and I recommend it to all my friends who are looking to join a startup.
- Each of the points below is true for many startups, but not for all startups, and it’s more true for early-stage startups (e.g. before series B). There are always exceptions, extreme exceptions, unreasonable exceptions, which make the startup world so exciting.
- A friend told me that these points are only true for bad startups. Most startups are, unfortunately, bad startups.
Table of contents
…. 7 reasons not to join a startup
…….. Reason 1. Goodbye work-life balance
…….. Reason 2. You’ll pick up bad engineering practices
…….. Reason 3. Less mentorship
…….. Reason 4. You won’t get rich
…….. Reason 5. Bad management
…….. Reason 6. You might have to do a lot of things you don’t want to do
…….. Reason 7. No clear career growth trajectory
…. One reason to join a startup
…. What’s next for me?
7 reasons not to join a startup
Reason 1. Goodbye work-life balance
A friend at a tech giant told me that he and his co-workers once mused about how long they could go on not working until someone noticed. The answers were between a week and two months. At an early-stage startup, the answer is likely a couple of hours.
My transition from NVIDIA to Snorkel was a culture shock. At NVIDIA, you can have a predictable schedule, e.g. coming in at 9am and leaving at 6pm every day. If you don’t finish something by Friday afternoon, just push the deadline to next week and go to happy hour. It’s okay, even expected, to not check emails or Slack for the entire weekend.
On my first day at Snorkel, when I left at 7pm, I was the first one to leave.
Nobody told me how to spend my time, but when everyone else worked over the weekend and responded to my Slack messages any time of the night, I wanted to do the same. Nobody forced me to take on a hefty task that would require me to cancel plans with friends, but I also knew that everybody else had their hands full and if I didn’t do it, we wouldn’t be able to finish this feature on time and the company would lose a contract or even die.
By the time that I left, the work-life balance had got a lot more balanced. Snorkel had hired a ton more people to share the workload and we had worked out processes to speed things up.
In general, I’ve observed that the bigger the startup, the better the work-life balance. Possible explanations:
- The earlier the startup, the more precarious its survival, and the harder everyone has to push.
- In very early-stage startups, the working culture is dominated by those with high ownership in the company (the founding team), who are incentivized to work harder. Later on, the working culture is dominated by people with much lower ownership in the company (e.g. 0.1% over 4 years for the 20th engineer vs. 20% for the founder), who are more incentivized to keep a work-life balance.
Caveat: The work-life balance at an early-stage startup depends a lot on how much the existing team members work. When interviewing at a startup, don’t ask the founders how much they value work-life balance (they’ll say “A lot”), but ask every team member you can talk to how much they work. If all of them work during evenings and weekends, you might likely feel pressured to do the same.
Reason 2. You’ll pick up bad engineering practices
Consider the following scenario. A customer requires a new feature and you have to deliver it in a week. This feature is similar to one of your existing features, so the best solution is to refactor the existing code to allow some of it to be reused.
However, refactoring alone would require a week. Your tech lead decides that you should just duplicate the existing code and turn it into a new feature. Now you have two massive code structures that are similar but not quite. When making changes to one structure, you have to remember to change the other too.
Then, somebody forgets and a wild bug appears. The person assigned to fix it isn’t given a lot of time, so instead of investigating the duplicate code, they write a hacky function on top.
Startups build 1 from 0, something from nothing. Adding new things fast takes precedence over both adding good things slow and fixing existing things. You might get used to writing quick and dirty code, cargo cult programming, merging code that has no tests, merging before tests complete, committing without comments, spaghetti code, magic numbers.
Bad practices might be a mere dissatisfaction at first, but can gradually become a habit, then become the only way you know how to work.
Reason 3. Less mentorship
The thing I missed the most when leaving NVIDIA was mentorship. Large companies, by virtue of having a lot of employees, tend to have many people whose diverse life experience can provide you invaluable advice. At NVIDIA, I could come to my mentors for questions from general career dilemmas to obscure engineering knowledge. Once in a while, I browsed the org chart of tens of thousands of employees, identified people I want to learn from, and asked them to meet at the coffee machine, which they usually accepted.
Startups don’t have that many people for you to reach out to in the first place. Your handful of coworkers might have backgrounds and experiences similar to yours (cue founders who say they prefer hiring from their existing networks) and are unlikely to give you dramatically different perspectives. Even if there are people who could mentor you, given the pace at which startups move, they might not have the time for it.
To be clear, you can still learn a lot from your coworkers at startups, just a different kind of learning.
Reason 4. You won’t get rich
Despite a plethora of articles warning people that joining startups is a bad way to get rich (1, 2, 3), many people still think joining a startup is a get-rich-quick scheme. Here’s the gist of the math. Imagine you’re an engineer with 2-3 years of experience.
If you join a startup as the 15th engineer (not executive), your compensation might look like the following.
- Base salary: Your base salary is usually lower than you would have got at a big company (e.g. $120K instead of $160K) because at startups, equity makes a large chunk of your compensation.
- Equity: You might get 0.05% - 0.25% equity vested over 4 years. After subsequent fundraising rounds, this amount of equity is diluted to 0.02% - 0.1% for 4 years.
|Startup scenario||Startup value||Your equity value
over 4 year
|Your yearly comp
(base + equity)
|5%||IPO||$1 billion||$200K - 1M||$170K - 270K|
|0.5%||IPO||$10 billion||$2M - 10M||$620K - 2.62M|
|0.05%||IPO||$100 billion||$20M - 100M||$5M - 25M|
|14.45%||Acquired||$$$||$0 - 8M||$120K - 2.12M|
If you join late at the startup (say employee number 100+), even if the company succeeds wildly, your equity will be worth very little.
If you want to get rich, join a big company and climb their rank. You can find the detailed analysis of compensations for 19,000 FAAAM-dominated tech workers here, but below is a plausible, even conservative, scenario if you join a company like Google with 2-3 years of experience.
- 1st year, L4 $250K/year.
- 2nd year, L4, $280K/year.
- 3rd year, L4, $320K/year.
- 4th year, L5, $360K/year.
After the first 4 years at Google, you’ve already made over $1 million, not counting “perks” like work-life balance.
Reason 5. Bad management
There’s a trend among startups to not fixate on titles until they have to. Some avoid “manager” to not endanger the “everyone is equal” mindset (protip: everyone isn’t equal at startups – some have much more equity than others). In the early stage of a startup (e.g. before the 20th employee), there might not be anyone with “manager” in their title. If you join during that phase, you’re expected to get things done with little to no guidance.
Even if your startup has managers, they are likely bad managers. A startup’s first managers are likely its founding team who might have little to no real-world working experience, let alone managerial experience (e.g. recent dropouts, recent graduates). It doesn’t mean that people without working experience can’t be good managers (I know a few), it’s just more rare.
Bad management can manifest in the lack of feedback. At startups, you might get a lot of work-specific feedback – demos, design docs, even code (though it might not be good feedback) – because people at startups are generally more invested in the company. However, you won’t get much you-specific feedback that can help you grow such as what skills you’re lacking or what you need to do to get to the level you want to get to.
Even if there are processes in place for feedback, everyone might be too caught up in sprinting to think about you, what you want, or what opportunities they can give you to grow.
Bad management can be especially frustrating during conflicts, which will inevitably arise when you work in a high-stress environment (e.g. you’re all trying to push a feature at 11pm on a Saturday, everyone is tired and snappy). When something bothers you, you might feel like there’s no one you can talk to because you either don’t trust your manager or don’t trust that they are capable of resolving it.
Bad management is frequently the cause of conflicts. Bad managers might make you feel like they don’t listen to you, don’t value you, don’t treat you fairly, or just don’t have your interest at heart.
Reason 6. You might have to do a lot of things you don’t want to do
Big companies can afford to hire specialists – people specialize in a very narrow field. Startups want generalists – people who can do multiple things. The upside of being a generalist is that you get exposed to many different aspects of a company. The downside is that you have to do a lot of things you don’t want to do.
There are things that you don’t want to do because it contradicts your sense of morality. A friend of mine left a startup because she couldn’t lie about the company’s product any longer. Many companies pursue the “fake it until you make it” strategy, painting their product as the product they want to have, not the product they already have. The line between hustling and lying to people is thinner than you think, and you’ll find yourself walking it for the sake of the company’s success.
Disclaimer: Just want to reiterate that this post isn’t about Snorkel. Snorkel has a great product and I’ve been very impressed at how fast the team has been able to build out the platform.
Reason 7. No clear career growth trajectory
Big tech companies tend to have a structured way of defining career growth. Engineers can even climb numeric ranks such as L3, L4, L5, etc. Each level often comes with (technically) well-defined responsibilities and requires a set of skills that can be achieved through an approximate number of years. This structure guides you in growing in your role.
Early startups have no such structure. If you join as a software engineer, nobody tells you what you need to do to become a senior software engineer, and frankly, nobody cares. You might be doing a lot of ad-hoc projects that teach you different engineering aspects, but don’t allow you to become really good at any of them. After three years, your friend at Google might become a superstar engineer that is really good at distributed engineering, and you might still be an engineer who’s average at everything.
Assuming leadership roles at startups is also different from assuming leadership roles at big companies. At big companies, after a certain level, you have the option to remain an individual contributor (IC) or become a manager (for Google, it’s usually L5 or L6).
At startups, it’s based on what the company needs right now. When leadership opportunities open up, they are usually filled by members hand-picked by the founding team. To be hand-picked, you’ll have to put yourself in a position to be seen by the founding team, which requires a lot of self-advocacy if you didn’t already know the founding team in advance (e.g. went to school with them).
This can actually be a reason why you should join a startup – you’ll learn to stick out for yourself. If you know what you want and are proactive about it, you might even be able to assume a leadership role after a very short period of time. Joining a startup can also be a much faster way to climb big co’s ladders. For example, after 3 years at a startup, you became a team lead of 15 engineers, and might be able to join Google at L5/6 instead of L4.
One reason to join a startup
There are many reasons not to join a startup. You just need one good reason to join. The reason is that it’s all worth it. I once read somewhere that joining startups is the only way to get 15 years of experience in 5 years. I couldn’t agree more.
I learned so much during my time at Snorkel, across different disciplines, from engineering to hiring to sales and marketing. I learned how to structure a codebase, automate tests, develop the hiring pipeline, even use fancy terms during go-to-market meetings. I was exposed to so many problems I wouldn’t have been exposed to no matter how much time I spend at big companies.
I learned a lot more about the MLOps space because when working at a startup, you just have to keep an eye out for potential competitors/customers/partners. I also became better at evaluating startups in the space.
You might get frustrated at a startup, but this frustration will make you realize what you want and what you don’t want in your career. You might not get rich at a startup, but all the skills you learn there might help you get rich in the future.
If I had to go back in time, knowing what I know now, I’d still choose to join a startup.
I've been at this startup for less than a month and I've been exposed to so many problems I didn't even know existed. I'm of the increasing belief that everyone should try a startup early in their career, e.g. within the first 3 years/before settling into complacency.— Chip Huyen (@chipro) January 13, 2020
If you consider joining a startup, my only advice is always choose the people. Don’t join for money. Don’t join for titles. Join because of the great people you want to work with. Most startups eventually fail. Most great people eventually succeed.
And if you still consider joining a startup, you should definitely check Snorkel out!
What’s next for me?
When I was interviewing at Snorkel, I told Alex Ratner (the CEO and a great person to talk to), that a reason I wanted to join an early-stage startup is to learn how to build a company. Alex told me that whenever I decided to leave to start my own company, the company would support it. I’m grateful to Alex, Henry, Devang, and the rest of the company for having been incredibly understanding and supportive of my next step.
So yes, I’m building something that I hope I can share with you soon.
In the meantime, I want to devote a lot of my time to learning. I’m hoping to find a group of people with similar interests and learn together. Here are some of the topics that I want to learn:
- How to bring machine learning to browsers
- Online predictions and online learning for machine learning
- MLOps in general
If you want to learn any of the above topics, join our Discord chat. We’ll be sharing learning resources and strategies. We might even host learning sessions and discussions if there’s interest. Serious learners only!
This post was inspired by intensive personal notes on startups written by a friend, who would like to stay anonymous.