markrabo.com

View Original

How to hire a remote freelancer

As a non-technical founder you have to get good at finding good people

I consider myself non-technical, in the sense that I couldn't program my own app. So to build anything software-based I need to hire people. I’m writing this post because I feel I’ve found an approach that works and could help other non-technical people who want to build their own thing. Some tips are specific to programming, but most are general for finding good people in design, marketing, and many other areas.

There are many ways to get people to work on your project, but this post focuses on hiring freelance programmers through a website like Upwork or Guru. I like working with freelancers in the early stages of a project because the relationship is clear (service for money), fair (everyone gets their share right away—no "if it's successful, then..."), and you can work with multiple people easily (finding specialists where needed).

I’ve made a lot of bad hires over the years and it cost me a lot of money and time. Looking back, the problem always came back to me though. Either I failed to filter out people who didn’t fit, or looked in the wrong places, or didn't set people up to succeed. In all cases it was my fault.

Hiring good people is more about you than them. That’s the most important thing to remember.

Underlying my approach are a handful of key ideas. Everything I do ladders up to one or more of them:

  1. The best people want to work on interesting projects – you must sell your idea and make it as exciting as you think it is.

  2. The best people want to work with good teams – you must be a professional to work with professionals.

  3. Relationships take work. The more attention and energy you give someone, the more they’ll give back. In the short-term it’s more work to hire someone.

  4. Long-term relationships are built on trust. Share whatever someone needs to feel comfortable they’re making the right choice. Assuming trustworthiness starts things on the right foot.

Put another way:

  1. Be exciting

  2. Be professional

  3. Invest disproportionately in them

  4. Trust by default

Ok, let’s get into the details

• • •

There are five stages in the process of hiring someone.

  1. Writing your job posting

  2. Finding candidates

  3. Interviewing

  4. Onboarding

  5. Working together

This post covers the first three; an upcoming post covers the last two.


1. Writing the job posting

Think of your posting as a fishing lure not a net – you’re trying to catch a specific fish not every fish in the sea. This means you want to be honest and clear about what your project is so that you attract the people naturally attracted to it. It’s just as important to dissuade the wrong people as attracting the right. These are some things to consider.

Don’t include detailed specs in the project description

The freelancer sites prompt you to describe what work you need done. Describe the work in general, but focus more on the larger project, why it’s interesting, your vision, and what kind of relationship you want to build. The best people are motivated by the bigger picture and challenges, and the details will come up naturally later.

Show your project’s uniqueness

The best people are looking for something different, so talk about what makes your project unique. For example, I focus on the fact that Revere has already been featured in the App Store (i.e. this will look good on your portfolio), there’s an existing team (i.e. people to learn from), and that we have a strong focus on quality and design (i.e. you can be proud of your work), and the bigger trends behind it (i.e. you’re working on something future-facing). Remember to be honest – again, the goal is to catch the right fish not all the fish.

Show professionalism

Good people know there’s no amount of coolness that makes up for a badly managed job. Showing you’re professional by taking the hiring process seriously will reduce that concern. It’ll also set the expectation of professionalism you expect from them. I attach a file that includes an overview of the key aspects of the larger project: vision, technologies we use, tools we use, and how we work as a team (code reviews, testing, check-ins). I know most people don’t do this and it sets you apart, while showing you have your shit together.

How much to pay

The hourly rate you’re willing to pay will determine the types of people you attract. Go too low and you’re dealing with lower skilled people with minimal experience. Too high and you’re often paying for the person’s cost of living (i.e. they live in a more expensive part of the world). The sweet spot I’ve found is $40-50USD per hour. This gets you a solid programmer in Eastern Europe (one of my favourite places to work in) but also many areas in Asia.

