views:

2400

answers:

22

I'm finishing my final year in college this year and am starting the process of interviewing with various companies. I had an initial interview with Microsoft already and will be having a second round interview in a few weeks.

I am wondering what experienced programmers feel about working at a large company versus a small company. I'm not looking for an opinion on any specific companies but rather whether people prefer working at small or large companies and why. Are there any specific advantages to being a programmer at one versus the other? I've never worked at a small company but have done an internship with Oracle so I have a slight idea of what its like to work in a large company.

I understand this might be highly dependent on personality and the company a person works for but I was just curious to get some opinions from actual programmers.

+2  A: 

If you are the type of person that thrives on variety, and loves to do the whole IT thing yourself (I am...) then working at a smaller company may feel more rewarding.

If you are looking for advancing your career and making more money, in my experience working for larger companies has made me more money.

The downside, from my perspective, has been that working at a large corporation (multi-billion $) means there are many people with many competing projects, and the corporations I have worked for have never done well at controlling priorities. So there are lots of politics.

The smaller companies have always afforded me more flexibility in choosing projects, and even pushing projects to make the company grow.

At my current company, my projects are rarely strategic, and are mainly completed to make some VP of some department look good...

But this is obviously just one perspective.

Good Luck with your choice!

Jason Stevenson
+3  A: 

It isn't really the size of the company, but the size of the team - I reckon a large team just tends to become unmanageable. If the team is small, chances are everyone will be well knit together, and thus feel like a "family", not just some workmates. and that is what matters when it comes to work environment- imho =)

Chii
+1  A: 

This previous question may be useful for you, where some people list the pros and cons of startups and small companies vs large companies:

http://stackoverflow.com/questions/115728/working-in-a-startup-or-a-small-company

Tim
+19  A: 

Large Companies generally offer more stability and benefits, but a more important factor to consider while you are young and unencumbered is "what does the company do"?

If you are really into software development, you need to find a company that makes a software product. These are the companies that really value developers - as they directly contribute to the bottom line.

Companies whose primary product is "something else" will have an IT department that involves software development, but will be much less stringent in their development practices because the software isn't really their "product".

Definitely something to consider, based on your goals.

Ron Savage
The best way to find out how serious a big non-software development company is about IT is to find out what their IT budget is. When I joined my last company I nearly kissed the HR manager when he told me the IT budget was $2bn.
bmatthews68
Another related point here is that large companies are great for learning serious server side stuff, small companies are better for learning how to work with customers as a technical person.
Kendall Helmstetter Gelner
If you are serious about software development, stay as far away as possible from companies who have IT to support their internal processes.
Pranav
+2  A: 

I'm a fan of small companies - your contribution has a larger relative impact. I've also found that development/tech can be closely linked with the business itself. There is often a trade off - more business exposure can mean less technical depth. Neither is better than the other, I personally find the broad exposure interesting.

As an example, the developers on my team spend energy thinking about how their decisions affect the business and what the cost/benefit is of each feature they propose and/or develop. As a gross generalization I'd say if you want to go very deep (say become a specialist on optimizing closures in functional languages) you should go to a large company. If you think that you want to learn how to run a business yourself - go small.

Jerry B
+4  A: 

Personally, I prefer small companies as I have very little tolerance for bureaucracy.

For a wider range of opinions, another iteration of this question is at http://stackoverflow.com/questions/111161/large-or-small-company

Dave Sherohman
+4  A: 

