|
Is there a better signal than high-pay for choosing a technical internship? Looking at Alexey's list, with the exception of hedge funds, Google, Facebook, Twitter, Dropbox would be my top choices for where to do a technical internship, and they're also the highest paying. I suspect this is because a good engineering culture leads to engineers that cost more and get better equipment which eventually filters down to interns. (Obviously, there are exceptions, though.) More broadly, is interning at a startup a good place to learn technical skills (rather than marketing, networking, funding, etc.)? Most of the information on running common web stacks, for example (nginx, rails, django, node.js, varnish, postgres, mysql, redis, etc.), is either freely available on the web or even can be bought as a service (heroku, app engine, aws). By contrast, the only way to find out how engineers have solved problems (web serving, analytics, etc.) at truly huge scale (e.g., 10+% of the human population) is to actually see the solutions at a big company (though sometimes companies will publish details of 3+ year old infrastructure). Big companies also tend to have stricter code review cultures, while small companies tend to just need code written now. All of this seems to point to learning significantly more at a (technically excellent) big company, even though the "output" of the intern might appear to be less. In fact, doing a startup seems like it might be more like resume stuffing than working at Google or Facebook these days. Working at a small startup, you get to talk about your impact, how you built a mission critical piece of infrastructure, whereas at a big company you're probably only trusted to write some small features that are not in the critical path of full time engineers. What's more, you get to say that you worked at a startup, which everyone pretty much respects around California, even if the startup dies or wasn't very technically interesting. But the potential for learning quality engineering through code review and understanding the existing infrastructure seems a lot higher at the big company. |
I've looked around at a bunch of internship and the most technically interesting ones have all been at startups. Now, I have to admit that the majority of startup internships I've seen have been in the bland web-based software category. And, perhaps, larger companies have more technically challenging internships on average.
However, average is not what you should be interested in. And the exceptional startups I've seen are more exceptional than what you would do at a bigger company. This makes sense--there are more startups, they are more varied and less conservative than bigger companies and they cover more niches, so the variance in technical difficulty is going to be greater. Bigger companies also have more friction: existing processes, gigantic code bases, very specific requirements, large investments in existing tools...
Also, it's much easier to find startups in your particular field of interest. I've talked to companies doing interesting work in machine learning, bioinformatics, robotics and even type systems (I haven't seen any interesting work with type systems at big companies at all). And these are just things that happen to interest me in particular: there are probably interesting startups in whatever field happens to interest you as well.
So I think startups are actually rather good for doing something cool and novel, especially if it's something off the beaten path. You just have to find the particular awesome startup that interests you rather than joining another web/mobile-based company.
Now, there are some advantages to seeing how a bigger company operates as well. Understanding how to organize hundreds of programmers, maintain gigantic code-bases, use significant resources efficiently and survive in a larger corporate setting are all very important.
Spending at least one summer at a bigger company would be is useful if only for these, just like spending time at even a technically boring startup is great for the non-technical reasons you listed. But for learning technical skills, especially more specialized and advanced ones, I think a startup (but not just any startup) is a great choice.