Ask HN: Startup vs. big corp fresh out of college?

14 points by howon92 ↗ HN
I don't know if it has been asked on HN. I have been asking people around me (developers) whether I should start/join a startup fresh out of college or join a big company. The answers varied. What are your opinions?

To put more context: I have done an internship both at a startup and a big company. The pros and cons of them were in agreement with what people usually say. Startups are tougher and riskier but make you grow quicker, while big companies tend to be less interesting but guarantee a comfortable life. What would you choose if you were a senior in college who's about to begin your career?

17 comments

[ 4.4 ms ] story [ 52.8 ms ] thread
Why not split the difference, go for a mid to late stage startup? If you don’t really know the founding team of an early stage startup and don’t have experience, it’s tough to assess the risk regarding the team, the product, and the market. If they’re hiring you out of college, they may be looking for cheap labor. A mid to late stage startup likely has product and market solved, and is focused on growth. You will still have an impact, likely learn from top notch people, and see what success looks like. Then you can move smaller or bigger as you choose depending upon what you want.
Startup for a few reasons, with an assumption you aren't married with kids.

1. You will never have the freedom you have when you are young. Once you are more established with family, kids etc it is harder to take risks, not impossible just harder.

2. You will learn more good and bad in a year at a startup then 3-4 years at an Enterprise. You will be forced to grow and do things you didn't know you could do, but you can.

3. Even with the cons, startups are one hell of a fun ride. Yes, at times it will suck, but better to have some excitement then be bored after your first 6 months at an enterprise job.

Now, the other side of that is. Enterprises can still teach you a lot and let you grow some while giving you greater stability, it just takes longer. You will also get to see how screwy corporate cultures can be and some good parts too. There are just things about working in and around Enterprises that you can really only learn well by being inside and seeing the beast.

If you want an easy life, and to retire fairly young in a more "guaranteed" way, you will be better off taking an Enterprise job, working 20-25 years and saving well. You'll be well compensated, can save and invest well to retire quite comfortably. Not to mention you will rarely be working crazy hours and can take your vacation regularly etc. Yes it will involve stress, but IMO 75% of the stress is the bureaucracy you have to learn to navigate.

In the end no one can tell you the best choice. My brother and I both came from the same entrepreneurial family and I went on my own after some experience in Enterprise businesses and he stayed in the Enterprise space.

I agree with 1 and 3, but 2 seems exaggerated. Enterprise jobs vary a lot depending on the organization you fall into. There are lots of engineers at Big Corp that are innovating and pushing the envelope.
I agree with you in that some Enterprises are innovating and pushing the envelope, but it generally isn't global to the enterprise, its in small areas they can accept the extra "risk". And at least in my experience it generally isn't done by a recently hired new grad, its usually a trusted insider team with some history at the company.
I expect that expectations will vary so its really a personal decision. When I came out of college I was interested in starting my own company but I wanted the company I built to grow into a big company, and to that end I wanted some experience working at a big company to understand a bit about where the destination was.

I've noticed that many people work for companies and don't bother to invest the time in figuring out how the company works from top to bottom, how do people pay, where does the money go, how do you decide what to spend it on, or how much to spend, how do you decide between path A and path B. All the very real decisions that are made and how they are made, how do you have 20 people make a decision that they are all signed up to support? How do you know if your company is getting bigger, smaller, or suffering.

A startup, at the initial stages, is a handful of people, its a group project to achieve a singular goal. It isn't really a company at that point. When it gets traction and needs to become a company, what is missing? what is needed first? What is less important? All of those things you learn at a company which is already established.

When I came to the valley I joined Intel a "big" corporation at the time (which was better than my other choice Western Digital :-) I spent a couple of years trying to figure out how the company was put together as a system. Then I joined a late stage startup (Sun Microsystems) and worked there while it went from a "small company" (something bigger than your basic startup but I still got to know a lot of the company) to a "large company" the first billion dollar a year in revenue, and on to a run rate of $5B. Then I went back and started a company with some friends and we took it from the 5 of us to product launch and into the second product before we were acquired. And then back to a larger company to figure out some of the things I couldn't quite figure out in growing a company how folks had got there (mostly around sales to enterprises and getting the business model right).

