Company: IBM
Date: 2009-01-08
Overall rating: 3/5
Employment status: former

Working for this large stable employer is OK if you don't mind feeling like a sheep in a big herd
Pros: To be clear, this is about IBM/Rational in Lexington - I have little knowledge about other corners of this vast company. The pluses of working there are: They produce some technically interesting and successful products in the software-development-tools space, so you know you're working on software that is actually used. There are some good senior developers there, who you can learn from, which is a plus. And finally, you will be working for a large stable company with a good pay and benefits package, which is not something to be sneezed at in these tough economic times. That's it for the good stuff. Next...
Cons: The downsides of IBM/Rational are unfortunately numerous. The place is big, and with bigness comes bureaucracy and politics. There are about 600 employees at the site. The ClearCase project alone has over 100 developers working on it (that's not even counting things like QA). There's no way a SCM system inherently needs that many people - there are competitors who build very functional systems with 10% as much people (and 10% as much code). With too many people comes some very undesirable phenomena, like people competing to "get to" do scraps of new work that are needed, competing internal projects doing the same thing, numerous meetings and processes to decide *what* to do, etc. The software itself has a long history, so parts of it are old, with newer parts grafted on as new layers, so the software as a whole starts looking like an archaeological dig. Nobody seems to understand it top-to-bottom, so it's hard to do anything significant. 

For a new person coming in, all this can be frustrating. You feel like a sheep that is part of a big herd of animals. It's hard to get noticed, hard to get onto interesting sub-projects doing new things, and hard to get your ideas put into practice. Also there's a bit of an "old boys club" mentality, where a new person in the group (no matter how smart and experienced) has a hard time breaking into the "in group" where the important technical discussions happen and the real decisions get made.

I haven't even gotten to the subject of management yet. With a lot of developers comes a lot of managers. Many of them, while being nice people and competent administrators, are pretty non-technical (there are a few exceptions where good developers moved up to manager level, but most choose not to because it means spending most of your day in meetings). So you get a number of people in management who basically don't understand the technology, making and communicating the decisions about that technology, which just leads to... well, nothing good.

I think for a junior person just starting out this might be OK. Or for a more senior person who is content to not do too much while waiting for retirement. But if you're an experienced software developer with energy and ideas who wants to build interesting things, this probably isn't the environment for you.

A couple final points. For me these are not the high-order bits, but they are additional minor irritants. The place has a ton of useless "security" rules, like clearing/locking your desks and wiping clean your whiteboards, etc, along with random inspections (really!) to catch violators. It's like kindergarten at times. Also the company has become cheap in petty ways - like not even giving out free coffee (even though they pay people good salaries). Oh, and one last (no so minor) thing: Even though the company overall and the Rational group are successful and making money, they seem to be in the habit of doing regular (almost annual) "layoffs". I put this in quotes because it's more like a mass firing of the bottom 10% of performers than a traditional layoff - I mean there's no financial reason for it, and they go right back to hiring (sometimes even on the same day). I think they've decided this is a methodology for increasing the average quality of their remaining workers over time. (Unfortunately many other companies are doing the same thing these days, which means all that's really happening is everyone is replacing their laid off bottom 10% by hiring someone elses laid off bottom 10%, so it's completely useless even in its intended purpose.). For me all this wasn't a huge issue since I was never in the bottom 10% and never laid off, but nonetheless regular layoffs produce an atmosphere of general unpleasantness - I mean nobody likes to see bad things happen to colleagues.

Well, that's about it, hope this was helpful.