I disagree with Joel Spolsky. In his post on why great people are never on the job market he states:
The corollary of that rule—the rule that the great people are never on the market—is that the bad people—the seriously unqualified—are on the market quite a lot. They get fired all the time, because they can’t do their job. Their companies fail—sometimes because any company that would hire them would probably also hire a lot of unqualified programmers, so it all adds up to failure—but sometimes because they actually are so unqualified that they ruined the company. Yep, it happens.
It is true that organizations that fail do so largely because they keep hiring incompetent buffoons. However, calling developers incompetent because they were unfortunate enough to end up in a mismanaged company puts way too much responsibility on the technologists.
A bright developer may get lured into a mismanaged company by an interesting project just to find that project canceled a few months later and the whole team laid off. A bright developer may choose to work with his friends on a startup, then sell the company and move on to other things. He may also choose to work in consulting and go from a gig to a gig every few months.
Joel statement applies more to managers than it does to developers. Great managers are never on the market. They manage their projects well and their companies are profitable and successful. Bad managers don't manage their projects well and end up driving their teams into the ground. Developers are just engineers and that's that. Most of them do what they are required to do to meet a perceived need, and most developers do it well. It is managers that fail.