Skip to main content

Startup vs. Big Company: What's "Freedom"?

I was talking with a talented young PhD student today about his career ambitions, and the conversation turned to whether it would be better to do a startup after finishing school rather than joining a big company, like Google, to get some "real world" experience first. I asked him what was so appealing about doing a startup, and he said that it would mean having tremendous freedom to choose what to work on and how you pursue problems. That is true, in a sense, but I question how much "freedom" you really have when starting a new company. Doing a startup is also highly constraining, there are real advantages to being at a larger company where you have more resources and a broader set of problems you can work on.

(Caveat emptor: Note that the last time I tried to talk someone out of doing a startup, it was Mark Zuckerberg, and we all know how that turned out -- so perhaps this post should be taken with a grain of salt.)

It seems to me that many startups these days are working on low-hanging-fruit problems: Things that a few guys in a garage can put together with EC2, Ruby on Rails, and XCode. Yes, you can build amazing products this way, but you're not necessarily doing rocket science. There are limits to what one can build with a small team and limited resources, and this means that most startups are constrained in the set of problems they can reasonably tackle.

Also, startups tend to focus on problems that one can build a standalone business around, something that can be monetized or build value in some direct way, in order to make investors happy. For example, it would be difficult to do a startup around a new programming language, since it's not clear how you sell it, although it might form a component of a larger product.

My point is that not all interesting problems are good startup fodder. This is where larger companies come in. One of the reasons I personally like working at Google is because I can work on problems at a scale that most startups would never achieve. Running jobs on terabytes of data on many thousands of cores is routine. For me, this is where the really interesting problems lie: Not in designing another sepia-tone photo filter app, but in solving fundamental problems of computer science that only emerge at the scale and complexity that I can work on here.

Being at a larger company means I am "free" to work on unsexy problems -- problems a venture capitalist wouldn't touch with a ten foot pole. Network protocol optimization, performance measurement, and infrastructure building may not be everyone's idea of fun, but I really enjoy doing this kind of core systems work that can have huge impact over the long run.

This is not to say that all problems at Google are unsexy. I just tend to gravitate towards infrastructure and networking since that's my background. And damned if I can program JavaScript.

The other side of being at a large company is that you have the freedom to fail. Money is not about to run out in a few weeks, and you don't have to make deals you wish you hadn't in order to keep the cash flowing. You can take your time to try different things, get it wrong, and make big bets that don't pan out. It's unlikely you'll lose your job for doing so, and there are always more cool problems to tackle just around the corner.

