Startup Resources
February 25, 2014 by Guest Blogger

By Mike Tung, CEO of Diffbot

Many high-tech entrepreneurs think of online staffing as a bootstrapping technique—something used only in the early days of the startup, when headcounts are low and funding is tight, to get a first prototype built. Surely, as conventional wisdom goes, in-house staff need to take over the engineering reins as the company grows up.

I know I used to think that way. But now, I'm convinced that online workplaces represent something much more: an essential tool in an entrepreneur's arsenal.

Online staffing is akin to elastic computing or crowdfunding—it’s a resource that doesn’t just make things more efficient, but also adds a fundamental new capability to the modern company.

Take our startup as an example.

Diffbot is a VC-funded startup on a mission to build a robot that can read and understand web pages. Our company's ranks include world-class creators of artificial intelligence, natural language processing, and web search systems, and our customers include some of the world's largest Internet companies.

Last month we were presented with a compelling challenge. Our customers reported that many of the third-party contributed software libraries they had been using to access Diffbot were broken, outdated, and unmaintained. We needed to fix all of those software libraries to ensure our customers have a tested, supported way to connect with our service.

This task would have been impossible for us to do alone; we simply didn’t have engineers within the company that knew all of the countless programming languages Diffbot can integrate with. Luckily, we thought to use oDesk for this. Not only would we patch up all the existing third-party software libraries, but we could create our own software libraries for every programming language under the sun.

In a matter of days, we ended up creating software libraries for more than 36 programming languages, and in the process, added thousands of developers to our customer base. We now have libraries for general purpose languages (like Ruby, Python, Java), systems languages (Go. C), scripting languages (Bash, Perl), and even esoteric ones (x86, FORTRAN, PROLOG).

Code Visualization

In this visualization of the delivered code, each color is a separate programming language and each circle is an individual source code file. The size of the circle represents the number of lines of code in the file, and the edges indicate which files are in which folders. For a fully interactive version of this visualization in our original blog post, click the image above.

In this increasingly global economy, we entrepreneurs need to think not only about selling our products and services globally, but also about leveraging global talent as a key competitive advantage in building those offerings.

Want more specifics on how to do that? Read on.

Our 3 best practices for hiring (& retaining) great remote developers

1. Qualify your candidates

Just as you would interview engineering applicants for a local job, maximize your chances of project success by making sure your remote applicants fully understand the project and have the skills needed to execute on it. The difference between hiring online and hiring locally is the sheer diversity of talent available in the global pool. We had thousands of applicants for each of our 36 posted jobs.

The key to avoid being overwhelmed by the interview process is to ask screening questions that can be evaluated succinctly and that only a qualified candidate would be able to answer. We asked each applicant to write a one-liner code snippet for making an HTTP request in the specified programming language. The one-line response (a) makes it easy for us to evaluate its correctness and (b) demonstrates that they have working knowledge of the programming language and understand the basic nature of the request, while also showing us a bit of their personal coding style. Fortunately, the oDesk job submission interface makes it trivially easy to attach a screening question to all applications.

2. Write a detailed job description

The more information you can give candidates about the project, the better they can self-select as to whether they can perform the job, resulting in higher quality applications. Giving them the big picture of the product you are trying to build and what it does also helps them evaluate whether they would enjoy working on this job, which makes a huge difference in the quality of the deliverable.

It also doesn't hurt to tell them what you are trying to do with this project, and why. In our job description, we explained why this project was important to our company. Many curious candidates checked out our website, and as a side benefit, some even signed up for our service as customers!

3. Give your workers credit

Make your remote workers feel like they are part of the extended team by acknowledging their efforts. We made a photo collage for them in our follow-up blog post to thank them and show how their work fit into the greater whole. (By the way, if you can find them on oDesk, each developer was the top person in his or her programming language and I highly recommend them!) Not only will doing so help you retain great developers, but it can also help you build your brand and attract more clients, as your remote workers can become great international evangelists for your company.

Any other tips for hiring and retaining great remote developers? Share them in the comments section below!

Mike Tung

CEO of Diffbot

Mike Tung is the CEO of Diffbot, a VC-backed startup that is on a mission to build a robot that can read and understand web pages. He is a former Stanford AI Lab member, a PhD dropout, and an adviser at Stanford University's startup accelerator.