The point being that my career to this point has really never changed its objective, which is to learn how to build and grow a great technology company. And helping me learn has been a number of friends and companies over the years.

So your objectives will tell you whether or not you should start at a big company or a startup.

I think people overemphasize the difference to be quite honest. What I would recommend is disregard the startup/corp distinction and instead look for the following:

A company, where software is the product (ie you get paid based on customers wanting software that your company writes) and there is a good mix of experienced vs junior developers.

There are lessons you can only learn at a software company and the sooner you learn them the better. Further, learning from experienced developers will jump start your own experience in ways nothing else can.

If I had one major knock on the advice to join a startup right out of school, it's that so many of them are lacking in experienced software professionals. Full disclosure though, I joined a software startup right out of school (during the first dotcom boom).

This advice is largely based on the assumption that you want to have a long term career writing software for a living. If that isn't the case the variables change dramatically.

This. So much this.

School taught you the abstract and theory of computer science and development. Working for a company takes your college level education and fills in the "real world" gaps that you don't even know are there. If you were a self-taught programmer before going to university, a good CS program will fill in the holes in your educations (typically data structures, algorithms, dynamic programming, etc).

In the same vein, a real world programming job rounds you out and makes you a stronger developer. You might understand things like program/object/interface/API design, Code reuse, documentation, etc in an abstract sense, or even some practical knowledge from working on small team projects in school. Finding a good team to work with in professional setting will help you mature.

This is why company size doesn't completely matter here so much as composition of the team. You need diversity. You want a team with 5-6. This will have a mix of junior and senior folks. It just large enough that having effective communication and planning becomes important.

If

I would recommend going for an A-list big company out of school (Google, Facebook, etc) for a couple of years. They will teach you a lot about infrastructure and software engineering, you'll find a mentor, and the name on your resume will basically guarantee you interviews for the next 10 years. Plus you'll meet a big network of people. You'll also peg your salary at a higher level which compounds throughout your career.
Unless you can join Google or Facebook, I would say startup.

Here are some good reasons to go with a startup ( If its in your powers, CHOOSE.)

1. Startups are more fun. Like the other commenters said, in just 1 year you will learn quite a lot more in a startup than you would in an enterprise company.

2. If you are joining an Enterprise, you are mostly working on code that is already built by someone else - you have to adapt to that - adjust to that. This is not in itself a bad thing - but my belief is that when you do things from scratch - you learn a lot more. As a freshman - out of college - your main aim should be learning - not money.

3. Startups have the advantage of being a possible rocketship. You never know. If you happen to get on one - you will be set for life. You dont have any remote possibility of doing that in an already established company.

4. I am overly generalizing here - but in a larger company - you will have to deal with a lot of bureaucracy and politics. Its an unavoidable thing when more than a few humans come together. This is detrimental to your growth. It wont allow you to move fast and break things.. which is something you should constantly do as a freshman.

5. Again generalizing, startups are more tech focused ( assuming you are a techie ) and enterprises are more management focused. If you join a startup that is a rocketship, you will most likely learn both tech and management at the same time. If the startup you joined dies, go join another one.

Depends on what you want to achieve out of the next few years of your life.

As in any other choice in life, you have both pros and cons in both the choices.

As also pointed out in other answers, it would hold true that doing your own startup will be the easiest now, as this choice will only get harder as you grow older and your responsibilities/obligations increase. This would definitely give you a good overall growth in many areas.

If you want to develop skill-sets in a particular domain, then I would suggest to go join a big corp where you can learn some best practices, get mentors and maybe even find interesting folks for you own startup at some point later in life. Also a somewhat middle path can be achieved by joining an early stage startup where you can find the above mentioned things in the team, and the pace of growth will be faster as well.

