Yes, I've outsourced a few software projects. I'm actually a developer to begin with, but there were aspects of my projects that I needed assistance with in completing, or just didn't know the technology well-enough to proceed. With that being said, here is my .02...it'll be lengthy, so hold onto your hat.
I'll make the assumption that you are a programmer...but please correct me if I'm wrong.
I've primarily used oDesk for finding my developers, and Freelancer.com is another one...they are the two larger sites for outsourcing but there are others. In some cases the same people are on both sites, so if you decide to post on both, expect a few duplicate responses. In my experience, oDesk has provided more consistent, quality people, but that's simply a personal opinion.
Each site acts as a middle-man and takes a fee (%) from the agreed upon price you set for your project with your developer...oDesk is 10%..so make sure you factor this into your budget. By acting as the middle-man the sites provide a bit of assurance that you aren't going to get (totally) screwed out of money. Whereas if you were to find someone on Craigslist, and they want some money up front or you pay them along the way and they bail out, you have no easy recourse. With oDesk/Freelancer you can dispute charges if need-be, so your risk of losing money is reduced...plus if you leave a bad review for that person, in many cases it messes with their only source of income, so its to their benefit to provide good service.
Also, they aren't going to steal your idea. While oDesk and others say they protect your work, its really just a gentleman's agreement that those working on the site won't steal other peoples property...there really is no legality to it, and having a contractor sign an NDA isn't going to hold up. Try suing someone in a foreign country. Not worth it.
That being said, you will hire someone that starts off great and then flames out (won't communicate, bad work, misses deadlines, etc.)...its an unfortunate par for the course, but there are a few things I suggest to reduce this possibility.
1. Outsourcing without a technical understanding/background can be a very slippery slope. Unless you know exactly what technology you want/should use, what your design is to look like, the user interactions, etc, you are leaving yourself open to getting a lot of bad advice and crappy work from contractors. It doesn't matter how highly recommended they are...if you tell them to build a blue box, you'll get their version of a blue box. You need to be as explicit as you can in your requirements...screenshots, write ups, etc go a long way towards ensuring your end product matches your expectations.
2. Always do fixed-price projects. We as developers/designers are inherently bad at estimating the time it will take to complete a project. So if you choose to pay per hour, you will wind up paying a lot more than you expected.
3. Do your homework. Look at existing job postings on the site to gauge what to write in your posting, as well as an estimate of what the going rate is for similar work. Always ask for them to send you a portfolio of their work, as well as link to their GitHub account (source code repository for coders.) You want to explain what you need done without giving away all of the details. You'll goal is to find someone that has done something similar and done it well. You can share specifics with them after you hire them.
4. Used the advanced options to further refine your candidates. I always look for those with at least a 4.5/5 rating, 100 hours billed, and a 5/5 English-level. You'll get a mixed-bag of responses, but this is a good baseline to work from and filter down your list.
5. Read the feedback of each of your candidates, you might get one that's a 4.9/5, but the last two employers stated that the candidate's English was bad, or missed deadlines...question the candidate to find out what might have happened. If you see a candidate with reviews that are hidden, its a red-flag, so stay away.
6. Once you've narrowed down a list of candidates to say 3-5, message each and ask them some technical questions (Google for specific programming tests for a list of example questions.) Sure, they could Google for the answer themselves, but ask them to respond in a specific context, such as have they encountered X and if so, how did they handle it? This not only gives you a good idea of their technical ability, but also of their communication ability and responsiveness.
7. Pricing. As usual cheap can be bad, but you just need to weigh the responses to your budget. In some cases candidates will counter-offer, but everything is negotiable within reason. Just don't expect to pay ($200) for an iPhone app. Lately I've had instances where people looking to break into oDesk have messaged me and offered to do the work for pennies as they simply want the experience. With that being said, its really a gut decision, but that only comes in time of being able to know what you want and to spot a crap contractor.
8. Once you've hired someone make sure you are on top of your communication with them. Its okay to ping them once a day and ask to see updates. Its your job to manage the project.
9. One thing you may want to try is posting a small programming task (say $25-50) with the condition that successful completion will lead to additional work. Great developers can knock this out in no time, so its easy money. Some people will suggest that you have developers complete a task for free as an example of their work...like anyone, great developers value their time/skill, so most will brush this request off. You only need to pay one, so it can be worth it.
I could go on and on, so if you'd like to talk more about details, have questions, etc, feel free to send me a message. Tech can be a very opinionated and deep arena to step into, but I pride myself in being agnostic and able to assist others in finding the best solution for what they want to accomplish...I can even help you filter through and find the right contractor if you want. Just let me know as I'm simply happy to help.
I'm writing a soup-to-nuts ebook on the entire process from idea to completion for those interested just message me, as I'd very much appreciate feedback.
Good luck.
I'll make the assumption that you are a programmer...but please correct me if I'm wrong.
I've primarily used oDesk for finding my developers, and Freelancer.com is another one...they are the two larger sites for outsourcing but there are others. In some cases the same people are on both sites, so if you decide to post on both, expect a few duplicate responses. In my experience, oDesk has provided more consistent, quality people, but that's simply a personal opinion.
Each site acts as a middle-man and takes a fee (%) from the agreed upon price you set for your project with your developer...oDesk is 10%..so make sure you factor this into your budget. By acting as the middle-man the sites provide a bit of assurance that you aren't going to get (totally) screwed out of money. Whereas if you were to find someone on Craigslist, and they want some money up front or you pay them along the way and they bail out, you have no easy recourse. With oDesk/Freelancer you can dispute charges if need-be, so your risk of losing money is reduced...plus if you leave a bad review for that person, in many cases it messes with their only source of income, so its to their benefit to provide good service.
Also, they aren't going to steal your idea. While oDesk and others say they protect your work, its really just a gentleman's agreement that those working on the site won't steal other peoples property...there really is no legality to it, and having a contractor sign an NDA isn't going to hold up. Try suing someone in a foreign country. Not worth it.
That being said, you will hire someone that starts off great and then flames out (won't communicate, bad work, misses deadlines, etc.)...its an unfortunate par for the course, but there are a few things I suggest to reduce this possibility.
1. Outsourcing without a technical understanding/background can be a very slippery slope. Unless you know exactly what technology you want/should use, what your design is to look like, the user interactions, etc, you are leaving yourself open to getting a lot of bad advice and crappy work from contractors. It doesn't matter how highly recommended they are...if you tell them to build a blue box, you'll get their version of a blue box. You need to be as explicit as you can in your requirements...screenshots, write ups, etc go a long way towards ensuring your end product matches your expectations.
2. Always do fixed-price projects. We as developers/designers are inherently bad at estimating the time it will take to complete a project. So if you choose to pay per hour, you will wind up paying a lot more than you expected.
3. Do your homework. Look at existing job postings on the site to gauge what to write in your posting, as well as an estimate of what the going rate is for similar work. Always ask for them to send you a portfolio of their work, as well as link to their GitHub account (source code repository for coders.) You want to explain what you need done without giving away all of the details. You'll goal is to find someone that has done something similar and done it well. You can share specifics with them after you hire them.
4. Used the advanced options to further refine your candidates. I always look for those with at least a 4.5/5 rating, 100 hours billed, and a 5/5 English-level. You'll get a mixed-bag of responses, but this is a good baseline to work from and filter down your list.
5. Read the feedback of each of your candidates, you might get one that's a 4.9/5, but the last two employers stated that the candidate's English was bad, or missed deadlines...question the candidate to find out what might have happened. If you see a candidate with reviews that are hidden, its a red-flag, so stay away.
6. Once you've narrowed down a list of candidates to say 3-5, message each and ask them some technical questions (Google for specific programming tests for a list of example questions.) Sure, they could Google for the answer themselves, but ask them to respond in a specific context, such as have they encountered X and if so, how did they handle it? This not only gives you a good idea of their technical ability, but also of their communication ability and responsiveness.
7. Pricing. As usual cheap can be bad, but you just need to weigh the responses to your budget. In some cases candidates will counter-offer, but everything is negotiable within reason. Just don't expect to pay ($200) for an iPhone app. Lately I've had instances where people looking to break into oDesk have messaged me and offered to do the work for pennies as they simply want the experience. With that being said, its really a gut decision, but that only comes in time of being able to know what you want and to spot a crap contractor.
8. Once you've hired someone make sure you are on top of your communication with them. Its okay to ping them once a day and ask to see updates. Its your job to manage the project.
9. One thing you may want to try is posting a small programming task (say $25-50) with the condition that successful completion will lead to additional work. Great developers can knock this out in no time, so its easy money. Some people will suggest that you have developers complete a task for free as an example of their work...like anyone, great developers value their time/skill, so most will brush this request off. You only need to pay one, so it can be worth it.
I could go on and on, so if you'd like to talk more about details, have questions, etc, feel free to send me a message. Tech can be a very opinionated and deep arena to step into, but I pride myself in being agnostic and able to assist others in finding the best solution for what they want to accomplish...I can even help you filter through and find the right contractor if you want. Just let me know as I'm simply happy to help.
I'm writing a soup-to-nuts ebook on the entire process from idea to completion for those interested just message me, as I'd very much appreciate feedback.
Good luck.