Tuesday, January 8, 2013

How to find a good freelance developer

A bunch of people have asked me recently how to find good contract developers. I’ve done this quite a few times now and feel like I now have a pretty good system for selecting quality freelancers at good fixed prices.

I can tell that this system works because on my last two contract projects I received an average of 100 bids per posting (spread across 3 different sites) and both hires ended up blowing me away with the quality, speed, and price of their work. I have viewed many friends’ postings that have received 10 or fewer bids, many of which were low quality. I’ll take you through what I do to give myself better developer options.

Step 1

Write a great specification of the work you want done. There are a lot of reasons why this is important.

First, the best freelance developers are more likely to place bids if they know the scope of the work. When they don’t know the scope of the work it becomes dangerous for them to place a fixed price bid because they might end up doing far more work than they had hoped. These developers care a lot about their aggregate ratings on these freelance sites and will make sure they do everything in their power to make their customer happy and get a top rating. If you lay out a detailed specification, they know exactly what it will take and are no longer scared that you have a list of features up your sleeve that you want them to implement as well.

Basically a great specification will tell the potential hire that you know what you’re doing and that you will be pleasant to work with.

Second, you will need to define all of these features at some point anyway so you might as well do it right up front in order to gain the benefit of finding the best possible developer. It’s a good exercise to fully define your product as you will find tricky parts you hadn’t thought of while simply thinking about your product at a high level. The earlier you think about and address these tricky bits, the less costly it will be to implement well.

Here’s an example of a spec I wrote recently that received 110 bids, at least 8 of which were very high quality: https://docs.google.com/document/d/15c6n6HAUoa5SDP7TlGU_sljpdIA_8doe3h2Kbi9VcoM/edit

Step 2

Post your spec to elance.com without setting a price. They allow you to not specify your budget or expected price. By posting it without a price you can wait for the bids to roll in and you’ll start to get a good idea of how much this job should cost.

Step 3

Take the expected cost determined in step two and post the same spec to odesk and freelancer.com. There are plenty of other freelance sites out there so you are free to post to those as well. I have had great luck with those three sites (elance, odesk, and freelancer) and can confidently say there are some very high quality developers on each of these sites who will come out of the woodwork if your spec is good.

Step 4

Wait. It’s tempting to hire the first competent person who submits a good bid, but you will get plenty more if you wait. Be patient and wait for the bids to start slowing down. 2-3 days should be enough.

Step 5

Narrow down the bids to find the right developer. This can seem overwhelming at first but if you do it systematically you can do it in about 2-4 hours. Here’s what I do:

  1. Narrow down the field based on their bid price, their quantitative ratings, and the amount of work they’ve done in the past. After keeping only people with 4.9+ ratings, a significant amount of work, and a very good bid price the field usually narrows to about 10.
  2. Briefly glance at each of the top 10 applicants’ portfolios and take a look at their communication skills in their messages with you or on their profile page. Eliminate all but the very best. Hopefully you’ll be down to your last 2-4 people now.
  3. Choosing from these last few is the toughest step and for this I tend to choose the person I think would make the best long term hire. English speaking ability and the general vibe I get from the person play a big role here. Of course this is just a contract project, but while working with this person you will build up a relationship and if they produce high quality work the chances are you will want to hire them for work in the future as well.

Final Note

If your project is big you may want to break it up into small pieces. For instance you can write the spec for just a small part of your application so if you end up hiring someone who produces low quality work, you won't lose much because you haven't invested much. I view the first job I award someone as an interview to some extent. If you like that person you can always hire him/her for the rest of your project.

Good luck!