If you're a computer science student graduating in 2014, you have no shortage of options. Big companies like Facebook, Google, and Twitter are gobbling up smart engineers by the thousands, it's easier than ever to start a company, and there are 1000+ startups in the Bay Area alone.
When I graduated, almost nobody from my class joined startups, or, if they did, they joined as employee 50+. These days, it's the opposite: many of the best students want to join startups, and many join as employee 10 or earlier.
But how do you find the right startup? Picking a startup requires solving two hard problems: judging the startup itself, and judging whether you'd be happy. The first is what professional investors do, and most of them lose money. As for the second, people are notoriously bad at predicting their own happiness; they think status, or money, or a promotion will make them happy, but then they get it and they're miserable.
You can't solve either problem with 100% certainty. Startups are risky, after all. But what follows are some techniques for finding startups to join and questions to ask to gauge both the startup and your own happiness.
When I was graduating, most students wanted to get a PhD or join a big company like Google, and startups were considered almost like a backup plan. I didn't even interview at a company of fewer than 70 people.
I wish I had. Defaults often blind us to different alternatives. And as I met people from different schools, I found defaults varied widely. At MIT and Stanford, most of the top students want to work at startups, and some don't even bother applying to big companies. At other schools, it's the reverse.
Why the difference? No reason at all. People just mimic what they saw the previous graduating class do. Do what you want to do, and ignore defaults.
Breakout hit or infant?
There are two types of startups worth considering. One is a breakout hit—a company like Pinterest, Square, or Stripe which has hit product/market fit and is growing incredibly quickly. A breakout hit will teach you how to scale a successful product and team: what breaks when you go from 30 to 300 people? How do you re-architect your system to handle millions of users? Breakout hits often become magnets for brilliant engineers (e.g., Dropbox hiring the creator of Python), and since they're growing quickly, opportunities come easily.
The other is an infant: a startup founded recently (<3 years), small (<20 people), and in the midst of a vigorous search for product/market fit. At an infant, you're figuring out how to create a successful product from nothing. You're going to work directly with the founders and get exposed to details about fundraising, pricing, sales, marketing, and more. If you want to start a startup one day, this kind of startup will teach you things you can't learn anywhere else.
The middle ground—say, a startup was founded four years ago but isn't a breakout hit—is generally a bad deal, although there are always exceptions.
Where to find great startups
Finding great startups is still a messy process, but it's getting easier. The best place to find great startups is to ask friends or TAs who joined or founded startups the previous year for recommendations. Most of the best opportunities aren't advertised.
If you don't know many people in startups already, then I'd recommend starting with AngelList talent, which lets you filter down startups down by location, size, industry, and more. Hacker News' jobs page, which consists only of YC-backed companies, is also a good starting point. Some colleges like UC Berkeley or University of Washington are starting to have dedicated startup career fairs.
Even if a startup isn't advertising college jobs, don't be afraid to just send them a resume or GitHub link. The only rule with startups is that there are no rules, so take the initiative.
Practicing for the interview
Many startups use a variant of standard coding interviews. I'd recommend buying Programmming Interviews Exposed or Cracking the Coding Interview and spending a few days doing practice exercises. Like the SATs, test preparation hits diminishing returns rapidly, but a little focused study can still buy you a few notches of improvement.
More and more startups are starting to do pair programming, where you sit at a computer and actually code something. Pair programming takes some getting used to; it’s worth trying it for a class project so that you’re not flustered in the interview.
Psychologists have found that the happiest people focus on just a few things: a strong sense of purpose, mastery of a skill or field, autonomy, and positive relationships. These next few sections are organized around those themes.
Idea and purpose
Predicting whether an infant startup will succeed is notoriously difficult. Most professional VCs lose money and they're supposed to be experts at picking winners. If you can’t pick winners, what can you pick? A startup with a purpose worth fighting for.
In other words, if the startup succeeds wildly, what happens? Did we cure unemployment? Did sweatshops come to an end? Was evil on the internet vanquished? Make sure it's a purpose that you can imagine yourself growing passionate about. I say "you can imagine" because, like love, passion for an idea grows with time. At my first job, I was assigned to work on ads and I remember the feeling of disappointment. I hate ads. But over time I grew to love it as I saw that we were doing good for small businesses.
A more quantitative way to look at "who cares" is market size: what's the maximum revenue the startup could achieve, if it had 100% market share? (This isn't perfect, e.g., non-profits can have high impact with no revenue, but it works for most businesses.) You want a plausible calculation that that number will be in the billions. Don’t settle for a niche.
People are routinely under-ambitious. Little problems seem so tractable and big problems just seem impossible. But in reality, building a company is hard regardless of problem size, and problems that seem impossible often turn out to be merely difficult, so frighteningly ambitious startup ideas ideas tend to be under-valued. Don’t sell yourself short.
Still worried about success? Here's one small trick: look for top tier investors. The top quarter or so of investors make all of the money in venture capital, and they do so by picking winners. A startup that receives backing from them has a significantly better-than-random chance of being successful.
Who will you be in 5 years? Learning and mastery
You become the people you spend time with. So choose carefully. You're going to spend more time with your co-workers than just about anybody else, even your significant other or spouse! So think about who you want to be five years from now. What skills will you need to master now?
If you don't know, that's ok — I didn't know in college. My general advice is to learn something that's very hard and growing quickly. Today, machine learning, mobile, distributed systems, and computational genomics are good examples of fields that are hard and growing. But I wouldn't recommend trying to become e.g., a Rails programmer. Learning Rails is useful, but if you let that be the skill that defines you, you'll get lost in a sea of other people. Learn something hard and not only will the work itself be more rewarding, it'll open doors to opportunities you couldn't get otherwise.
Look for people on the team who are world-class experts in skills you'd like to master. For engineering teams, that generally means joining an all-star group of engineers. Did they work for highly-selective companies? Author important open-source projects? Do they have PhDs or publications in the field? Also look for good development practices, like code reviews and unit tests. If you're tempted to compromise, even a little bit, on the quality of the team—don't. Here's a heuristic to keep yourself honest: if you were competing with a somebody for a job, would you be scared? If so, you want them as a co-worker.
What if you want to start a startup one day? Should you find a startup with the very best business team? Paradoxically, no. You're best off joining a small startup with few or no business people, since in those companies, engineers will be called upon to fill in the gaps. If you take initiative, you can take on more responsibility and learn business by doing it.
Provided you have initiative, most startups offer tons of autonomy. But it's worth asking questions: how does the company decide which projects or tasks to work on (top-down, or does the team participate)? Are there sub-teams that set their own goals? Do junior engineers design components or implement others' designs? Is the organization "flat" or is there a high ratio of managers to doers? In particular, be careful about startups with a lot of PMs or non-technical founders. It tends to lead to a culture where engineers make fewer decisions about the product.
People, culture, and relationships
Beyond finding people who can teach you, you should find people you like. You're going to spend a lot of time together and personal chemistry is important. Try to gauge whether people are happy at the company, and mostly ignore what they say and instead focus on how they say—tone of voice, body language, whether they joke around, etc.
Companies usually include lunch as part of the interview day, but everybody is on their "best behavior." If you get an offer, try to see if there's a way to talk with some of your co-workers (ideally not the founders—founders are often good salespeople) in an informal setting, e.g., coffee or drinks, to gauge personal fit. Use the airport test: if you saw one of your potential teammates at an airport, would you run over to talk with them? Or would you try to avoid them?
Worry about integrity, especially of the founders. You don't want to work with people who will screw you, and unfortunately there are sharks in the startup community. Evaluating integrity of somebody you met recently is very difficult. Ignore what they say and focus on what they do. People who screw others tend to have a zero-sum view of the world, so look at the equity package—did they offer you the absolute minimum they think you'd accept, or is it above-average and generous? Are they transparent? Does the team include people who have worked with them before? Con men don't get repeat business.
Also, think about your personal life. In college, making friends comes easily; in the adult world, making friends takes effort. One real disadvantage of working for an infant startup is that you meet fewer people. So if you're going to join an infant startup, make sure you have something in place to compensate: a lot of classmates who are moving to the same city or friends from previous internships. It sounds trivial but relationships affect your happiness a lot.
Negotiating the offer
Most engineers are reluctant to negotiate. In 2013, engineers are rare and precious, and that gives you more leverage in negotiation. Don't abuse it, but don't be afraid to get a fair offer for yourself.
For infant companies, equity grants vary wildly. I've heard anywhere from 0.1% to 5%. And if you're joining as the 5th (or 10th, or 15th, …) engineer, nothing is standardized, and the company probably wants you badly. So it pays—literally—to politely ask for more. One caveat: if the company radically improves its offer (e.g., doubles it), that's a bad sign. Either the company was low-balling you (in which case, can you trust them?) or they're offering you a lot more than other employees are making (in which case… can you trust them?). Negotiations are prologue to the company's behavior later on.
If you're joining a breakout hit, there are probably standardized offers, but you should still negotiate. In Silicon Valley, top companies pay new college graduates roughly 100k-120k in salary and 200-300k in stock over four years. If you negotiate, you can often (not always) get 20-50% more stock options.
It's easy to overdo it; I generally wouldn't do more than one round of negotiation, maybe a second.
This almost goes without saying, but all startups should include health care as part of their offer.
Try before you buy
If you're a freshmen or sophomore, try to do internships at companies in different stages: infant (<20 people), breakout hit, or big company. You'll learn a lot about your own preferences. If you're a senior and you haven't interned at a startup, one option is to work at a startup part time in your senior year. Most startups don't advertise part time jobs, but are glad to have the help if offered.
Making the final decision
Startups can be an exciting way to start your career, and worth the extra time spent. When evaluating an offer, it's easy to focus on peripheral aspects, like a high salary, benefits, or media hype. But remember that happiness isn't money, benefits, or hype. Focus on the core: a purpose you care about, mastery of a challenging field, autonomy in your day-to-day work, and building productive relationships with your peers. Those are the only things that matter.
When it comes down to the final decision, it’s easy to overanalyze and fret. Research shows that for complex decisions with many variables, your unconscious mind makes better decisions. So let it work. Think hard, soak in all the information, but in the end, go with your heart.
Thanks to David Hu and Akihiro Matsukawa for reading drafts of this post.