How do you identify a great software developer in an interview?
Locke: Despite how hard you try, you can't get this 100% right.  This is how I approached hiring:1. Weed out the truly incompetent.  A very simple programming exercise is sufficient.  Keep in mind that the goal of the exercise is not to identify a great programmer, but rather to identify those who can't program at all.2. Set expectations.  During the interviewing process, try your best to work out what you would expect from the individual if hired.  Would you expect them to churn out a ton of quality code?  Do you expect them to be great at determining business needs and writing less code, but code with a high impact?  Is this going to be your go to guy for technology X?  Do you expect your junior person to learn Y and Z so they can start contributing after N months?3. Communicate your expectations clearly.  Make sure the candidate knows what's expected of him or her.  Towards the end of the interview discuss how they feel about those expectations.  Ask how they plan on going about meeting them.4. After hiring:  If you get it right great, if not, let the person go sooner than later.  You do yourself and the individual a great disservice if you try to turn them into something they are not.  Don't try to turn a lump of coal into a diamond.  It's a trap.  It doesn't work.  They will be unhappy and resentful if you try.  Nobody likes to be fired (or do the firing) but you have to tell yourself it's best that they get back out there and find the job that they can be happy and successful at.