I'm doing it now. It's a little like arbitrage. I hired someone on Rent a Coder to keep my project moving while I finish a consulting contract.
The key is finding someone who's good. I have some tricks for that on Rent a Coder:
1 - Spend some time building a private invite list of coders who have something similar in their work history. Pick only people with a 9-10 rating, and 10+ projects. Make sure at least couple of those projects are decent-size. Give preference to similar time zones unless you work either early morning or night hours (like I do).
2 - Invite your coder-list to a private auction, and don't worry about the price of the bids much. Instead give it to the guy who asks the most questions.
3 - Have well defined specs (as you have), and create unit tests or test stub names that are required to pass for the project to be considered "complete" and put this in the requirements.
4 - Outsource discrete chunks.
If you've got a great coder, #3 is less important, but some people have low attention to detail and try to turn the project over ASAP. So they'll lob something over the wall that doesn't work fully, and you lose time investigating and complaining about each item--they make you drag it out of them. I make automating the required tests part of the project, and then I spend less time verifying their work. Call it test-driven outsourcing.
I've found that outsourcing a project takes anywhere from 10-30% of the time doing it myself would have, but it's still a win.
I too am doing this now, though it is still too early to evaluate.
I deeply agree with 2 - prefer people who ask a lot of questions. In my case for some reason this is always Russians, while the bids I've gotten from Indian companies without exception:
1. Assure me that they can do my project with excellent quality and proceed to list a bunch of portfolio projects that have nothing to do with what I am doing.
2. Name a price without a single question asked about the requirements.
3. Are represented by someone with zero technical knowledge who hands off any request for details to tech people. It then turns out they have no idea what I want and need lots of further details (nothing wrong with that, but how the hell did you name a price in the first place then?).
Indian outsourcing companies seem really top-heavy in the layers department. As a technical person I want to deal with developers directly.
The key is finding someone who's good. I have some tricks for that on Rent a Coder:
1 - Spend some time building a private invite list of coders who have something similar in their work history. Pick only people with a 9-10 rating, and 10+ projects. Make sure at least couple of those projects are decent-size. Give preference to similar time zones unless you work either early morning or night hours (like I do).
2 - Invite your coder-list to a private auction, and don't worry about the price of the bids much. Instead give it to the guy who asks the most questions.
3 - Have well defined specs (as you have), and create unit tests or test stub names that are required to pass for the project to be considered "complete" and put this in the requirements.
4 - Outsource discrete chunks.
If you've got a great coder, #3 is less important, but some people have low attention to detail and try to turn the project over ASAP. So they'll lob something over the wall that doesn't work fully, and you lose time investigating and complaining about each item--they make you drag it out of them. I make automating the required tests part of the project, and then I spend less time verifying their work. Call it test-driven outsourcing.
I've found that outsourcing a project takes anywhere from 10-30% of the time doing it myself would have, but it's still a win.