I assume that by ‘monkey work’ your boss means the coding itself and not any of the design. If that isn’t what he means, then that has already been covered.
I outsourced several small custom add-on components for our core application. These components were not going to be used by any other customers and were not going to be included in the main product. I don’t know why you would outsource your core development – also already covered here. But if you are set on outsourcing, here is my advice:
1. Develop a specification with all features and functions clearly defined.
2. Design the database schema (or whatever data storage design you need).
3. Prototype every screen. Create full up screens (even if they are just images) with the same controls on them that you want to see in the product.
4. Spell out every user input and result for every screen.
5. Establish the platforms – all development tools, OS’s and languages should be spelled out up front.
6. Review often – catch problems as soon as possible.
7. Document every variance. If they can’t do something the way you wanted it, document it and the agreement you came to.
8. Pay for feature completion, not hours.
9. Protect your Intellectual Property.