Will share my personal experience as well, maybe it might help. (Though take it with a pinch of salt, as it's not purely objective for me anymore.) I had a good chance to do a startup right out of college with a few friends and some ready funding/accelerators acceptances, but I took the option to go with a big corp. After about an year, I really regretted that decision. I have been wishing to go back and change that... So I left the big corp job after about 2 years, and have been working in core founding team of a startup for 2 years. Learning pace is much quicker in startup, but be clear in what you want out of the time you give to the organisation you will work for be it your own or someone else's.

Big points of regret for me: 1. I had a good team with me then (damn difficult to find this), 2. I was quite passionate about the problem we were working on (again not as easy to develop as it sounds). 3. Seed funding was readily available, so finances would also have been taken care of while working there (as you grow this starts becoming a concern as your burn rate increases...)

Also, I would suggest you to watch both Paul Graham's lecture (L3) and Dustin Moskovitz's advice (L1) @ http://startupclass.samaltman.com/ to also maybe get some more perspectives.

Hope it helps. All the best!

I'm not a developer, I'm an engineer, but I think the same principles apply. If you want to become the best at what you do, you must surround yourself with people smarter, more experienced, and more capable than you. So, go to the company from whom you can learn the most. If a particular startup has an experienced / innovative team, go there. If you find the same thing at a corporate giant, go there. I started my career at a startup, but found I quickly exhausted their expertise since their team was 'limited' in experience, capability, etc. So I ended up at a Fortune 500 where there were thousands of engineers to learn from. In the developer world, it might be completely opposite - the good ones are at startups. Just as employers pick their employees carefully, you should pick your employer carefully :)
You will get advice like "do it now while you don't need a lot of money." But that's not how money works, assuming you have discipline. All else being equal - the more you make sooner, the more you will have overall.

Two big reasons for this: you will invest the money you have now and will earn interest on it. And: what you will make in your second job will generally be based on what you make in your first. Settle for less the first time around and you will always be playing catch-up.

You want to find the best of both worlds: something that offers you good compensation and stability, while also giving you a chance to learn and grow. A big company can do that, you just need to find the right one. Get as many interviews and offers as you can, feel out the company cultures and do research. Someone else mentioned Google and FB. I am sure that's true, there are also lots of other companies where that's true as well.

Personal anecdote: I work in a fairly large NYC based fin-tech firm. Started 12 years ago out of CS undergrad. Now in my 5th role, including having run multiple dev teams and done product management. The firm supported my growth in other ways (grad school tuition.) I would challenge the notion that I learned less than I would have in a startup.

At the end of the day, you want both: money and opportunity. If you are good, you will have options that give you both. Good luck.

If you don't mind, may I ask which firm is it?
These are the important things:

* Has someone offered me a job?

* When can I start?

* Do I trust this manager to sing my praises when I use them as a reference when this job is over in 6-12-24 months?

A reference is almost always the most important thing you take with you from any job. You can take away stellar experience but it won't be worth squat unless someone at the company can confirm with gusto that yes you really did work there.

Important secondary concerns include:

* How much am I getting paid, up front, everything else excluded?

* How much does the company require from me (i.e. am I self-directed, mentored, or micromanaged to death)?

* If the company doesn't run on free software, what software does it have licensed? You don't want to work in ops and have to reinvent monitoring tools, and as a developer you sure as hell better get an MSDN subscription out of it.

The rest is unimportant and mental masturbation.

Thank you so much for all the gems guys!!!
Unless you have an unusual background, find the best big company you can and try and go there. I'm old so when I was in college it was Bell Labs. By the time I got out it was Sun so I went there. Don't regret it for a minute and I stayed there for about 7 years.

If you are a grad student thinking about a PhD, here's what I remember about that. A hard part (there are many) of a PhD is your thesis. Finding a good topic, while you are in school, is hard. However, go into industry and look around and you'll find topic after topic.

Getting back to startup/big company, I would pick a big company if you can go to an interesting one and do interesting work. Facebook seems like they are doing a lot of pretty interesting systems stuff, languages, tools, etc, along with all the social stuff (that I don't pretend to understand). Google used to be the cool place but some of that has worn off, might still be worth a look but it would really depend on what you are doing.

Oh, one other thought: don't be afraid of paying your dues. When I got to Sun I joined the kernel group and they gave the job nobody else wanted: make the kernel conform to the POSIX spec. Seems like a bunch of shit work but for a relatively fresh programmer it was a fantastic education. If I had turned up my nose at that work I would have lost out.

There are shit jobs at startups and great jobs at big companies (and vice versa) by almost any set of metrics you can choose. It may be better to compare specific opportunities and therefore keep your options open. What will matter more than anything else in the long term is the quality of the team you join and the quality of the work they are doing.

Good luck.