How to hire (and work with) remote developers
Hiring a remote developer is usually a pain in the neck. Even if you find the right candidate, the road there is pretty tricky. You have to come up with a job “ad”, then go to some job board or your social network, then filter out the right candidates, then onboard them, and finally make it all work, remotely.
That’s what this big article is all about. Tips on every step of that process. In general, they all are pretty much common sense, but only when you’ve encountered the problems yourself, which happened to me, you pay attention to some details.
What we will cover here:
- Step 1: Define what you actually need
- Step 2: Spreading your job offer. WHERE to find developers?
- Step 3: Choosing the right candidate(s)
- Step 4: Effective work process
- Bonus: Tools for saving your time
Who am I to talk about it? I’m a PHP back-end developer with 15 years experience, recently transitioned from freelancing to hire freelancers for my team, both in-house and remote.
So I’ve seen the remote hiring problems from both ends — being hired, and hiring developers for my own needs. That’s what makes this article quite powerful — I will give you some tips as a developer, too.
That’s it for the short intro — let’s get into it, shall we?
Step 1: Define what you actually need
If you need to hire a developer, you should start from writing down the requirements for this position. First, define them for yourself, and then write it down in some form.
Usual question here is — how technical should you be? Should you mention specific languages or frameworks? Of course, the answer is “it depends”. If you’re looking for a particular knowledge, specify that. In general, “job ad” should have such structure:
- Briefly describe the position — it serves as a subject/title which decides whether the candidate would open it and read at all
- What project(s) or area the candidate would be working on?
- List of technologies required: actually, two lists — one with “must-haves”, and another with “good-to-haves”.
- Payment: hourly/daily/weekly/monthly rate or fixed-price or approximate budget. Be open and transparent — you will save yourself from answering questions from wrong type of candidates.
- Job conditions: full-time or part-time, additional requirements etc.
Simple, right? Well, yes and no. Basically, this job ad should look and sound like an ad. You’re selling your position to someone and you want to attract the right talent, so you have to convince them. You have to show directly or between the lines that:
- You’re a serious business person/company
- You’re good in writing (then you will be good at actually explaining the tasks)
- You respect candidates (with job conditions, salary and realistic expectations)
- You basically know what you need (not everyone does)
And last point — make your ad “reusable”, that you could post it to job board, send as a document or put on LinkedIn, with as few changes as possible.
Step 2: Spreading your job offer. WHERE to find developers?
Now, let’s get to distributing your job offer. Where to put it online? Basically, wherever. You can put it on your company website, or on any job board — the point is to have a link to point people to.
Next step — where to go to with this offer. Let’s start with basics.
- Go to your social network
Essentially, you should first ask around — share the job offer with your network, both personal colleagues and online followers. You can even make a kind of marketing campaign — by sending out an impressive job offer you may position your company as a cool place to work. But that’s a side effect, not the main goal.
Of course, the best place to share the offer is LinkedIn — it’s a network of professionals, after all. Then I would personally suggest Twitter — if you have a decent amount of followers, one or two of them might be perfect candidates for you.
2. Go to freelance job boards
Have you heard of Upwork.com? It’s no.1 source for freelancers these days after they merged Elance and oDesk together into Upwork. If you post your offer here, be prepared to get dozens or even hundreds of candidates from all over the world.
The next popular is Freelancer.com — also a lot of potential candidates there.
But actually, it’s not about the platform — they all work in pretty much the same way: you post an offer, and people are competing to win it. So here you might spend a lot of time trying to choose the right candidate. But it might be worth it.
Bare in mind that on these job boards people often compete on price. So you will get ridiculously cheap offers to code for $2-$5 per hour or so — don’t fall into that trap, these are people who usually take any work but are not experts in it.
How to choose the right candidate out of those gazilions of pitches? We will talk about it in detail in the next chapter, so stay tuned.
3. Go to specific job board for technology
Quite recently I saw a new trend emerging — websites similar to Upwork but focused on only one technology. For example, WordPress. I have a friend who works as a freelancer via Codeable.io — they position themselves as “#1 Outsourcing Service for WordPress”. The model here is a little different than Upwork and such — all the candidates have a real job interview to get onto the system, so Codeable guys take responsibility to offer you only the best of the best. But of course, it comes with a price — normal hourly rate for developer here starts from $60.
And I’m pretty sure there are similar projects with focus on different technologies or niches. So go to Google and look around.
4. Go to virtual recruiter
Ok, this is a term I’ve just made up. I want to share another new trend of companies who, like Codeable, are trying to be the recruiters and offer you only the best developers, but not focused on one technology. The best one I’ve heard so far is Toptal.com — they say that only 3% of candidates pass their job interview, which means that they take only the best of the best.
So if you want to hire someone professional (but not cheap), I suggest you explore this type of recruiting.
How to decide on price?
You probably have at least an approximate budget that you can spend on freelancer services. But in reality you will get different offers from the market — depending on where you would be looking for. How to decide who is too cheap or too expensive?
First thing to know — the price is most of the times not the level of developer, but a mirror of economical level of the world’s region where freelancer lives. US candidates cannot survive for less than 50 USD/hour, whereas in India or Philippines you can have luxurious live for 5 USD/hour. And code quality might be in some cases pretty similar. So don’t compare directly price to price only.
This leads me to my second point — the best choice is usually somewhere in the middle: the most expensive freelancers will usually be so expensive just because of where they live, but the cheapest ones would be usually the guys who “code for food” and won’t guarantee long-term results for you. Middle-range is where good working candidates are.
In terms of geography, again — a new trend: if 5 years ago it was popular to outsource work to India, now clients from US/UK/Australia have found a better market — Central and Eastern Europe. People who speak English quite well and their IT education level is pretty high, and it all comes with a reasonable price. To name a few countries — Serbia, Croatia, Ukraine, Lithuania (where I come from).
On the other hand, don’t look at JUST the country — there are always exceptions to the rule — you can find great developers from India and really lazy ones from UK/US.
So try to look for that mid-level price range candidates who seem to talk sense — we will discuss the actual filtering process in just a minute.
Step 3: Choosing the right candidate(s)
Be prepared to spend time: hire slow, fire fast
If you go to your networks or freelance job board discussed above, you might get dozens of offers from candidates. How to choose the best?
First thing to be clear about it take your time. Unless you’re in absolute rush to deliver project, slow down and actually look through all candidates carefully. Prepare for quite a long journey through the list — filtering out, then interviewing, then getting some more information from them etc. It might take a week, and it’s ok. If you make a choice right, that in the long run will save you more than one week, and money too.
You might even have a few stages of job interview — choose TOP 5 and then have a second talk with each of them, getting deeper into the project. Be creative here and don’t go too fast.
With that in mind, there’s another thing: if you feel that a freelancer is doing a poor job (technically or communicating) don’t be afraid to fire them. As early as possible, while the project isn’t too far ahead. Of course, you don’t have to let them go after the first mistakes, but there are certain “red flags” like disappearing for a week without notice, or constantly not testing their work properly.
And last important thing — be polite to everyone, even when rejecting offer. You never know when you meet the same people online unexpectedly in the future.
First filtering — without any interview
Now, let’s get to some “tricks” to filter out the wrong candidates — let’s take a look at first “red flags” which should scream from their offer that they are not the right fit.
Red flag 1: They haven’t read your job description
Happens a lot. There are freelancers and agencies who just go as fast as they can to send the offer in first minutes. Which means they haven’t properly read the description, which in essence mean that they don’t care about your project.
Red flag 2: They talk only about themselves
If the offer doesn’t say a word about your project/position, no question asked, just “me, me, me” style — run away from such candidates. Same as the previous point — they don’t give a crap about your project.
Red flag 3: Have low ratings (or bad feedback) on the system/internet
Every job board has some kind of rating system to give feedback for previous work. So if you see at least one bad rating, read the full feedback from previous client, you should probably see some red flag there.
Now, bare in mind — if a candidate has no rating at all, that doesn’t mean anything bad — they might be just a new on the platform, but it doesn’t make them a bad candidate for you. In fact, such people have double motivation to deliver and get the first positive rating points.
Also you can Google a person, find their LinkedIn/ blog / Twitter and form an impression about that person on a broader level.
What to look for in the candidates?
We’ve talked about “red flags”, but let’s turn it around — what are the good qualities which mean that they are a good fit for freelance work?
Good quality 1: Have been a freelancer before
If you deal with a person who is a first-time freelancer, you likely will have a lot of problems — time-management, responsibility level, too much optimism in estimates, potentially running back to full-time position etc. You need a freelancer who’s been there before and has gone through all that emotional rollercoaster of freelance work.
Good quality 2: They had worked remotely before
Same thing from a different angle — you don’t want them to have problems in communication or self-management, that is the core of freelancing. Also if they have remote work experience, that means all the technical problems have been solved — they will likely to have their own project management and communication tools, routines, and will make valuable suggestions for work process in general.
Good quality 3: Brilliant written and verbal communication
Since you will work remotely, you need to not waste time on translating each other’s words or conversations. That goes both for verbal and written communication — and not only with you, but with other members of your team. So if it’s English language — they need to speak and write well. And I don’t mean grammar — the goal is that you would understand each other instantly without external help or wasting time.
Good quality 4: Past projects like yours
Lastly, it’s a big plus — but optional — if a candidate has experience in your niche. Not in terms of technology or languages/frameworks, but has built a project to another business similar to yours. Or worked in a company with a similar field.
What should interview process look like?
Ok, so you have an already-filtered list of candidates, and you have to interview them to make a choice. How should it look and what questions you need to ask? Let’s break it down into stages.
Stage 1. Text-based answer with invitation for a video call
Politely reply to a candidate via job board messaging system or email or whatever you prefer, ask some additional questions and answer theirs, if any (a proper candidate should have had questions). And then invite them to a Skype call, at your suggested time. Decide for yourself, whether you want to invite them right away, or after a couple of messages back and forth to make another filter.
At this point you might already “feel” if you can work with this person. But I’m a strong believer in video calls or any face contact for an interview. No matter what platform it is — Skype, Hangouts or anything else — you have to talk to a person before hiring them. On the other hand, make sure that video interview stage is reached by maximum of 5 best candidates, and interview would last 30 mins max.
Stage 2. Video interview
Probably the most important part of the process. The agenda of this call might differ, but here’s what I suggest.
First, tell them again about the position or project, about the goals and possibly long-term vision. See how a candidate reacts — they have to have at least one question or comment about it. That would mean they actually listen and care about the project and about your business goals.
Then, ask them about their background and similar projects they had done. Phrase this question in a way that the candidate would have to improvise and share their thoughts on-the-fly, natural conversation is the best one. And see — I’m not telling you about their technical skills, but ask specifically about past experience with SIMILAR projects — if they have to, they will mention technological stuff as well. But that’s not the point — the main goal is for them to understand what you want to achieve with this job offer, and how can they use their past experience to help you.
Next phase, if they didn’t talk technical — let them do it. Ask a question around your project and how their skills fit in, again focus on your needs, not on what they bring “just because they can”. And the thing here — is that you don’t have to be technical yourself at all. The goal is to listen if a person can describe technical stuff in a way that makes sense, how they think, how they express their thoughts. And it’s ok if they haven’t worked with one or two technologies before, if they are small parts of the project and if the candidate is willing to pick it up.
Lastly, organizational details. They should be decided and agreed upon upfront. Money, agreements, working hours, deliverables, means and time of communication etc. And at this point you might see some disagreements from candidate — that can change your opinion about them, and vice versa.
At the end of the call, make sure to let them know the deadline of when you will actually make a choice. Give it a few days max.
Stage 3. Make your choice
At this point it’s just a matter of choice. You know a lot about candidates, don’t bother them more with questions or interrogations. Make a choice, but please reply to all candidates that you were talking to. Be polite and professional — you might need their help in the future.
Step 4: Effective work process
First days of onboarding are crucial
A lot of clients and employers make a very important mistake — they hire a freelancer and let them work on their own. Well, you’ve hired a smart person, they should handle it all themselves, right? Wrong. It’s really really important to help a freelancer within first days. Help them set up servers, give all access to necessary repositories or logins, help them meet the team etc.
The sooner a freelancer commits their first lines of code to real project, the sooner the whole work will move ahead. And if a freelancer has problems with something, you need to be the first to know and offer your help. Remember — it’s ok if they don’t know some detail or haven’t encountered something, you need to help.
If you hired the right person, expect a lot of questions from them in the first days. Be around and communicate a lot — it also makes freelancer feel welcomed. Psychology is pretty important — you have to make an effective team together.
Let them work whenever they want
If you didn’t specify working hours, which is quite typical with freelancers, don’t push them to be online all the time — it’s totally ok if they push results once or twice a day. That’s the beauty of freelance work, that’s why they chose it — if you want a full-timer, then you need to specify it within the job ad upfront.
Now, there’s a catch — you need results daily, whether those are code commits, or comments on tasks in project management system, or something else. So let them know you expect every day progress.
And another thing — working hours are important for communication. If you decide to discuss progress once a day, freelancer needs to be online at that particular time. Also, they need to be flexibly available if the team needs help or raise questions, so timezone issue might arise here. Just make sure both parties understand the time commitments and working hours.
Prepare the tasks properly
This is probably the number one most important thing when working with freelancers. By far. Cause without live contact in the office you don’t have emotional context of the tasks, so you need to prepare them in details from your end.
Even before the beginning of the job period, you have to be prepared. If this is a particular project, you should even attach its description and plan to the job ad — it also serves as additional filter.
Now, you don’t need to be too technical. Describe the tasks from the business side — what is the goal, how should the function work, who would use it etc. Then the freelancer can add technical details on top, after some discussion.
One important point here — be as visual as possible. Graphic files, mockups, screenshots, video screencasts, hand written sketches — whatever you have, it all helps to reduce possible misunderstandings. If you have examples of other similar projects elsewhere, also attach them to the task.
Final point on this — ask the freelancer to analyze the task and confirm that they understood it. Before starting to do anything with coding. You both have to spend time for preparation here. And you have to be clear on who does what — for example, you might have to prepare additional texts for the task at some point.
Hours: to count or not to count?
Quite often freelancers are hired on hourly rate basis. That’s fine. But what if the project has fixed price? Should you track the hours, how to do that effectively and what tools to use?
First thing — you should track hours. But most people think about it for the wrong reason — for sake of controlling freelancers and counting the actual paycheck amount. Actually, the real reason is the assessment of the speed of the freelancer’s work. And again — not to control the freelancer but to predict the deadlines for the future tasks.
Next topic — software to track the time. There are two types — real-time trackers like Upwork’s internal one, and start-stop type trackers like Toggl.com. Real-time tracking means that the software tracks what the freelancer is actually doing, by making screenshots of the screen and tracking time automatically. It might seem quite convenient, but for freelancer it’s totally disturbing — you cannot even check your email because you might get screenshot with your personal emails. So I would advice to not use those real-time trackers and stick to those like Toggl.
In terms of when to check the hours and view the reports, I would do that weekly or even bi-weekly, not more often. Cause sometimes one or two days might be less productive, and then several next days would have more working hours — so you cannot make any conclusions.
Bonus: Tools for saving your time
Next topic is tools for project and process management. I would divide those into three different types of software:
To prepare documents for specification or other stuff, don’t use anything fancy — in most of the cases Google Docs is more than enough. It also has all functions for collaborations — sharing the documents, or even live-editing. So it’s totally fine and FREE tool to use.
There are thousands of tools for managing the projects — I have two personal favorites: Trello and Asana. In fact, I use them both within my team — Asana is better for bigger picture of the project and for milestones, whereas Trello is better for everyday tasks and quick overview on what’s being done at the moment.
Have you heard of Slack? Who hasn’t these days? This tool basically replaced chats in Skype or Google Hangouts, it’s a team chat with a lot of extra functionality and integrations with external tools. So I strongly recommend to use it, and to integrate with external events — for example, you can get a message to the channel when a freelancer deploys code or pushes new code to the repository.
In addition, don’t forget Skype or some other video-chat tools. Cause it’s really important to have a live talk from time to time, just choose your own software.