How to keep your programming job
In Chris Adamson's blog entry "Why don't you get a job?", he suggests that
"In the future, you may be not just a J2EE developer, or even a J2EE web app developer, but instead a J2EE financial web app developer, or a J2EE medical web app developer, or a J2EE media web app developer, etc.".
Fear not my business adverse readers, there's another option...
It is not necessary that you choose a business specialization like "finacial" or "medical" or "media" to retain your employability. If you learn to treat your business owners with respect, they will be delighted to explain their business to you. You'll have to do your homework to learn their lingo, but if you make the effort to deal with them in their own terms, you will find that business Subject Matter Experts (SMEs) are every bit as worthy of respect as you think you are.
What business people crave from programmers (and technical people in general) is respect.
Brief history recap:
The popular role model for programmers during the dot com boom was that of the heroes in "Revenge of the Nerds". Demand exceeded supply, salaries got high, and the benefits that companies had to provide to simply keep programmers from leaving got fairly ridiculous (capaccino machines and free chair massages were the norm).
When the dot com boom went bust, some business folks took their own revenge, and we saw a bit of gleeful outsourcing to India and Eastern Europe... not just because great programmers were available at cheaper rates, but because the business guys felt slighted. During this phase the role models for programmers morphed into the heroes from "Office Space".
Both role models were faulty; two wrongs don't make a right. It's spilled milk and we need to get over it.
CIOs do want developers with more business skills. They would be absolutely delighted if you knew the minutiae of their industry, but what they really require is developers who can understand the relationship between the company's business needs and the software that the developers produce and maintain.
Software is expensive to write, and it is expensive to maintain. Your CIO wants to be confident that the software you are producing (and the hardware that it requires) really does map to an important business need.
Your business people will not grasp your excitement for the latest Java technology unless you can explain to them how that technology relates to their business. To really communicate, you'll need to learn their language and to express yourself in terms of their world view.
If you learn to communicate with your business people, and you treat them with respect... your odds of keeping your job will dramatically improve (and you might even make a few more friends).
(Cross posted at The Thoughtful Programmer)