Wednesday 2 June 2010

How To Outsource Programming

After years spent managing a team of developers, I had slipped up with my own personal project. Here is my account of my mistake with a relaxed approach to using a freelancer, and how I fixed it.

I am having a web application built for the project I am working on. You may know that I used to run a company that sold software development services, so this should be a breeze for me right? Well, it should, but for some unknown reason I took a relaxed approach when using my own money and thought I could just hire a freelancer and explain what I wanted. Ha! I was very wrong.

After 3 months of going round in circles my friend Phil stepped in and pointed out where I was going wrong. For some reason I had left my professional methodology in the office and was taking what people said at face value. I went back to drawing board and developed a simple system (with Phil's guidance, who is much better than me at specifications), for getting software designed with a freelancer without the headache.

Here are the main points:

1. Make detailed specs for everything, never work from converations.

Create a document that describes exactly what you want. Imagine the person reading the document is a little bit retarded. Use examples, and create verbose specs. My original specs were around 10 pages and assumed the developer knew what I was trying to do. After re-writing them they came to closer to 60 pages.

If you have a chat with developer and something changes. Update the spec or ask them to do it. Make sure your spec is always current and keep a version history of all edits. Never leave instructions in a text or voice chat. Make sure there is a document that you are working from at al times. This way if the work doesn't match the document you are in a strong position, and not arguing about who said what in your last conversation.

2. Create prototypes before any code is written

A prototype screen is basically the design of the application, all the buttons and inputs, but it doesn'e work. This only takes a developer a few minutes to put together but will save a lot of time, money and hassle. I found myself waiting several weeks for a developer to show me something, and when he did it looked like a dogs dinner.

This is something that my company always did religiously, and for some reason I didn't ask for it when on the other side of the counter. Prototype screens let you quickly work out how you want the application to look before any coding is done, so when you get a product at the end, it is exactly what you want and expected.

3. Create details "acceptance use cases" ****MOST IMPORTANT****

This is critical! Create a big list of everything the software will do. Break it down into sections. Then tell your developers, once you can do each list, they will get paid.

This is a simple idea but soooo good. All I do when I get my software is get my list of things out and run through it trying to do each task and if any of the tasks is not as described, they don't get their money until it is fixed.

4. Used fixed price, with milestones and demand discounts for late work.

With good specs and acceptance use cases you will be able to create several milestones. These are key parts/features of the software. Each milestone will have an acceptance use case associated with it, and when you can complete all use caseses successfully they get the milestone payment.

By getting all milestones priced ahead of schedule you know exactly how much the software will cost you.

I use Odesk for the work and put it through their system. the developer has to specify a deadline date and if they go over it you have the power to demand a discount due to them not keeping with their deadlines.

It is important to not set your milestones too large or it can cause problems. If you let developers set their own milestones they will try and make as few as possible and get big desposit upfront. I like to make several milestones and offer no payment upfront. I only pay on completion of work. I can do this as I have a good buyer history on Odesk. 5/5 reviews and 5 figures spent on my account. If you have a new account you may need to pay a deposit upfront, just make sure its not too much.

Hope that is food for though