I know there are some questions that are sort of similar to this one, but I don't think any of them really ask or answer my set of questions.
A bit of background:
Approximately 6 mos ago, I went from working for a large, bureaucratic, process-driven software company to a very small start-up. I wanted to work for a smaller, faster team and company -- note: be careful what you wish for! :) Although I have a much fancier title, I am mostly a dev manager (and part-time software architect and technical lead).
One of my biggest challenges in my career has always been hiring. On average, I probably get 1 good dev for about every 5 I hire. It's a huge waste of time and money. I find that I still struggle with it, but that now that I work primarily with contractors, the challenges are a bit different (the good news is that contractors are easier to fire than full-time US based employees).
First things first... Finding, interviewing and Hiring:
What sources do you use?
What questions do you ask?
Do you ask for references?
Do you ask for them to work problems/submit code samples? Note: I never want to risk someone submitting someone else IP, but I have had potential employers in the past ask me to create an app for them to solve a problem, etc.
I don't want this to be a cultural thing, but do you ask different questions based on country of origin? Again, I don't want it to turn into don't use contractors from this or that country because they are crap... there are good devs everywhere, but a lot of bad ones, too.
Do you find it better to work with individuals or contracting companies? I guess I've spent a lot more time working with larger companies.
Once hired, how to effectively work with them?
What technologies do you use? For example, I can't imagine trying to do this kind of work without a DVCS. I don't think I'll ever go back to SVN! :)
What collaboration tools/websites do you use?
Have you had better experiences with fixed priced or hourly contracts? I've managed both and I understand some of the pros and cons of each, but I swear I still haven't figured out which is the better "bet" (and yes, it's pretty much a bet in my opinion). I think for me, I need to start hiring hourly because I don't like the control that I seem to give up over the code when it's fixed priced?
Do you demand to have access to the code during development so you can review and see if you feel like you are getting quality work? How do you handle poor code?
What SLAs do you demand in the contract? For example, unit-test coverage? etc.
Finally, I know that most people could take any one of these things and write a bunch on the topic. Please feel free to answer just one part of the question. Or provide a link to a blog post where you think someone has answered a similar set of questions.