Previous     Next

How to outsource successfully

Dave and Jay made an interesting post on a tool they are using to help with content creation and it got me thinking on my own efforts at outsourcing content/software creation. I’ve outsourced several projects - both successfully and unsuccessfully, as well as helped friends with preparing their projects for outsourcing (which have been successful, thankfully). So here is what I’ve learned:

Be as detailed as possible with your instructions
Every time a contractor comes to a point where there is no specification is a chance for a major problem. At best, they will stop what they are doing and work on something else and you just lose a bit of time. At worst, they will make a (hopefully) educated guess as to what you wanted and continue on - and the guess is wrong. Depending on when this is discovered it can mean the project is delayed, or it can completely sink it. Try to show a friend the specification and see if it covers everything. Based on documents I have written and read, bring the friend plenty of coffee.

Functional, not Technical
Write what you want the program to be able to do from a users perspective, not how it will actually do it. Unless you specifically want the program written a certain way it is enough to write ‘Store the address in a database’ rather than ‘Store First Name, Last Name, Phone Number in the Client table using the SQL statement INSERT …’.

If there is a user interface, draw it
Drawing the user interface forces you to think about how the user should accomplish tasks. Once you have drawn a screen, run through the functions for that screen, and check that the buttons and fields are all there to make them possible. Having everything visible allows you to easily spot errors of the kind ‘There is no way to delete/add XYZ’ or ‘There is no link between child and parent items’.

If there is a database, list all the fields
Chances are if you are asking users to enter information that you want stored, then you are going to need a database. Simply go through all the screens and write down the fields that you want saved. It is another chance to run through the fields and make sure you have everything (and for the contractor as well). If you are comfortable with it, it is also very helpful to indicate the data type of each field (eg - Number, Text, Image etc).

If the program is similar to another on the market, mention the other program
After you have fully described a screen or action, it is often handy to point to an already existing implementation. Instructions like ‘The screen should have the same search fields as ticketmaster.com’ or ‘the functionality should be the same as Google Suggest’. If the contractor can already see an example of what you are trying to achieve, then it makes it a lot easier for them.

If possible, choose someone who has already programmed what you want
Not always possible, but great when it is. An example is that I needed a stand-alone sudoku program written to offer my members. I put in the job spec that I would be more likely to choose a person that had already built one. In the 20 or so replies that I got, several proposals showed demos, and I chose one. It was a simple matter to get the programmer to customise it for me, and the project was completed quickly and successfully.

Choose someone who speaks your language fluently
As hard as you try, on any decent-sized project you will run into areas that you haven’t specified or other issues with your contractor. In the cases where you have to have in-depth discussions with your contractor it is going to help if you can talk freely and understand each other easily. Also, if there are language difficulties it is much more likely that the contractor will try and second-guess you rather than go to you for clarification on some point.

Get a walkthrough before final delivery
If your project is going to last longer than a week, then I highly recommend getting the contractor to demo the progress at some point (preferably half way). If you spot any problems they are going to be much easier to fix at this point than on the delivery day. Also, if you have set milestones for completion it is a great way to keep the project on time.

Thats all the major tips I can think of! The effort that you want to put into each of these areas depends on the size of the project; the larger the project is, the more management (both before and during) it is going to require.


If you liked this, then subscribe to my RSS feed

Leave a reply