After working at both I'd say that it's more rewarding to be a programmer at a large company (I've had lots of chances to learn from other great developers and get more valuable feedback on my work), plus because you actually get to program full-time (less non-programming chores) your programming skills will have a good chance to improve.

At the smaller company you'll likely be required to do tons of non-programming related stuff, which is good as well (personally I learned a lot about the impact of my work when I had to look at my work from legal, production and marketing angles as well). Thus you'll have a chance to improve your other skills.

Robert Gould
+9  A: 

These are my opinions, from working with three companies of different sizes in Sweden. Just be aware that some of the properties I list might have more to do with company culture than company size. Anyways:

Large companies:

  • Usually good possiblities for internal mobility. It is usually possible to relocate to another office within the same company. Can be useful if your spouse gets a job in a different city.
  • Often has a good set of services. There is definetely someone who will make sure that the coffee machines or microwaves are in order. And an internal IT department that runs the servers and manages the user accounts.
  • Can be harder to get a raise (unless you do exceptionably well). The amount available for each manager to distribute among the employees during salary discussions is often decided in a big Excel sheet and divided on each department.
  • Often has internal programs for personal development.
  • You might not know the names of all your superiors.

Small companies:

  • Decisionmaking is much more flexible.
  • Easier to become a key employee (or perhaps even one of the owners?)
  • Larger need to do things yourself.
  • Much easier to get your voice heard.

As the bottom line, I would definitely recommend trying both. If your first job is on a large company, why not go for a smaller one when you've had enough of your first job?

norheim.se
+7  A: 

Small companies can work you harder, but you can get a much broader range of experience - a natural fit if you can already do a combination of systems work and programming as well. It's also good if you tend to be more passionate about your work as the fewer employees a company has the more emotionally invested in the company they are. That by the way is a good thing.

Larger companies are good if you are more specialized in terms of just programming and not wanting to mess with systems, or generally prefer more rigid hours (though make no mistake in any company sometimes there will be extra hours).

Consulting (which you did not ask about) is good if you want a range of different experiences, and more flexibility in time, though at times that can also have some long hours.

I personally prefer working for small companies or consulting, having tried all three.

Kendall Helmstetter Gelner
+1  A: 

I think that the work and the people are more important to job satisfaction than the size of the company.

Brandon
+2  A: 

Oddly enough the small companies are impressed by internships with the big companies, and the big companies are impressed with experience.

You can do the math :-D

J.J.
+6  A: 

In my humble opinion, fresh graduates need to start at a large company, where fresh graduates will get trained/mentored in formal method of Software Engineering as well as industry standard good programming practices. Once fresh graduates spend a couple of years in a large company, they will have absorbed all necessary competencies they need to excel as a software engineer. Then, they can move into smaller companies where there is much more excitement and opportunities to became a key employee faster. This way, fresh graduates get a solid foundation, on which they can build their career.

sunish
I totally disagree that large companies are a good place to start for someone younger. Best to work at smaller companies when you are young and can easily work long hours. You learn as much if not more, since developers at large companies tend to ossify and become dated. Process is not wisdom.
Kendall Helmstetter Gelner
+2  A: 

It's not about the size of the company, it's about maturity of the processes.

Big companies could be very different: A big IT fir example has to focus on the SDP from the sheer necessity of managing several complex project at the same time. On the other hand a big company with a small IT department may have no proper standards to speak of.

Same goes for the small companies - some may be very organised and follow proper processes and some may be place for a bunch of tallented cowboys with no respect for an organised team work.

From my experience you could get the best of two worlds by working for a large software house or an outsourcing company and spending a lot of time on-site or working close with the clients. When working with the client IT team you get in touch with different approaches and learn different new things. At the same time your 'mother' company provides you with methodology and skills which give you a solid foundation on which you could safely build if you will decide to go freelance or join a small company.

Ilya Kochetov
A: 

if you're popping out of college already competent (you've already read all the books, you're highly motivated, you already have personal projects under your belt) I'd be leery of large companies. Your "experienced" colleagues may be less competent than you. You can use that for rapid advancement if you don't want to be a developer longterm, but if you live and die to code, you would probably prefer to surround yourself with pros. You need to ask lots of questions about this in your interviews.

Salary at large companies is precisely industry average, and advancement is rigid.

Dustin Getz
A: 

A large company has several benefits as a starting spot.

First, you get to start out among many other new employees making the transition easier. There is more mobility between projects. And in general, it may be easier to get a job.

Second, it looks much better on your resume if your companies have name recognition, especially if you switch jobs later or apply to graduate school. I started out at Intel and think that it helped me get to grad school later.

Smaller companies tend to be more informal though, and feel less like corporate america.

Uri
+4  A: 

Larger companies will often employ you for what you are; smaller companies would be willing to employ you for what you want to be. Of course there are exceptions amongst both kinds. But I think it should be the most important deciding factor.

The second most important factor is that in big companies you are valued for your soft skills and for your smooth functioning as a gear wheel in a piece of machinery. They will keep you well oiled in return. In smaller companies, your rough edges are acceptable and often appreciated, and you will be valued as an individual. Both kinds of persons, gear wheels and flintstones, are needed in their own places, and you have to judge based on your personality.

The third thing is that opportunities for transition from a small company to a larger one are fewer than the other way round. Fourth, having worked for some years in a large company with its all-round support structure makes it difficult for you to work in a smaller company.

As I already stated, these generalizations might not be always valid.

Aydya
+2  A: 

I worked at an infant start-up during the last year of my undergraduate programme. After I graduated, I moved into a big company. I resigned after a little over nine months working there. I have since been working from home for a smaller company.

I find working in smaller companies much more fun, more than anything because I get to do what I love doing. And that is important. At the big company, I only ever had anything interesting to do. Heck, I spent most of the time working on stuff that pissed me off a lot. But I quietly bore it because I wanted to absorb as much as I could---the client visits and dealings were educating and worth experiencing at first but as time elapsed they turned from simply stupid to downright annoying. However I may moan and bitch about it, it did taught me invaluable stuff about how clients are in general and how they are dealt with. It also exposed me to on-site work which since leaving that place I've not done.

I don't think that would be the case for all big companies---not at all. And my experience of working at big companies is extremely limited. But that's all I would say.

ayaz
A: 

Your experience will vary depending upon your project and team. I am on a new, dynamic, enthusiastic team at a big company and am quite happy. Other teams at the same company are not so lucky. You won't really know until you get there and meet the people (esp. your manager) and learn the environment, regardless of whether the company is large or small.

As someone mentioned earlier, definitely make sure you are working for a company whose primary industry is software.

Startups are cool but my universal impression (both from my experience in them and from my friends) has been that the hours are excessive. I like working but I've never met a project that was worth sacrificing the other aspects of my time, life, youth, etc..

Can't comment on the small-but-not-startup-sized companies.

elliot42
+1  A: 

A lot of big software (especially business driven company who pretend to be a software professional) company can destroy your inspiration. If you consider yourself a creator and self-motivation, don't go to large company.

A: 

Normally, I'm a small company type guy. I perfer to work in an environment where I'm doing more than just writing code (keep in mind I have 15 years commercial experience), so small suits me better. I've done - and can do - everything from architecture, design, analysis, database admin, exchange and windows server admin, network ops, business decisions, dealing with customers and partners, mobile, enterprise integration etc etc etc.

But I think I've hit the mother-load with my current job. I'm in a department of around 50 (which I'd still consider a small-medium sized company) within a HUGE company (5-10K+). We have the agility of a small company - we can almost turn on a dime - with the backing, resources and oppertunities of a very very large company.

It's almost perfect :) Not quite, but close.

If you are fresh out of school/university/college and want to hone your skills, the only thing I wouldn't recommend is a start up. That would, I think, be a good way to learn a lot of business skills (possibly anti-skills! how NOT to do things), and a more messy, "get it done now" method of development. Wait a year or 2 before doing that :)

Other than that, I'd go for somewhere which interests you, and which software development is their primary goal, not a minor supporting function - and you can get these in both the very large, and the very small.

You are young. Try both :) Dont EVER expect to be in the same job for the rest of your life (or the rest of the decade / half decade). The longest I've been in a job so far is 4 years....

Nic Wise
+1  A: 

Small companies tend to have better opportunities if you want diverse experience as here a developer may end up doing some network administration, server administration and other things that are outside of software development.

Large companies are where you can focus on doing one part rather than everything within the software development life cycle and other stuff, which may appeal to some people. Another factor is how many people are in the department where you are, since this may be tiny compared to the size of the company overall. For example, within Microsoft there are probably many more developers working on various Microsoft products that are sold rather than their IT department where there may be just a handful of people handling internal web site configurations. That handful is just a guess but I do think it isn't a high percentage of Microsoft's overall workforce.

What the company does may also play a role in things. In my case, I have worked in 3 different environments:

1) On-line retailers. This was what the couple of dot-coms I worked at did and their web development was a rather crucial part of the company. One was a bit smaller where there were only a handful of techies and so we got to set up the network, administer various servers, put in a backup system, determine how we wanted to promote various pieces of code as there wasn't a large group of us. The other was where there were ~18 or so developers working on the sites and various back-end pieces of functionality. Here we didn't worry so much as setting up servers though we still got the odd production issue to troubleshoot.

2) Application service provider. This is quite different as here I worked on developing the web application that was how end-users would be able to access the data and configure the devices they used for whatever purpose within a location-based services realm. Here, it was a small company where at times, developers would get pulled into production issues but generally we ran on getting in new features or functionality for various customers or potential customers.

3) IT department of a technology company. Here I have a different perspective on things as I troubleshoot issues with various software packages the company uses as well as their web properties as I'm within the web team here, in contrast to producing the product in #2 or the sites where sales happen as in #1.

JB King
+3  A: 

What do I like best about large companies? They tend to make their payroll more reliably.

After seeing three small firms fail out from under me for three years I went back to larger firms with real revenue streams.

Part of it is my age. I'm further along in my career, so I'm a little risk averse.

I'd advise any younger person who has no obligations other than to themselves to go ahead and take a chance on a smaller firm in the hope of getting a greater payoff in terms of experience or financial reward.

The moment you have someone else involved, like a wife or children, or greater risk like a house, you've got to think more carefully about the risks you take. Best to take them when you're traveling light.

duffymo