Management often believes that they understand hiring, and that their mechanisms for examining performance are good. If Joel believes that one of his employees is fantastic their requests will be heard, and they will be better compensated. Dan instead is seeing developers that he knows are awesome and can't find work because Dan can't hire them.
I for one think both are right in some fashion. People that management considers high performers stay long and are very well compensated. People who are not valued that way by management might still stay (if they are not valued in the market), but will jump ship after a few months otherwise. Willingness to stay depends on getting what you want out of a job REGARDLESS OF PROGRAMMER QUALITY!
I have worked at places where people with tremendous flaws were considered high performers, making the place shed great developers while keeping bad ones. Other places just look at a specific set of things that might make someone good, and end up with unbalanced talent sets. Imagine you hand tasks to single developers, and value getting them in production as soon as possible. Stability, readability, maintainability will go down the window, and eventually said company will either fail or have to hire a different kind of dev, and force those people to win a culture battle.
So ultimately, I think this is all about how difficult it is to evaluate programmers, and how people with one evaluation function look at a world that either shares their evaluation function, or differs significantly from it.
Interviewing of late is filled with randomness. One place I interviewed, the Recruiter told me to expect coding exercise. The call starts, and I am handed out a system design problem ! Never expected a positive outcome since I hadn't prepared. Randomly, I got selected for the next round. This time around I prepared for anything come what may. The call starts, I get asked a coding question. I solve it in about 20 minutes, and the remaining 25 minutes we have a good discussion about the company dev practices. Randomly, this time I am not selected !
Another company I interviewed with last year but didn't make it but kept in touch with the recruiter for re-applying after a 12 month cool-off period. Come the time to re-apply, the good recruiter left and now the current ones keep politely refusing my application.
Another interesting one wanted me to record a video of mine explaining what I know about the company and why I would be a good fit and send that video to them ! (this one is a mixed bag, I kinda liked the idea but didn't bother eventually)
Another one had me fly out internationaly-all-expenses-paid after three Skype rounds,on the day of flying back I left a courtesy email to the recruiter thanking for the opportunity to interview and asking about possible turn-around time for a feedback. Haven't heard back !
Overall I have begun to get the feeling that at I particularly am a Lemon (or atleast the Potato no one is buying).
Was that a long comment ? Or maybe a rant.
To follow the used car analogy, good cars do occasionally need to be sold, but when they do they get taken quickly by a friend or through word of mouth recommendations. The cars that sit on the lot for the public to peruse are not great deals.
Also, Joel was a product manager, not a developer or an engineering manager.