Pros
IBM is like any other large company. Tthe people you meet there span a large spectrum, from the brilliant to the down right inept. The best part about working at IBM is the flexibility in work schedule. In my experience, as long as you maintain a good relationship with your manager, and you get work done, no body really cares when you come in and when you leave, as long as there are a few hours of overlap in your schedule with the rest of your team. Another perk is the fact that IBM doesn't officially track vacations. There are times when I've taken a few extra vacation days here and there through out the year, and no one seem to complain. IBM being a such large company, has its hands in many areas of technology, both software and hardware. So if you get tired of doing one thing, you can always just move on to something else within IBM.
Cons
With any large company, there is an unbelievable amount of bureaucracy. Results will vary from team to team. But there are teams where the processes are so complex and over the top, developers find that more than half their time is spent on processes. Finding clear direction from upper management is also a problem. Rarely do developers working in the trenches have any idea of the broad direction of their project and the way their contribution fits in. Over the past few years, it seems the correlation between performance and compensation has grown looser and looser. The message upper management seems to send is that you are lucky to have a job, and be content with your 3% bonus pay.