How to Hire a Developer on oDesk

by Jonathan Einkauf

Entrepreneurs, especially those without a technical background, are often overwhelmed when it comes to building a prototype or minimum viable product (MVP). Some entrepreneurs are able to recruit a technical co-founder while others attempt to teach themselves basic programming. The first approach may require (prematurely) giving up significant equity and the second approach requires considerable time and patience. I recommend that non-technical founders instead use a service like oDesk or Elance to outsource the development of their MVP.

You can save a lot of time and money by going through oDesk (the largest online outsourcing platform). By outsourcing the MVP you can get to market faster, get customer feedback sooner, and iterate faster and cheaper. However, if you are not careful you can also lose a lot of time and money.

To help people who are new to oDesk, I put together the following step-by-step guide. This is based on my own experience. I would love to hear if anyone has any comments or suggestions based on their own experiences using oDesk or a similar service.

  1. Create an account with oDesk; set up and verify a payment method (e.g. credit card).
  2. Post your job. You will need to include: 
    1. A job description: A good job description will provide a high-level overview of what you want and make the job sound interesting to developers. I would aim for 100-200 words. This job description will be reposted on dozens of other job boards so you should be careful about how much detail you go into. (I made the mistake of going into too much detail in the initial job positing.) 
    2. A list of required skills (e.g. SQL, PHP, etc.). If you are not technical I suggest talking to a friend who is to get some ideas. If you are building a static website you will need HTML, CSS, and Javascript. If it is a dynamic website (e.g. there is a database back-end) you will also need mySQL and PHP. If you are building a mobile website you will need HTML5. If you are building a native Android app you will need Java and Android experience; for native iPhone/iPad apps you will need Objective C and iOS. 
    3. Payment type (fixed price or hourly). If you have a pretty good idea of what you want and you don’t envision making changes, I suggest going with fixed price to eliminate the risk of unexpected cost increases. I suggest paying by the hour if you want to be able to make changes after development has started. If you go with fixed price and end up having to make changes you will need to negotiate with your developer. 
    4. Your budget (e.g. $1000 fixed or $20 per hour). In general, the higher the budget the more developers will apply. Indian developers typically charge $15-20 an hour; US developers often charge twice as much. For fixed price jobs you can look at other job postings and/or talk to a technical friend to get a sense of what you should pay. Depending on the complexity, a basic website will cost $1000-$3000 using an offshore developer. 
    5. Planned start date. I suggest picking a start date around one week from the job posting date to give yourself enough time to interview developers. (I made the mistake of selecting ‘start immediately.’) 
    6. The expected delivery date. Talk to a technical friend or review other job postings to estimate how long the project should take. A basic website should not take more than a few weeks.
Here is a screenshot of what my job post looked like:

  1. Recruit developers to apply for your job.
    1. As soon as you post the job developers will begin ‘applying’ for it. Depending on the job, the budget, etc. you will probably get 10-20 applications within 2-3 days.
    2. On the “Recruit” tab click on “Find Contractors” to search for developers who fit the profile you are seeking and invite them to apply for your job. Developers you personally invite will often be the best qualified. Around half of the developers I invited ended up applying for the job. 

oDesk will show you a list of everyone who applied for your job:

  1. Screen the candidates and decide who to interview. You probably want to interview 5-6 candidates. A few tips:
    1. Decline any developer with a quality score below 4.6/5.0, fewer than 100 hours on oDesk, or fewer than 3 completed projects. Quality scores on oDesk tend to be inflated and you want to make sure that there is sufficient work history that the quality score is meaningful.
    2. Decline any developer who does not have the skills you are seeking. Some developers take skills tests (e.g. PHP, HTML) and oDesk shows you their percentile score. If they scored poorly or have not taken a test in a skill they claim you should decline them. 
    3. Look at what types of projects the developer has worked on in the past, how much they were paid, and the feedback they received. If you need someone to build a dynamic website and a developer’s work history shows a series of $300-$500 projects or there are red flags in their feedback you should decline them. 
    4. Invite candidates you want to interview to have a 20-30 minute discussion on Skype. It may take a couple days to exchange Skype screen names and find a convenient day/time. oDesk provides a convenient messaging service to coordinate this. 

To screen candidates you should review their profile. Here is an example:

  1. Interview the top 5-6 candidates. The goal of the interview is to select 2 or 3 ‘finalists.’ Here are a few tips: 
    1. During the interview you can go into greater detail about the project and what you are looking for in a developer
    2. Ask the developer some open-ended questions to evaluate their comfort with English and their ability to communicate clearly 
    3. Ask the developer to tell you about similar projects they have done to evaluate their level of experience with your type of project 
    4. Ask the developer for a rough time/cost estimate. When I did this I got one estimate that was 3 times the average of the other estimates. 
    5. Ask whether they will personally be doing the work. This is important because oftentimes the person you are speaking to is just the ‘project manager’. I don’t think this is a deal-breaker but you should think carefully about the pros (e.g. lower cost) and cons (e.g. communication is slower) of this kind of arrangement 
    6. Ask whether they will be working fulltime or part-time on your project. I think it is better if they are working full-time to make sure your project does not get delayed because of issues on another project
  2. Collect detailed bids 
    1. Send your wireframe and/or detailed requirements document to the 2 or 3 finalists and ask them for a fixed price bid or a detailed time estimate
    2. Make it clear that they are bidding against a small number of other developers (so the bids are competitively priced) 
    3. If the developers have any questions or concerns you can have another conversation on Skype
  3. Hire a developer 
    1. Once you have selected the developer, send them a contract (through oDesk) that spells out the requirements and the payment schedule (e.g. half up-front, half upon completion) 
    2. You can also tie payments to the completion of certain milestones. I did not do this and wish that I had 
    3. You should be extremely specific when specifying the milestones/requirements in case there are any questions/problems later on 
    4. After the developer has accepted the contract you should notify other candidates that they were not selected
  4. Once the work begins: 
    1. You should check-in regularly with your developer. For a 3 week project you may want to check in every other day; for a longer project once a week may be sufficient
    2. Make sure you always have access to the code. For example, you can ask the developer to store it in a shared Dropbox folder. You do not want to be in a situation where your contractor demands more money to hand over the code
    3. Before you release the final payment to the developer you should make sure that all of the requirements have been met and the product is free of any bugs or issues. I found that I had to spend a significant amount of time de-bugging
    4. You need to stand your ground if the developer asks for more money because “the project is taking longer than expected” or if they want payment before everything is complete. I encountered this problem and I’m glad I held firm. It’s a lot easier if your original contract/milestones are clear and specific!
Good luck!


Popular posts from this blog

TCS IT Wiz 2013 Bhubaneswar Prelims

What Can be Done About Technical Debt?

Don’t code: 5 steps to an outsourced MVP