On the flip side, doing a startup while you are young and untethered might be exactly the right career move. In some ways I wish I had not sat out the dot-com boom doing a PhD, but taken a risk to join PurpleYogi or one of the other dozen or so startups (including Google) that tried to recruit me back when I was 22, unmarried, childless, and already used to living in a small apartment and eating ramen noodles for dinner. Who knows, maybe I would have learned JavaScript after all.


  1. Great essay, as always. My view is that the type of work shouldn't be the determining factor in deciding startup vs. established company, though everything you said about that factor is true. I think people should go the startup route if they want exposure to entrepreneurship, non-technical stuff like sales and marketing and finance (yes that may sound dreadful, but a lot of people, even geeks, like to dabble in that stuff), and/or be able to experience a faster prototype/release cycle than at an established company. Then there is the question of impact -- at a company like Google, it is not hard to have impact, but compared to many other companies, even a semi-successful startup can have more impact. Just because something is built on simple technology (e.g. RoR/EC2) doesn't mean it can't have significant impact.

  2. Interesting post. I agree that most startups out there are quite uninteresting (to me anyway). I condescendingly call them ziggys, since they all end up sounding like Most web2.0 companies end up building stuff that I consider completely useless -- but that enough folks out there are somehow willing to pay for. The fact is, I can't see myself dedicated to those kinds of startups. That said, if the problem is big enough and interesting enough, and can be tackled in pieces, then a startup might not be a bad idea. One example might be energy efficiency (although that's another particularly difficult market to crack). But another thing to remember is that when you do a startup, you spend a considerable amount of time NOT hacking. You spend them in meetings to get funding, sell the product, arrange EVERYTHING -- from office space rental to buying equipment to flights to's very exhausting and most of the time doesn't feel like you're really getting anything done. Particularly if you really enjoy sitting down and hacking, like many of us do.

  3. Anon and Jorge: There are certainly pros and cons of the startup model. I think both of you have hit on the tradeoff of building a business versus building technology. These are not the same thing, and there are great opportunities in both career paths. Personally I prefer to build technology as I have very little interest in business - but I can see how raising money, building a brand, starting from scratch could be really exciting to a lot of people.

  4. Good points all, both in the main article and the comments!

    Its definitely worth reiterating that most startups are not terribly interesting, they're businesses with a web site. :-)

    That said, there are MANY small tech companies creating really fascinating businesses while doing some really wonderfully interesting tech building. (strictly speaking they are a small fraction of all "startups", but there are many all the same).

    Having spent a lot of time in recent memory talking with many of these technically interesting startups, I have to say its wonderfully exciting and rewarding to find out about all the cool problems that demand a blend of theory and engineering pragmatics that pop out of many many different interesting business endeavours.

    I should also admit that I fancy myself to be working on a startup in the latter category, with the intent of building tools /products initially targeting other companies in said space of having interesting technical challenges.


  5. I'm not opposed to the business side of things, actually. Although I enjoy hacking, learning new things (technical and non technical) can be quite fun and enjoyable. It can be difficult to balance the two in a startup and one definitely needs a certain level of excitement and energy to pursue a startup -- but you hit the nail on the head with respect to age. I think startups are better fit for either younger or older people. It's quite hard to start a family (i.e. have young children) and start a company, simultaneously. Although the perception is that most startup founders are young, the reality is they're not. Most are older, and actually older entrepreneurs tend to be most successful (up to 40 --

    It might be worth it for this student to spend some time at a larger company or two, maybe even try an established startup or two, and then go off and do his/her own thing. Then again, if they have a bright new idea that could take the world by storm (the next google/facebook/ms?)...well, then obviously doing the startup now would be the right move. The former is safer and increases their probability of success, but takes longer. The latter...well, as they say: Go big or go home.

  6. Great essay.

    "Being at a larger company means I am "free" to work on unsexy problems".

    I think it's the same for people that work in academia. Isn't it?

  7. Great blog post! I really love the part about "I just tend to gravitate towards infrastructure and networking since that's my background. And damned if I can program JavaScript." - there is nothing I could agree with more ;).

  8. Like jortiz and Carter said, nowadays there are two kinds of startups: the sort of thing that used to be called a startup in the 80's and 90's (there are still plenty of these), and the "throw ten kids in a room and have them make an iphone app" nonsense spewing out of places like y-combinator. These are as different from each other as either is from a place like Google.

    I just wish so many people (particularly outside the tech world) didn't associate the word "startup" with the latter kind -- or that we had a word to distinguish the former kind.

  9. In a large company like Google when do new-grad hires work on the really challenging problems and get responsibility? Isn't a new grad going to get lost in the ocean of projects and people and is essentially competing with people who have been optimizing a product for a decade? A smaller company or a start up sounds better as a newbie can grasp a good chunk of the landscape and build something, dont you think?

  10. Re: new grad: It depends on many factors, not least of which what project you land on. Someone coming in on a project that is fairly mature may not have as much opportunity for immediate impact, although that is true if you're at a startup or a large company. Coming in on a new project where you have a chance to shape the design from an early stage is a tremendous opportunity, as is if you come in on a mature project which is going through a major design revision.

    The other factor is this: At a startup you have to build a lot of infrastructure and machinery from scratch which a large company like Google has already figured out. For example, I don't need to think about the massive infrastructure we have for logging, data analysis, unit testing, continuous builds, production pushes, or performance monitoring - I get all of that for free, so I get to spend my time working on the interesting (to me) problems :-)

  11. How about: work in a large company once, but leave before it makes you too soft, work in a startup once but leave before it makes you too hard. Then make your pick?

  12. regarding technique perspective, it is absolutely better to work in a large company like Google. You can learn a lot from the peers, proved world-class code base, a lot of fun projects..etc

    But Startup can provides you sth big corporation can not. You need to do/learn everything, you may be lost, you may strive, there is never "cash burn" time for you, you may lost create a much tougher environment and you need to fight everywhere. That experience can quickly enhance your ability in different level.

  13. Matt:

    I've been reading your blog for long and I'm happy that for the first time in my life, I'm referred to as "a talented young PhD student", although I know I'm far from it :)

    Although at this point I'm still not sure which path to take as my future career after getting Ph.D., I understand the differences in different paths and the pros/cons better with your help. Life is like a journey, and a minor difference in choices now could result in significant differences in a few years or in longer term. I will try my best to give myself more choices for now.

    Thanks again for sharing the great thoughts in your blog, I enjoy reading them as always!


  14. Matt, may be one of the factor would be if that bigger company is like HP - which case it may be better to try promising start up that could become next Google or Akamai?


Post a Comment

Popular posts from this blog

Why I'm leaving Harvard

The word is out that I have decided to resign my tenured faculty job at Harvard to remain at Google. Obviously this will be a big change in my career, and one that I have spent a tremendous amount of time mulling over the last few months.

Rather than let rumors spread about the reasons for my move, I think I should be pretty direct in explaining my thinking here.

I should say first of all that I'm not leaving because of any problems with Harvard. On the contrary, I love Harvard, and will miss it a lot. The computer science faculty are absolutely top-notch, and the students are the best a professor could ever hope to work with. It is a fantastic environment, very supportive, and full of great people. They were crazy enough to give me tenure, and I feel no small pang of guilt for leaving now. I joined Harvard because it offered the opportunity to make a big impact on a great department at an important school, and I have no regrets about my decision to go there eight years ago. But m…

Rewriting a large production system in Go

My team at Google is wrapping up an effort to rewrite a large production system (almost) entirely in Go. I say "almost" because one component of the system -- a library for transcoding between image formats -- works perfectly well in C++, so we decided to leave it as-is. But the rest of the system is 100% Go, not just wrappers to existing modules in C++ or another language. It's been a fun experience and I thought I'd share some lessons learned.

Why rewrite?

The first question we must answer is why we considered a rewrite in the first place. When we started this project, we adopted an existing C++ based system, which had been developed over the course of a couple of years by two of our sister teams at Google. It's a good system and does its job remarkably well. However, it has been used in several different projects with vastly different goals, leading to a nontrivial accretion of cruft. Over time, it became apparent that for us to continue to innovate rapidly wo…

Running a software team at Google

I'm often asked what my job is like at Google since I left academia. I guess going from tenured professor to software engineer sounds like a big step down. Job titles aside, I'm much happier and more productive in my new role than I was in the 8 years at Harvard, though there are actually a lot of similarities between being a professor and running a software team.

I lead a team at Google's Seattle office which is responsible for a range of projects in the mobile web performance area (for more background on my team's work see my earlier blog post on the topic). One of our projects is the recently-announced data compression proxy support in Chrome Mobile. We also work on the PageSpeed suite of technologies, specifically focusing on mobile web optimization, as well as a bunch of other cool stuff that I can't talk about just yet.

My official job title is just "software engineer," which is the most common (and coveted) role at Google. (I say "coveted&quo…