Friends of mine, who are not software developers, have a small, retail Internet business. The original developers created the application in Python, and my friends are looking for a full-stack Web/Python developer to help them. Frustrated with their inability to find someone who can commit to their project, my friends have decided to hire offshore developers, which is another way of saying, “cheap programmers in Eastern Europe or India.”
Earlier this week, these friends e-mailed me the resumes of three Ukrainian programmers, asking me which seemed most appropriate, and what questions they should be asking.
But here’s the thing: Technical skill isn’t the primary consideration when hiring a developer. This is doubly true when hiring an offshore developer. That’s because the problems that I’ve seen with offshore programmers aren’t technical, but managerial. As I told my friends, you would much rather have a so-so Python programmer who is reliable, and communicative than a genius programmer who is unreliable, or uncommunicative. The sad fact is that many of the offshore outsourcing companies have talented programmers, but poor management and leadership, leading to breakdowns in communication, transparency, and scheduling, rather than technology.
Sure, a developer might know the latest object-oriented techniques, or know how to create a RESTful JSON API in his or her sleep. But the programmer’s job isn’t to do those things. Rather, the programmer’s job is to do whatever the business needs to grow and improve. If that requires fancy-shmancy programming techniques and algorithms, then great. But most of the time, it just requires someone willing to pay attention to the project’s needs and schedule, writing simple and reliable code that’s necessary for the business to succeed.
The questions that you should be asking an offshore developer aren’t that different from the ones that you should be asking a developer in your own country, who speaks your language, and lives in your time zone. Specifically, you should be asking about their communication patterns and processes. Of course, you don’t want a dunce working on your programming project — but good communication and processes will smoke out such a person very quickly.
If there are no plans or expectations for communication, then you’re basically hoping that the developer knows what you want, that he or she will do it immediately, and that things won’t change — a situation that is pretty much impossible.
Good processes and a good developer will lead to a successful project. Good processes and a bad developer will make it clear that the developer needs to go, and soon. Bad processes and a developer of any sort will make it hard to measure performance, leading to frustrating on everyone’s part — and probably missed deadlines, overspent budgets, and more.
So I told my friends that they should get back to these Ukrainian programmers, and ask them the following questions:
- What task tracking system do you prefer to use, in order to know what needs to be done, what has been done, and who has taken responsibility for each task?
- How often do you want to meet to review progress?
- Do you use automated testing to ensure that when we make progress, we can be sure that it works, and that we haven’t introduced regressions?
- How easily will a third party be able to download the repository from Git (or whatever version-control system you’re using), and run those tests to verify that everything is working?
The answers to these questions are far, far more important than the technical skills of the person you’re hiring. Moreover, these are things that we can test empirically: If the developer doesn’t do one or more of them, we’ll know right away, and can find out what is going wrong.
If the developer is good, then he or she will encourage you to set up a task tracker, meet every day (or at least, every other day) to review where things are. You’ll hear that automated testing is part of the development progress, and that of course it’s possible to download, install, and run the application on any compatible computer.
If the developer hedges on these things, or if he or she asks you to trust him, then that’s a bad sign. Truth be told, the developer might be fantastic, brilliant, and do everything you want. But do you want to take that risk?
If the developer has regular communication with you, tests their code, and allows you to download and run the application on your own, then you’re in a position to either praise them and keep the relationship going — or discover that things aren’t good, and shut it down right away.
Which brings me to my final point: With these sorts of communication practices in place, you’ll very quickly discover if the developers are doing what they promised. If so, then that’s great for everything. But if not, then you’ll know this within a week or less — and then you can get rid of them.
There are plenty of talented software developers in the world, but there are many fewer who both understand your business and make its success a priority. A developer who values your business will want to demonstrate value and progress on a very regular basis. Someone who cannot demonstrate value and progress probably isn’t deserving of your attention or money, regardless of where they live or what language they speak. But if you can find someone excellent, who values you and your business, and who wants to help you succeed? Then by all means, hire them — and it doesn’t matter whether they’re in Ukraine, or anywhere else.
What questions do you ask offshore developers before hiring them?