How to Hire a Freelance Developer
About 4 years ago, I started to hire freelancers. Back then, I was running a business in the local market. I wanted to create the first mobile app to serve as mobile marketing reach. I didn’t know much about product development, or understand how a mobile business worked. I registered an account in Elance (now Upwork). I posted the 1st project with some rough designs using Illustrator. There were a bunch of applicants within an hour. While I was new to this, price became the deciding factor. I picked a cheaper one, which was a company applicant and started the work. After a few months, the result was ugly and unacceptable. I was so depressed, even though it didn’t cost much. I discontinued hiring freelancers thereafter.
Start with Why?
I started hiring freelancers again this year, as I want to spend more time with my newborn son. I was also reading books like 4-hour work week, articles like this, and watching video courses about Productivity and Selling Apps. The common suggestion is to outsource the work as much as possible.
What to outsource?
Let’s start with a step-by-step guide.
Look for references
I started by looking for a template I could use in hiring. I found this one about hiring virtual assistants. This was a good foundation.
Sign up for an Upwork account
I found Upwork to be the most direct way to reach my target developers. So, sign up and create a profile.
Post a job
I started a post using this template, e.g. My 20-hour iPhone App.
Go to Post a Job.
It is nice to reuse previous jobs. It saves a lot of time in posting.
Choose a category and sub category. (This is crucial for Upwork to make suggestions for you)
Set the job name with a precise need, e.g. App Development using iOS 9 New Feature: 3D Touch.
Developers usually won’t want to spend too much time in guessing what you want. They would prefer long term co-opeartion. Thus, it is better for Ongoing work.
I use the following template:
I am looking for an amazing iOS Swift developer to help me resolve this issue.
Your tasks would include;
- [task one]
- [task two]
- [task three]
- Have fun
You should have knowledge of [enter skills here], as well as be fluent in English (verbal and written).
Tell me more about you when you apply. We will tell you more about the position.
If you apply for the job, please answer this question in the first line of your response: two+six = ?
If you do not respond to this question, you will not be considered, as we will assume that you have not read the job.
I look forward to hearing from you! :)
Keep the post interesting, some developers make comments to me that they like the task of having fun. For the math question, there are many funny coding answers too.
Filter and Invite
There is a wealth of developers around the World. I got more than 10 applicants in the next hour. To make a effective hire, you could go through some filtering tricks.
Upwork will make suggestions to you for 10 candidates, just Invite all to Apply. You don’t need to read their details at this moment. Those not interested in your job will decline, the rest will send you a cover letter. There will be some other applications as well. Aim for around 10 applicants.
Once you receive enough applications, you can start to filter those who are not suitable. If the candidate did not reply to your math question, I immediately hide them. These people are usually the account manager of an agency, and just copy their template text. Development is knowledge work, clear understanding of the user’s need is important. We target the actual developers.
You don’t need to read much of their cover letter, especially the links to previous projects. It does not prove who makes those apps.
Choose around 5 candidates and schedule a Skype interview. The interview is a way to test communication skills. When you are not a developer, it is hard to judge technical skill levels. Instead, if the freelancer has good communication skills, he could explain to you how he did his work.
It is now time to read the cover letter, just before the call. This is the time to learn about the candidate. You may want to ask questions based on the cover letter as well.
Don’t choose too many candidates to interview at once. It is exhausting. Keep the call within 10 minutes, and make sure it is a call. Video is preferrable. Text messages do not demonstrate communication skills. I had cases where developers mention that they do not want to speak. I disqualified them immediately.
Here are 3 questions I ask.
1. Do you have any recent work at Upwork? — This will let you know recent availability, and will usually get you access to portfolio links. Ask the freelancer to explain the technologies used in those projects. Catch the keywords related to your task.
2. What other skills do you have? — Generally freelance developers come from a professional background. They work on multiple platforms as a freelancer. They may have some skills that are suitable to other parts of your projects.
3. Which skill do you think you are most proficient in? — Many freelancers will just answer based on your task, as they want the work. In fact, focus on observing their attitudes. You could notice whether they are passionate about their skills, and honest about the answers.
I always ask the same set of questions. It helps to compare candidates. The answers do not prove their skills. What’s more important is to understand their communication skills. You would want a developer to work with a team of other freelancers, rather than a talent who only works on his own.
Freelancers like to make estimates based on time, even in a project-based task.
I will provide a small task with detailed requirements, sometimes with mock-ups. I will also state that I am a tech person and knows about the job I am offering. The freelancer will be more comfortable in communicating with technical terms.
I will ask them for an estimate of time on two areas:
1. Time needed to complete the task, and
2. the expected delivery date.
By checking the time estimate and each freelancer’s hourly rate, I will have the quote. If this is with a budget I set beforehand, I will give it a try.
Rates and Payment
The rate range for freelancers is very wide.
In my experience, Indian and Asian generally set a pretty low rate which is between $10–15 per hour. East Europe has a rate of around $20–40 per hour. US is about $50–60.
Be aware of the hourly rate. An MBA freelancer could charge a high price without knowing the skills required. A low hourly rate could make for a 10X longer time estimate.
Payments are charged each week and paid to the freelancers automatically.
Make sure to ask your freelancers to use the Upwork Time Tracker to log the work. It will take screenshots automatically, and you can check the work later.
I prefer to ask the candidate to work on small paying tasks, usually a few hours to a day of work. After that I can check their code quality, and understand how much time they really need. Only real work shows their capabilities.
Ask the freelancer to explain the work to you after a day. If that doesn’t work out how you want, just let them know and stop the work. Be respectful to the freelancer, pay the small task as promised. They spent real time in helping you out.
It doesn’t hurt to hire two in a role and compare who performs better. You will soon find that talented developers are never enough.
Now that you have hired someone, you will want to understand the working progress. Make sure you ask the developer to commit source code to an online repository. You can use services like GitHub andBitBucket.
GitHub is the most popular way nowadays to save the source code of projects. It could help to backup incrementally, and also provide a way to trace the changes in the project over time. It is a must-do for any development project.
Sign up to GitHub here.
Besides this, ask the freelancer to send you daily updates on three bullet points. This is what we called Stand-up meetings in Agile Development.
- What did I do yesterday?
- What will I do today?
- Is there any roadblock?
You can reply to these questions any time. I usually do it only in the mornings.
Not every freelancer will be a good fit. The following is my experience:
6 out of 10 will reply.
5 of them will make the call, most of them are voice chat only.
2 of them I immediately find are not a good fit, either he does not know what he is saying, or he asks the colleague next to him.
4 of them will make the time estimate.
1 of them will charge a low rate, but generally estimate a long time frame.
1 of them will get started, and I will have 1 more as a backup.
Since these are development projects, some tools are common for any developer. I use these to keep in touch with them:
- GitHub — Keep the source code and issues, thoughts etc.
- Skype — Most freelancers have this, you can share screens as well. It is good to look at how the project is made.
- Dropbox — Share mock-ups, image files or other documents easily.
If you want to consult me on the hiring process, feel free to ping me.
If you want to know the cost to make an app, you should take a look at CostToMakeAnApp. A team member can talk to you in person for a detailed estimate and strategy.