An article on News.com today says that IT firms are hiring, but they're looking for code monkeys that understand the business. What a shocker.
Since fully transitioning into a programmer year in '99, I've found it to be very surprising that the stereotypical programmer is ill-equipped to understand the business implications of the software that they write. The "Give me requirements, will code," attitude seems to be the standard in corporate America.
At the last contract gig I did, at a huge insurance company, one of my teammates (from India, and very business savvy) theorized that it wasn't so much a reflection of programmers, but of American education. He felt that people in general were not trained to understand business unless that's specifically what they went to school for. I agree to an extent, but would add that an ongoing lack of interest in the business around them doesn't help.
My theory is more along the lines of personality types. I think the programming side of the hall is filled with nerds (and I mean that in an affectionate way, they're my people), many of which never acquired the social skills to thrive. I'm not saying that it's all programmers, but a good portion of them. Naturally they don't play nice with the business people at the other end of the building, which is generally composed of socially outgoing types that were popular in high school.
One thing that does seem to get around this phenomenon in corporate America is XP and agile development environments. In these cases you're forced to work with other people, and if it's done right, it includes people right up through the chain including managers and sales types. Personality conflicts surface, but in my experience the quality of the software is better.