First, there's only two qualities to look for in candidates:
2. Gets things done
Spolsky clarifies "smart" not as "knows a lot of facts" such as the "What's the difference between VARCHAR and VARCHAR2 in Oracle8i", but aptitude - the ability to learn quickly, easily.
I'll also add that the reality is that the paradigm of programming knowledge has changed over the last 6+ years. Before the internet boom, the ability to learn and hold details (such as syntax) was valuable because it took time to find information in a book or ask a coworker (stopping his flow). Now, it takes seconds to find answers. The value is now on the ability to search effectively and know enough about concepts to help set the context of your search and what you actually need.
Secondly, in the interview, ask open-ended questions that allow you to see three key attributes:
2. Ability to explain things well
3. Signs of leadership
Personally, I see these three as qualities that cannot be coached or taught effectively.
Add these items to other areas in business where we should First, Break All the Rules.