I’ve worked for a variety of corporations at a variety of points in my career. I’ve encountered people who claim large companies are soulless mind-sucking entities, and small startups are the way to go. I’ve also encountered people who claim small startups are underpaid stressful environments, and the security and camaraderie of a large company is the way to go.
Both suck.

Well, let me qualify that. In both environments you have to deal with people. And people can be bureaucratic, officious, mean-spirited and obnoxious, as well as obtuse, bull-headed, and just plain mean–regardless of the environment in which you work.
And people can also be gracious, kind, polite, helpful, intelligent, and otherwise great to work with–again, regardless of the environment in which you work.
I’ve noticed two differences between a small company and a large company. Small companies mean more risk taking–but have the potential of a massive upside. On the other hand, there is nothing inherit in a small company being “small”–meaning agile, non-bureaucratic, or capable of quickly recognizing and moving on decisions. All it takes is an idiot who is willing to do stupid things to break one’s day.
One could argue that idiots are more rife in large corporations–after all, the the other difference between a small company and a large company is that a large company provides security, or rather, large companies have a greater vested interest in keeping people who understand how things work at a large company, while small companies have a vested interest in getting rid of bad people.
Or rather, a small company may think it has a vested interest in getting rid of bad people–but often small companies lack the experience (or have people at the top) who are unable to recognize their vested interest. We may hear about the successful small companies that go on and make millions for their founders–but how many do we never hear from which fail because of bad decisions or bad execution, caused by bad people who lingered on?
(I’m not speaking of any company in particular, by the way–I’ve worked for several very large companies and very small startups. And it’s always the same.)

In both environments, however, there are really cool projects and really crappy projects. Small companies tend to generate excitement: “hey! we’re on the cutting edge!!!”–but crappy projects are crappy projects. Some large companies like Google have also managed to capture that excitement–but what Google doesn’t tell you is that they’re like the military: unless you are extremely exceptional, you’re going to be fodder for the Google Advertising Serving System. Sure, Google may lure you in with “Go” and “GWT” and cutting edge algorithm research–but chances are you’re going to be working on how to optimize advertising keywords and making billing systems more scalable.

Okay, so I’m working on an advertising system. I’m working on Lead Generation–which is about as exciting from the outside as watching paint dry and grass grow. But there are a few cool things going on here: (1) we’re building a system from the ground up. And (2) we have a chance to make a real difference within the organization through the use of excellent customer-oriented design. What I want (and what I intend to fight for) is Apple-like design-centric design. Sure, it’s an ad system, but it doesn’t mean it has to be a poorly designed ad system.
Live in the Glendale/Burbank/Pasadena area and want to play with GWT? Got Java ski11z? Want to make a difference by providing an ad system that your corner drug store owner or restaurant owner can actually use? E-mail me at my AT&T Interactive e-mail address.