By John Houghton on January 6, 2014
Screening offshore developers can be tricky. Let me share some best practices. To screen new talent at our company, we come up with small non-critical assignments and give them out to new developers or teams that have already passed the first couple of rounds of non-technical screening. The non-technical screening shows you if they can keep commitments, read assignments completely before starting, and show up to meetings on time. Don’t put your new or inexperienced developers on a critical project. The pitfall here is if one of these new developers or teams is working on a critical project, they might blow through your deadlines and budget, leaving you in a bad spot. Give them a number of smaller projects, make sure they are consistent, and make sure they can write high quality code. You need to work them up slowly and have them prove themselves at each step. If they fall short at any point, you need to decide whether you want to entrust your future to these folks. Usually, it’s best to let them go. Based on our experience, the chances of you being successful with any random offshore mobile developer is 1 in 10. Therefore, you have to have a process for vetting the bad developers and finding the good ones.
Here is what we look for in developers:
1. High speed connectivity. You have to be able to Skype with them and screen share both ways. If you have no mobile developers locally, your offshore developers need to help you set up your development environment so you can perform builds and test. This can be done through Skype, iChat, or TeamViewer. It’s very important to be able to check the work as it comes in. If this is too technical for you or folks on your team, then you need to hire someone local. Otherwise, it might be a good idea to forget about offshoring. Obviously, you can save money by not having a local resource, but you have to know your material. Someone who performs builds and maintains the code repository is called an iOS Release Manager, and if they are local they are going to charge Western rates. A senior engineer can check their work, and a good QA person (tester) can do the same.
2. Good communication. Don’t expect the perfection, but everyone needs to be on the same page when it comes to what is assigned and when it is due. In different countries, if you’re within a few days, you’re still considered on-time. Depending on how much help you need, they should be able to talk you through various tasks, such as performing builds or tweaking your development environment. You’ll need this on a small team. Oh, I should mention, in order to effectively lead a development project you or someone local that you trust should perform builds and test to verify the work. These days on lean teams, you have to be somewhat technical. I see a lot of projects where the leader doesn’t really know what is going on, and as a result, doesn’t know who to trust, or even who is doing a good job because they are not technically involved. When you hire a local, full-service company, you’re paying not to have to get involved, but since you’re trying to save money by offshoring, you have no choice but to get involved. Look what happened to the Affordable Care Act website. The leaders were out of touch. Another point about communication, sometimes developers can be impatient or present other interpersonal issues, but as long as you can get what you need, you have to overlook this.
3. Published Apps. Make sure they have at least one good app in the app store. Download it and make sure it works. It is best if it’s published in their name (allows you to verify) and has some reviews. It shouldn’t be a ghost town. Don’t expect them to have published a top 100 app, or an app that you know. Famous companies/developers are usually out of reach unless you’re paying top dollar, and they usually aren’t taking new projects. Also, keep in mind that very few individual developers are competent at both iOS and Android. It’s usually one or the other. This can also go for server side programming. They are usually either good at mobile development or server scripting – to find both is rare, or too good to be true. You’ll find out afterwards which was the weak competency.
4. Honesty. You want developers who are fair in reporting hours, honest about using copyrighted APIs (a legal liability), whether they can make their deadlines, and things of that nature. Many years ago, I worked with an offshore team who said they had started work, and three months later when the deliverable was due, they were late. The truth was, they started working 2 weeks before the deadline. In the end, the code was hacked up and the product could not be upgraded from one release to the next – it blew away all of the customer’s data. This would be like upgrading your email application and losing all of your email. Can you imagine that?
5. Technical Capability. For hardcore developers, we look for a BS in computer science and at least 2 years of full-time development experience on iOS or Android. If they have less experience, they will frequently be learning “on your dime” which can mean 3 – 10x longer cycles and costs. I’m amazed when I see other company’s projects and how long they took: “Wow, it took you 2 months to do that?” when in reality, it was less than a week’s work. Imagine if you had to translate a document into Russian, but you really have only had a little training. It would take an eternity to translate a document and there would be many errors, but a good translator would have it done in 20 minutes.
There is more, but these are the basics of what we look for in developers. To get more tips on countries in which to look for developers, see how these individual requirements translate into metrics for a country, and see how each country measures up, please read my article 12 Countries for Recruiting Mobile App Developers.