|Think about Loose Coupling|
Hmm, this is an old "fossils vs. young pups" debate. Unfortunatly the generalizations are often true.
The only real answer I have ever found is to take each person for who they are and what skills they actually have. Good interviewing skills on your part go a long way to helping this.
I would also like to address the "hotshots" observation. I have seen this by product as well, however it is usually very easy to weed out in an interview. I generally have a mistrust of people who are fresh out of school with a shiney new BS in CIS (confession time: I only have an AS). Most of these "developers" have almost no clue how software is developed in the real world (see (OT) Where is programming headed? for a sample of this)
In many cases the self taught undereducated person is a much better resource as they have already made many of the real world discoveries.
All that said, I think that the key to it all is finding the balance of curiousity driven skills as well as the education that is required. It's this ballance that maked a good programmer, all the education in the world is useless without the practical skills found in the real world, and all the practical skills turn into ever so much spagetti code without some educational enforcement.
I understand and believe there are exceptions to the rules, but generally I interview with the goal of finding this balance. Someone right out of school CAN have this balance, but it will generally only be the person who has done things OUTSIDE the ciriculum.
"Nothing is sure but death and taxes" I say combine the two and its death to all taxes!