Tip 1: Aim high for Communication & Responsiveness
If you are hiring remote developers, the value of communications cannot be understated. When interviewing developers, briefly describe the problem you are trying to solve and let them come up with possible solutions. Ask them to restate the problem first. Make sure no significant points are lost in translation. This also gives you a chance to hear out how they will communicate with you in the future. Look for clarity, correctness, brevity. Ask them to explain a simple concept to a hypothetical non-technical person. (ex: explain the concept a “database” to a 7 year old child or grandma). Being able to understand each other is key for all future interactions. Also, remember that many of the developers are non-native speakers, so be patient and reasonable. As long as the message flows clearly and effortless in both directions, don’t be too picky about the grammar or accent. Some developers are also more comfortable with written English and less comfortable with speech. You have to have a baseline of what’s workable and acceptable to you.
In terms of responsiveness, take note on how quickly they responded to each of your messages (emails, chats, text messages). Did they respond to your appointment request after 2 minutes, 2 hours or 2 days? Are they available and flexible if you need to reschedule? If they are not responsive at the beginning, don’t expect that to change during the project.
When working with remote developers, the communication tool of choice is Skype. If you don’t already have an account, sign up for one at http://www.skype.com It’s free and pretty easy to use. Skype can be used for chat, voice calls, video calls or screen sharing which is great for demos.
Tip 2: Effective Job Description
A job description doesn’t have to be lengthy, but they need to be clear and effective.
The basic part of an effective job posting are:
Skills or experience required
How to apply
To help you jump start, here is a list frequently used job descriptions I have used in the past. (Developers, Quality Assurance Engineers, Business Analyst / Product Manager, Database Administrators) Take it, adapt it, and use it for your next hire. Another way you can write a job description is to find job postings on classified websites such as craigslist and adapt it from there. It will save you tons of time especially if you don’t have a technical resource in house.
3. Don’t Go for Cheap. Go for effective
From a cost perspective, the cheapest candidate may not always be the best candidate to hire. Low cost resources are often newbies who don’t have the necessary experience or is desperate for projects because they couldn’t keep their last one. However, being the cheapest doesn’t automatically disqualify them either. There are a couple tricks that I use to filter for the right candidates quickly: 1. filter by price (lowest first) 2. filter by number of hours worked (highest first). If I filter by lowest price, I will traverse the list to find the cheapest developer with the best profile / experience and invite them for interview. If I filter by number of hours (highest first), this will show me the developers that have a long work history and i can see how much they’re asking. Check for client reviews, total number of hours worked, samples of previous work, their current star rating, asking price, etc.
Where do you find candidates? There are many online job and freelancer marketplaces such as Elance, UpWork, Freelancer.com, OnlineJobs.ph, People Per Hour. If their profile or resume have relevant keywords to your position and their profile appear stronger comparatively, then mark them down for an actual interview. For a cost conscious startup where cash is the oxygen, how much is the right price to pay? If you use my tricks above you will get an general idea for any freelancer. In working with freelancer for over 15 years I have a pretty good idea what’s a fair price to pay for developers around the world. Click here to find out more about how much to pay developers from around the world.
4. Master the Interview
Don’t underestimate the subtle difference between a programmer, a software engineer or computer scientist. Computer Science degree training from one country varies significantly from one country to another, with cultural differences affecting the potential of a developer. For example: Indian developers tend to be hesitant in asking questions. They will tell you that they understand the requirement and would rather make assumptions than to send you an email to ask for clarification. This can be costly from a time and cost perspective. The purpose of a technical interview is to ensure that they have what it takes to succeed. Many applicants will tell you they have 5 years of experience in a given language, but 5 years of experience isn’t always a good measure of ability. A great developer can turn around projects in minutes or hours, while a less experienced developer could take days or weeks given the same problem.
During technical interviews, we want to verify they have great problem solving skills: give them a problem and have them come up with a technical solution. The interview doesn’t have to be a specific programming language. You’re looking for solid computer science fundamentals. (ex: write a factorial function using recursion). You’d be surprised how many programmers don’t know what this is and perform the task incorrectly. Their coding and thinking speed during interviews is going to reflect how they do on projects. Great engineers can normally learn a new language in a very short amount of time, but great application / software engineering skills, data architecture and performance consciousness is not something that can be easily learned by someone who just read a book to learn programming in 30 days. If you’re not a technical hiring manager, take a look at the current list of the interview questions we ask. If you can enlist the help of a technical friend for the job interview – that’s definitely a good way to go.
Bonus Tip: Use a shared Google Doc as the whiteboard during the interview; both the applicant and the interviewer will be able to view work in progress and collaborate.
5. Pay for a Trial
Once you have short listed a few candidates after the round of interviews, decide who to invite for a paid trial project to work on. Tell them you are willing to pay up to 2-3 hours of their time a a fixed cost that they must completed ASAP. It could be part of a real project or a mock project that tests their skills, accuracy and speed. Sometimes you can get away with unpaid trials, but most applications especially if they’re good will not be willing to participate. Having said that I have actually asked for unpaid trials before, and actually hired one of my best teams that way. The developer was able to learn a new framework and turned around with a correct solution in less than 24 hours. Most of the other teams just beat around the bush and took several days to return a slow and incorrect solution or they simply disappeared from the radar. Great developers are uncommon, but they’re out there. Pay them well if you find them; they are worth their weight in gold. I don’t always pay for trial projects, but if this is your first hiring of technical specialists, this is a great way to mitigate your risks. Try before you buy.
Hiring right will save you headaches and precious cash dollars and extend your runway as a startup. Many freelancers have a short term “mercenary” mentality. Get in, get it fixed and get out. Which means their solution maybe not always be the soundest solution given the time and cost constraints. Hiring an efficient and qualified development resource is key to early stage startup success. Defining your MVP or product early on and doing your due diligence to vet out the engineering candidates will lead to a stronger technical team without spending preposterous amount of precious startup capital.