How can I successfully outsource my custom software development?
If you are new to outsourced software development, then you may be asking yourself how to most effectively use outsourcing to meet your business objectives. The short answer seems to be that outsourcing software development has become less effective and desirable than it used to be, but it can still be useful if you effectively adhere to some best practices and avoid the typical problems associated with outsourcing. More than anything else, this means making sure you:
- have total control of the teams;
- can establish and execute a vision;
- and communicate with outsourced employees clearly and efficiently.
The following analysis is broken down into “PROBLEMS WITH OUTSOURCING”, “DO’S OF OUTSOURCING” and “DON’T’S OF OUTSOURCING.”
PROBLEMS WITH OUTSOURCING
Outsourcing remains a fairly popular option. The biggest advantage of outsourcing is that it can take advantage of low-cost labor. In 2001, it was possible to outsource a project to Ukrainian developers for $300/month, but simultaneously “sell their time” to customers for $15/hour, creating profit margins of up to $2200/month.
Yet today, the same software developers could only be hired for about $4000/month, substantially reducing the outsourcer’s profit margin. To highlight another example, Chinese labor costs rose 10% in 2015.
In other words, software outsourcing, and outsourcing in general, has become so much less advantageous for the simple reason that it costs so much more than it used to. Moreover, there are often “hidden costs” or other drawbacks that can make the process of outsourcing inefficient and risky. For example, even if outsourcing a project costs less than in-house development, you might still lose money if these offshore workers are inexperienced or unproductive.
Other problems to think about include extra management costs from having to manage offshore teams, difficulties in communication from differences in culture or language, and loss of control over the product and the development process. I highlight these various issues, not to discourage you from including outsourcing in your business plan, but to give you a better context for understanding the risks associated with, and how to best utilize it.
This brings me to the next two sections, which will be a list of do’s and dont’s with some analysis and explanation.
DO’s FOR SOFTWARE OUTSOURCING
Here are a few best practices for outsourcing your software development.
DO make sure to set clear goals and lay out a clear vision for your product. Communication is key in developing any product, but it is especially important in cases where you have limited communication with your offshore teams. Laying out a clear vision can help keep your offshore teams on the right track.
DO make sure to always centralize your project management locally. Offshore leads should never be in charge of managing your project for you, because at the end of the day, “you know what you’re looking for at the end.” Throughout the project, you and NOT the offshore leads, should be supervising the projects and making sure that the goals are being met. Anything else and the product may not end up the way you want it to.
DO make sure you spend time researching different outsourcing vendors to find the one that best fits your need. For example, some experienced outsourcers stay away from companies with more than 1,000 employees because these large firms often have their own bureaucracies to manoeuvre, making the whole process more inefficient. Consider the financial costs associated with each vendor, the country they are based in, and the vendor’s various policies, strengths, and weaknesses.
DO pay attention to the specific country you outsource to, including political and economic climate, business infrastructure, etc. Imagine working with outsourced engineers in Ukraine while Russian was annexing Crimea.
DO prepare for the various problems associated with “cultural mismatches”. Prepare your onshore team to communicate with the offshore team (including being ready at unusual hours!), and make sure the members of your offshore team have a sufficient grasp of the English language!
DO make sure that there is a quality supervisor on your team to make sure that the offshore teams are constantly adhering to your standards.
DO consider using an Agile methodology like SCRUM which can improve communications and efficiency. This works by breaking down a specific project into smaller parts, and delivering them continuously back to you. This allows the product team to respond to changes as they happen in real time and fosters closer communication with you. According to Dr. Jeff Suthlerland, management methods such as SCRUM can achieve “type of hyperproductivity “ that was only thought possible in smaller, localized teams. More information on SCRUM can be found here.
DONT’s FOR SOFTWARE OUTSOURCING
Here are a few things to avoid when outsourcing.
DON’T forget to test the final product; it is often easy to focus on the intricacies of product development and ignore the important role of “testing”.
DON’T add an offshore team just to speed up a development process and add manpower. According to Brook’s Law, adding resources late into a project will only make the project later.
DON’T just find and hire the cheapest firm to develop your software. While this temptation is certainly strong because of the apparent possibility for profit, you will find that these firms will often perform low quality work, or often not possess workers with the technical skills you desire.
DON’T outsource skills or jobs that you find you frequently need. If you find that you are outsourcing a lot, it might simply be cheaper to have an in-house development team.
DON’T mis-classify workers - If you treat your offshore/outsourced workers too much like actual employees, the IRS might penalize you!
As you can see, there are many risks associated with outsourcing; however it can be useful and lucrative if executed properly. More than anything else, this means communicating effectively with your offshore team, and making sure they understand your vision. The SCRUM methodology can be a very effective way of achieving these goals.
This is why I suggest that those business leaders not familiar with outsourcing software development find an experienced outsourcing manager to help them manage the entire process to ensure a successful product outcome.
If you are considering outsourcing your software product, please talk to me first. I can help you build a hybrid team of local and remote developers that will deliver a successful outcome.