The average salary for a software engineer in Silicon Valley is over $100k per year, with similarly high rates in expensive cities such as New York, Sydney, London etc.
If you live in an expensive city and can’t afford these rates you might want to consider hiring globally. This doesn’t necessarily mean hiring someone lower quality.
At Time Doctor, I’ve been hiring developers around the world for many years now. Google recently “validated” our hiring methods by offering a job to a developer that we’d hired in Bangladesh. I often get questions from our customers and contacts on how & where to hire offshore. Here’s an overview of different approaches I’ve tried.
This article is split into 4 broad sections:
- Should you set up a central office overseas or manage a distributed team?
- Hiring developers for a distributed team
- Hiring developers in a central office
- How to evaluate candidates (applies to both distributed teams and central offices)
Should you set up a central office overseas or manage a distributed team?
When you’re hiring overseas, the first decision you need to make is whether you’re going to have your developers work together in a central office or whether they’ll work remotely. If you’re hiring only one person you can skip this decision.
There are benefits and drawbacks of each approach.
Benefits of hiring in an office
- Easier collaboration: If you have a larger team with everyone in the same office it’s easier for them to collaborate.
- Easier to manage attendance: There is some degree of discipline in having people come to an office and it’s easier to manage attendance problems in an office (although our software Time Doctor does make it a lot easier to manage attendance, whether in an office or not).
- There may be fewer distractions in a office: Some people have a lot of trouble with distractions from their children or wife/husband when working at home.
- Internet speed & stability: An office usually has higher quality Internet. In my experience this is important if your team is making phone calls though the internet, but isn’t usually an issue for developers.
Drawbacks of hiring in an office (the advantages of hiring from home)
- Cost: Hiring in an office costs a lot more (up to 100% more). The costs include: taxes, office rent, electricity, computers etc.
- Red Tape: There are a lot more red tape legal restrictions with an office. You need to comply with all laws in the country where you set up your operation. For example you may have to hire your developers as employees rather than as contractors, which means paying payroll taxes and complying with labour laws for hiring and firing.
- Taxes: You need to set up an entity in the country where you’re hiring, and need to pay taxes (or you need to hire an outsourcing company that pays their own taxes and passes the costs onto you).
- Geographic Limitation: You can only hire in one location (whatever city your office is based in).
- Office politics: There are generally a lot more office politics when people are working together in person.
- Commuting: Your staff have to travel to work, often in horrible traffic (for example most people in Manila in the Philippines are stuck in traffic for 2-3 hours each day on their way to and from work).
So what’s the answer? I don’t think there is one answer for everyone; you have to make the decision yourself. For our company (with over 50 staff), we have everyone working from home or in their own personal offices. I love this arrangement and wouldn’t want a major central office for all the reasons I’ve listed above. But I know that a lot of serious entrepreneurs end up in an office or use a BPO (“Business Process Outsourcing” company) to hire their staff for them.
After you have made this decision, then you have several ways to find great people.
Where to hire developers for a distributed team
Although I’ve hired in a central office in the past, I have much more experience hiring a distributed team and have been doing it for many years.
Your budget will be a factor in which countries you can hire from.. Are you trying to hire a developer in the Philippines at 40,000 pesos per month (a bit under $1000 USD), do you have a higher budget ($2-4k/month), or are you willing to pay western salaries of $6-10k+ per month?
If you’re able to pay $2k+ per month
If you’ve got a higher budget, the following two websites are amazing for finding developers:
- http://weworkremotely.com/ – This is a website started by the Basecamp guys and costs $200 to post a job. It has some non-technical jobs as well. This site is ONLY for remote jobs.
- http://careers.stackoverflow.com/ – The cost is $450 for a 30 day job listing if you’re in the US, but it’s less in other countries ($250 for most other countries, and if you’re not hiring into an office in the US you can easily state your location as somewhere else). You’ll probably have 200-400 candidates applying for the job if it’s a 100% remote job.
Some tips for posting a job in StackOverflow in particular
- Make sure you select the “remote work” option.
- Put in the job title that you are looking for someone remote.
- If your budget is only $2-4k/month you’re probably going to exclude everyone in developed countries so you’ll only be able to hire in countries where this is an acceptable salary level. These countries include: Russia, Ukraine, most of Eastern Europe, Egypt, the Philippines, India, Pakistan and Bangladesh. It may be better to make it clear in the ad which countries you’re looking to hire from. Even if you do this you’ll still get a lot of candidates from the US but there’s likely no point in discussing the job with them as the salary is too low for the US, and if you do get someone to accept this salary there’s probably a strong negative reason why they’re willing to accept a lower salary.
I believe that running a coding competition is a great way to find people. I’ve not personally tried this but if Google, Facebook, Microsoft and most of the tech giants do it, it’s probably a good option. You can sponsor a competition on sites like Hacker Rank (affiliate link), but this is not cheap (it will set you back a few thousand dollars).
Which countries to hire from?
It helps to keep an open mind when considering where to hire. Sergey Brin, one of the founders of Google, is from Russia. There are great people from dozens of countries around the world working as founders or in top technical positions for some of the more prominent tech companies. My point is that you can find great people anywhere.
Having said that, my experience is that eastern Europe has a higher signal-to-noise ratio, so that a larger percentage of the applicants will be of a higher quality and experience level.
I find that it’s harder to find great developers in India. There are plenty of amazing developers in India but my experience is that they are less likely to be the ones that are applying to your job post, and that you’ll get a lot of very average developers applying from India.
What to do if your budget is restricted?
If your budget is high enough, hire from everywhere. If your budget is more restricted consider hiring from some of these countries:
- Eastern Europe: Bulgaria, Serbia, Macedonia, Hungary, Romania, Ukraine, Moldova, Czech Republic, Belarus and Russia.
- Asia: China, Vietnam, India, Pakistan, Bangladesh, Indonesia and the Philippines.
- South and Central America: Mexico and Argentina.
If you have a lower budget, you’re also more likely to find a more junior developer. So you have to seriously consider if you’re going to get the results you want by doing this. The level of developer that you need depends on what you are trying to build. If you have a low budget then here are a few websites where you can hire people:
- Outsourcely – A global talent marketplace with remote workers from 132 countries looking for mostly long term work. Unlike Upwork, Outsourcely lets you hire directly and pay zero fees. Prices start at $9 – $99 /month depending on how many individuals you’d like to interview and how many jobs you’d like to post. Outsourcely’s platform also makes it effortless to interview and hire talent with their real-time communication tools built right in. For example, you can connect with candidates immediately using real-time private chat, browser to browser video & voice calling, video & voice messaging or just regular email. This makes hiring fast and easy. Best of all, Outsourcely is giving all TimeDoctor customers a 30% discount. Just enter “staff30” to get 30% off all plans.
- Upwork (formerly oDesk) – Huge platforms with a lot of people who want to work from home. You can find great people on these sites, and although you can also use them for higher salary jobs, my experience is that Stack Exchange is much better for higher level jobs. Upwork make their money by taking 10% of the person’s salary. Elance charges a similar rate. Although Upwork and Elance are separate websites, they’re owned by the same company.
- OnlineJobs.ph – A site specifically for the Philippines, it has a large database of candidates and lists their local salary amounts in pesos. You’ll find that candidates tend to charge more when you list a salary in US dollars. If you pay in local currency you can tend to get close to local rates. It costs around $49/month to use the site.
- There are other places you can try many of which are free such as: Craigslist Manila, BestJobs, joblist.bdjobs.com. I haven’t had very good experiences with any of these sites, but since they are free, no harm in trying them.
Other websites to consider
These aren’t options that I’ve tried, but I’m including them for completeness:
- GitHub jobs page – a great way to hire high level developers.
- TopTal – prominent outsourcing company that will find talented developers and they charge a percentage of the person’s salary (I’m guessing around 30%). Their developers work from home and the rates for their developers are mostly at western levels ($8-12k per month for a full time developer).
- Freelancer, Guru, PeoplePerHour – Outsourcing platforms similar to Upwork.
- If you are specifically hiring WordPress developers, here are some good tips for finding them.
Hiring developers into an office location
If you’ve decided to go the office route there are a few ways to set things up
- Hire a BPO (Business process outsourcing) company to basically do everything for you
- Hire a “seat leasing” company that makes office space available to the people you hire. The seat leasing company may also handle salary payments, but does not get involved any hiring or management.
- Set up your own office.
Using a BPO company
A BPO will usually charge a fixed percentage on top of the salary you’re paying your developers. The BPO wll be responsible for hiring under your specifications. If the cost of using a BPO isn’t an issue for you, then the main thing to consider is how effective they are at hiring great people.
I’m not personally a big believer in letting another company handle your hiring as this is a critical part of your business. Even if you do hire a BPO (or a recruiter) to do it for you, it’s important that you participate in the process and evaluate the candidates in depth yourself. So in my opinion BPOs are usually not worth the extra percentage that you’ll be paying.
The feedback I’ve heard from friends who have used BPOs is very mixed. Some love the experience and others haven’t gotten great results. It really depends on the BPO and the person within that BPO who will be responsible for recruitment.
I don’t have any recommendations of BPO companies however I can suggest if you’re hiring a BPO in the Philippines to check out Mike’s Manila Tours which is a 3rd party independent service (they don’t take commissions) that will take you around to visit all the different BPO operations, and also show you how to find a company to handle your seat leasing.
Seat leasing companies usually charge a fixed monthly cost for each employee that you have. Your employees will share an office with other businesses, and the seat leasing company may also be able to handle basic HR, payroll and local payroll taxes. This should work out to be cheaper than using a full-service BPO.
What seat leasing companies don’t do for you is recruitment. So what to do? You can either do the recruiting & hiring yourself, or you can hire a recruiter who will find someone for you at a fixed cost. If you hire a recruiter, make sure you get a good one (not easy!).
Setting up your own office
I personally do not like this option at all for several reasons:
- You’ll need to set up a company in the country where your office is located.
- With that company comes a lot of legal obligations and hassle.
- You don’t have as much flexibility. You can’t scale up or down as easily.
- A lot of up-front time, effort and money are needed to set things up.
I think that for larger companies with 100 or more staff it’s something to consider, but for the vast majority it’s not a good option.
Hire remote first and then build an office later
One option you can consider is to build an office around your initial hires. So if you manage to find a great developer in Ukraine for example, then subsequently look for future developers also in Ukraine. Then eventually set up an office or enter into a seat leasing arrangement and have everyone come into the office.
You can also be flexible and let your team mostly work from home but have them meet up once or twice a week. This could give you the best of both worlds, having the flexibility and low cost of hiring from home, but also having regular meetings in person.
Why you should NOT hire a pre-built “Team” (with some exceptions)
What I’m referring to here is hiring a company with several developers to handle an entire project for you. This is a really bad decision if the technology they’re building is central to your company. If you hire a pre-built team there’s an inherent conflict of interest. Their interest is to do the minimum work necessary to maintain you as a client while going off searching for more clients and more revenue. Your interest is to get the best possible development team that you can, and you want your developers to be dedicated to you and you only. The problem is that the developers work for their direct employer. Since you haven’t hired them directly, they’re not fundamentally loyal to you.
The exception is where you have a defined project and where the technology is not the core of your business. In this case it’s ok to outsource it to a person or a team (perhaps at a fixed price) to just get it done.
How to evaluate candidates
If you’re not a developer you’re going to struggle to evaluate candidates. In fact you’re likely to have absolutely no clue whether someone is a great developer or not. My personal experience is that the most eloquent and well-spoken people are often not the best developers. I could barely understand one of our best developers when I first met him, but now after working several years together, his English has improved a lot and he’s a great member of the team.
There’s a specific process that I use for all of our technical hires which is to give developers a test from Hacker Rank (affiliate link). This is a service used also by companies such as Facebook, Yahoo, Evernote, Airbnb and VMware. Hacker Rank will give your applicants a very difficult programming test, and when they submit their code it automatically checks if their code is correct or not. It costs $199/month to give 25 developers per month the test. Hacker Rank can also create a custom test for you for around $1,000.
What I do is give our applicants one of Hacker Rank’s custom tests before we even interview them. This gives me a good idea whether the person can solve difficult problems. The vast majority of applicants are willing to do the test.
Here are the stats from our latest hiring round:
Note that I didn’t personally interview anyone. I’m not a developer, so what do I know? Plus I didn’t have the time to conduct all of the interviews.
Below are some of the specific questions we ask during the interview. Most of the questions we ask are technical questions about PHP and I’m not including those here:
Introduction of the company and what I do within the company
- The interviewer starts by providing the developer with some quick information
- Tell me about your prior work history and other experience.
- Are you working for a company right now?
- Why do you want to change your job?
- What is the largest team that you worked with?
- What were your top 3 projects? (review quickly during the interview)
- What is MVC? Please give me some details about how it works.
- What’s your favorite framework and why you are using it instead of another framework?
- Do you have experience with Symfony?
- What’s the purpose of the static keywords in OOP in PHP?
- … and about 20 other technical questions
Communication and remote work questions
- Can you be online on Skype the whole day and can you call people immediately when needed?
- How do you feel about working remotely?
- What’s the status of your social life? Are you aware that working remotely can be bad for your social life if you don’t have a family or don’t have a lot of social life outside of work?
- Any questions for me?
Hiring on a trial basis
Whoever you hire, it’s a good idea to consider the first 1-2 months a trial. This gives both of you a chance to get to know each other and make sure that it’s a good fit. Even if you’re happy with each other, the developer may find that they dislike working from home if it’s their first experience doing so.
Because the developer may not stay beyond the trial for whatever reason, it can be a good idea to consider hiring two people for the job on a 1 month trial and then selecting the person you like best at the end of the month (assuming that one person hasn’t dropped out).
Starting with a fixed-price project
Another way to run a trial is to start by hiring the developer for a fixed-priced project. This allows you to get something done at a defined price and also test the person before hiring them for more on-going work.
If you’re not hiring into a central office, the best places to hire someone for project work are Upwork or Freelancer. One thing to look out for with this approach is to make sure that the person is interested in working full time after the initial project work. Often developers who are working on a project basis may not be as reliable or willing to work full time with you as they already have their steady base of clients that they’re doing project work for.
How to pay your remote staff?
If you’re hiring people directly, you’ll need to figure out how to pay them. It’s really not that difficult and there are options to pay people in any location around the world. We’ve written a series of articles on how to transfer money to employees in other countries. Here are the links:
- General overview of paying offshore staff
There is no “developer shortage” if you’re willing to open your mind to hiring globally!
In Silicon Valley there is constant talk about the shortage of good developers and the war for talent. Of course! When you have Google, Apple, Microsoft and hundreds of other companies competing for the same talent, it’s an incredibly competitive market. If you broaden your horizon and consider hiring from any country and any city around the world, your chances of finding someone amazing are much higher.
In my view it’s very restrictive to only consider hiring from the one location. The whole world is your oyster, so take advantage of it!
Oh, and once you hire some offshore developers, make sure you use Time Doctor (our software) to manage them 😉