How to Hire a Freelance Programmer

Hiring a freelancer can be a daunting task. I’m not a recruiter or an IT manager, and I used to struggle to find freelance technical talent.  I’d either scour through hundreds of resumes or hire someone without completely understanding the technical mumbo jumbo and knowing if they were really qualified….and then finding out when it was way too late that they weren’t.

Where to Look: Find Programmers on Elance

I needed a better approach.  But when I searched the Internet for tips on hiring freelancers, all I found were lists of freelancing websites, not advice on how to use them properly.

Freelance web programmerThen someone suggested to me that rather than focusing on interviews, I should hire a few freelancers to all complete the same small assignment at the same time. When the job is done, my decision should be obvious.   Since I started using this method I’ve hired several great freelancers and the process has become so much easier!   So to help you I’m sharing the details of this hiring strategy and a step-by-step guide to find and hire the right freelance software developer.

1. Ask Around for Referrals

Before you take the time to search for freelancers online, ask your network of friends, family, colleagues, or fellow bloggers if they know of any skilled programmers.  A good referral will save you time, energy, and reduce your risk.  Before I start a search for any freelancer, I try to think if there is anyone I know that has been in a similar situation and has a good recommendation.

2. Know the Skills You’re Looking for (or Admit You Don’t)

If you’re technically savvy and already have an idea of the type of expertise you want, skip to the next step.  But if you’re not technical or don’t know the coding skills you need here are your best options: 

  1. Get a technology recommendation from someone who’s done it before.  If you’re a blogger creating a new site, find a blog with a design you like and reach out to the author.  Find a contact email and pay her a compliment on the design and ask for advice.   If you’ve got an idea for a new iPhone application, go to an Apple networking event and meet like-minded entrepreneurs.  Etc., etc.
  2. Leave technology out of the assignment.  Don’t list out random technologies and programming languages without knowing if you need them.  It’s ok to leave the technical architecture up to the experts.  Instead, just provide the business requirements and ask for a technology recommendation along with a freelancer’s bid.  For example,  

I would like someone to build a website and blog based on several image files.  The image files were created by a graphic designer and I would like a fully functional website that matches them exactly.   My priorities are to have a blog that is easy to maintain and the website should be optimized for search engines.

Along with your bid, could you please detail what programming language(s) and blogging platform you suggest using to design my website?

Update: vWorker has an interesting new type of freelancer called a Tech Sherpa.  Just like mountain guides in the Himalayas, Tech Sherpas help lead you through the technical aspects of a project.  If you have the budget this may be an option worth investigating.

3. Create a Test Assignment

There are a lot of bad eggs out there and it’s hard to evaluate a freelance software developer based on a resume alone.  The best way to evaluate practical skills is to put them into action.

A test assignment doesn’t have to be an imaginary project.  Why not make it something you can actually use?  Try to identify a small, discrete development job that you need for your business or website.   Come up with something that can be completed in less than 2 days. Create your write-up in a text editor so you can easily copy and paste it into a job posting.  Try to limit it to 1-2 pages.

Key Components of your Test assignment

When designing your test assignment you’ll not only want to prove competency in programming skills, but also make sure…

  • The programmer has the ability to estimate work effort and complete tasks on time.
  • The programmer’s workstation has all the necessary development tools.
  • The programmer has an adequate office-like environment.
  • The programmer can communicate well (verbal and written).   Can the developer explain what he’s done?  If he had questions about the assignment, did he look for clarification or just make assumptions?
  • The programmer is available in the hours you need to communicate with her.  If you plan to talk with her regularly and she work overseas, is she willing to change her schedule to overlap with yours?

Below is an example of a test assignment that will help you evaluate your candidates.

I am hiring a web developer to build a Beta version of my website. If this assignment is completed well, there will be the potential for additional, long term work.

Required Skills: XHTML, CSS, PHP, MYSQL, JavaScript, WordPress

Site History: Feedback rating of at least a 4.0 with minimum 50 hours experience.

Language: Must be fluent in written English with basic verbal skills.

Job Description:

–          Using a website design from a PhotoShop (.psd) file that I will provide, create a website on the WordPress platform. The WordPress installation will consist of two page designs: a blog template and a single page template.

–          Developer must host the website on their own development site.

–          Developer must email me a written description of their solution and attach a zip file containing all source code.

–          Developer must demonstrate and explain their solution on a phone call (Skype is fine) between the hours of 9am and 5pm EDT.

IMPORTANT: To prove you’ve read this assignment, please write I READ YOUR REQUIREMENTS in the first line of your bid.  I will eliminate all bids that do not start with this phrase since many people do not read requirements.

I always include the “Important” statement at the end in order to weed out candidates that don’t read the assignment.  You’d be surprised at how many responses you’ll get from freelancers who have never bothered to read your whole posting and may not be qualified.

4. Post your test assignment on several freelance websites at once

The reason you want to use multiple sites is to get a variety of responses.  You’re going to hire 3 to 4 resources to complete this test.  At the end of the assignment, you’ll be able to evaluate results and hire the highest quality freelancer.

freelance software developersOpen an account on each of these popular freelance websites:

 

If you were holding interviews in an office, you wouldn’t interview just one candidate, right?  The same principle applies to online freelancers.  You’ll need to test out several freelancers to find the right one for your business.  Sure, you are paying for the same assignment to be completed multiple times, but the end result will save you money in the long run.