SIDENOTE: I personally don’t like doing flat-rate projects because someone always loses unless you estimate perfectly. The only time I would consider it is for cookie-cutter projects that have no surprises or unknowns, like building a simple website from existing designs. If your project still has unknowns, requires prototyping, or finesse (like with interactions or animations, go hourly. Another benefit to hourly is the freelancer’s focus is always on doing good work, not finding shortcuts to deliver in the hours they estimated.

2. Finding candidates

So you have your posting – don’t post it! At least not publicly. Public posts attract too many applicants which will eat up your time. Instead send it to a few hand-picked people. It’ll spare you the sifting through dozens of unqualified people, and more importantly, make the people you approach feel more special.

Here’s how to find those special few.

Filter, Filter, Filter

The fastest way to find the best people is to filter your search. Filter as much as you can – both skills and other characteristics, like rating and money earned. Your goal is to shrink the pool of people you’ll consider. If you've filtered everyone out of contention, just ease up on the least important until you have a good selection.

Here are some criteria I use:

  • Hours worked – 100hrs+

  • Amount earned – $10K+

  • Rating – 90%+

  • Hourly rate – $30-60

  • Location – I’ve had the best luck with Eastern Europe

  • Recently active

  • Fluent in English

  • Specific skills – e.g. IAP, SiriKit, WatchKit

    • Pro Tip: Filter for frameworks released in the last year and find people that are working in them. These are the enthusiasts!

Filter as much as possible to get closer to the right person.

After filtering you’ll have a group of people. Now you have to decide who’s a good fit. Reading profiles is very much intuitive for me, but there are some signs I look for.

Enthusiasm

This is the single most important characteristic I look for. That’s because enthusiastic people care about their craft and are constantly learning. They’re more likely to know the intricacies of tools, modern best practices, and if you’re non-technical like me, they’ll be your eyes and ears for capabilities (and therefore features) you didn’t know were possible. And it’s a lot easier to see enthusiasm in a profile than coding skill.

This is a great profile – it has everything I look for!

Don’t trust example work

All these sites allow freelancers to upload example work. I disregard it when it’s really good (it’s impossible to know how much they were involved), however, consider it a dealbreaker if it’s really bad. The chances your project is going to be the first gold nugget in a portfolio of turds is very low.

Good communication

Things getting lost in translation can cost you much time and frustration. I watch for bad spelling and grammar, uncapitalized letters, and other small oversights in someone's bio. Most people I've hired didn’t turn out to be perfect English speakers or writers, but they did take the time to craft perfectly written bios. Attention to detail matters in programming.

Avoid agencies

Many people on freelance marketplaces are part of agencies. Usually it shows in their bio but sometimes it doesn’t. I would avoid agencies except for the most cookie-cutter or perfectly defined work. If you have anything that requires creativity or problem-solving, an agency won’t be a good fit. You often get different programmers on different days so there’s no continuity, which means everything must be perfectly defined so anyone can pick it up and continue. Any ambiguity will cause confusion and chaos. You also never deal directly with the programmers (you deal with a project manager) so there’s no chance for a long-term relationship.

3. Interviewing

After you’ve chosen the handful of programmers, the final step is to interview and get to the final one.

Share your vision

This is a good time to share the vision for your project and provide them with more details about the specific work you want them to do. You want to gauge their excitement about joining your team and make sure the type of work they enjoy is what they’ll be doing.

Be open

Provide whatever information they ask for (within reason, obviously). This builds trust and saves time as they’ll self-select out if it’s not a fit for them. A good programmer is just as interested in avoiding a shitty project as you are avoiding a shitty programmer.

A tell-tale sign of a pro developer is that they'll ask to see your code – let them. If you don’t feel comfortable giving full access, send a few files, that should be enough. They just want to check to see if it’s clean, efficient, and well commented. The pro knows their ability to do good work depends on how well the existing code is written.

Beware of programmers who say they need to rewrite your code! A professional programmer is used to joining projects already in progress. Unless your code is actually a total disaster (unlikely), this is a sign of someone who doesn’t work well in a team or is an programming ideologue and will be a nightmare to work with.

Do a live interview

I like doing live interviews over webcam early on. It’s a chance to build some rapport, see how well someone communicates, and just get a sense of someone’s vibe. I think about this call as them interviewing me too. I’ve noticed that the best freelancers have been just as diligent about vetting me as I was about vetting them.

Some questions I like to ask:

  • What do they want to get out of Revere?

  • Why is Revere interesting to them?

  • What are they excited about in their field?

  • What are their favourite and least favourite areas to work in? (I explain this is so I can give them that type of work if possible)

  • What questions do they have for me?