You may find some freelancers that will complete the assignment for little or no cost at the prospect of long term work.   The best freelancer I ever hired offered to do the test assignment for free.

Ask for a fixed bid quote rather than hourly (although when you ask questions, find out a candidate’s hourly rate for longer term work).  And if the freelancing site requires that you set a budget, try to estimate a reasonable amount (not too high and not too low).  Most candidates will set their bids near your max amount so you don’t want to go too high.  But if you budget too little, you may get very few responses.  Don’t worry too much about the amount, in the next step you’ll try to negotiate a lower fee for the assignment.

Tip for higher quality candidates and proposals:

When you create a free job post on Elance, add your credit card number to your account. When you do this, a Payment Verified Seal payment verified seal will appear next to your job post, which indicates to contractors that you are more serious about the job and results in higher quality candidates and proposals.

5. Select Your Candidates for the Test Assignment

Within 24 hours you should get a lot of offers.  Immediately disqualify any that do not have your statement “I READ THE REQUIREMENTS…” at the top.  Again, you don’t want a developer that is not thorough.

Look for developers with several positive reviews.  Past experience is a key indicator of future performance.  Make sure the hours on those reviews add up to a reasonable amount of time.   It should be a red flag if you see several positive reviews for one hour long projects.  These could easily be made up reviews by dummy accounts established to make the developer look good.

You can track each of your candidates in this freelancer comparison worksheet I created.  It makes it easy to keep track and compare candidates across freelancing sites.  I’ve also added a section for “last action” so it’s easy for you to remember where each candidate is in the hiring process.

Consider inviting one or two top notch freelancers to bid

Almost every freelancing website provides you the ability to read through profiles and send a request for proposal to specific individuals.  If you’re in a hurry, you may have a harder time finding a freelancer that is currently available, but this might be a way to find an expert in your desired field.

Before awarding the project it’s a good idea to ask a few questions through the freelancing website (there’s usually a button to “send a message” to the freelancer).  Most candidates have a ton of programming languages listed and it can be hard to tell if they are really proficient in your desired area.  I like to ask candidates to provide examples of similar assignments they’ve completed.   Also, now is the time to negotiate price.  If you list a project budget of $200, most candidates will bid $200 but will be willing to work for less.  I try to see if there is any wiggle room using language like this:

“…The budget of my job posting was listed at a maximum of $200, but I was hoping to accomplish this task for less and have received lower offers.  Also, the main reason for this assignment is to evaluate candidates for potential long term work.  If the project is completely successfully, would you be interested in long term work?  And would you be able to lower your bid at all?”

As I mentioned, some smart resources will even offer to do a test assignment for free.  But don’t be a hard-ass about this.  Many freelancers are living in poor countries and may not be able to afford to take risks on assignments that might not result in enough money.

Do not give out your personal information at this point. The last thing you want is developers that you reject to call, email, or chat with you after they’ve been rejected…begging for work.  And believe me, some people can be very persistent (not in a good way).  Once you hire someone long term, then you can share your info.

Don’t be afraid if a recruiter responds on behalf of another developer.  I’ve actually found some of my best resources this way.  One positive is that the recruiter has to do some due diligence of their own before they hire someone.  Another is if you have a long term resource and something comes up, the recruiter can sometimes help replace that resource with someone else from their company.  If you do use a recruiter to find a long term freelancer, just make sure you’re able to talk to the resource directly and that he is assigned to your long term project upon completion of the test, not someone else.  Also, keep in mind that these freelancers may be a little more expensive since the recruiter needs to make some margin.  But depending on their country, they may still be cheaper than other individuals freelancing on their own.

6. Evaluate Completed Assignments and Hire a Programmer

Most freelance developers will be familiar with free screen sharing applications they can use to demonstrate their solution.  If they’re not, you should be a little worried, but you can suggest using Skype or Join.me.

If possible, don’t just do a Skype call, but do a video chat to check out his office environment.  Is he in a shared office space, working from home with kids running around, or in an Internet cafe?

At this point there’s a good chance you’ve found one or more quality developers.  Reach out to him and confirm he’s interested in longer term work.  If any of the other resources inquire about long term work, be honest with them but maintain a good relationship.  If any of them are qualified, feel free to ask them to keep in touch as you may have an opening in the future.

Negotiate: You may be able to negotiate a lower hourly rate by offering long term work (not always, but often). Freelancers that do a lot of short term work must set their rates slightly higher in order to cover the inconsistent flow of revenue and potential days where they are not working.  Also, a rate listed in a profile is what a freelancer wants to get paid, but not always what they are willing to accept.  Think about it…when you are job hunting do you start looking for high salary jobs first or do you immediately say you’ll work for less?  You’d start out looking for as high a salary as possible.  For example, if a developer is looking for $20/hour, see if they would be willing to accept $17/hour for a 6 month project.

Tip: To figure out what to pay a developer and average hourly rates by skill, checkout this breakdown from Elance.

At this point, hopefully you’ve found a quality developer to join your team.  And if you haven’t yet found a good option, try tweaking your assignment and resubmitting it, but perhaps with a slightly higher budget.

If you have more tips about finding or hiring web programmers, please share them in the comments.