Should I Outsource?
After observing over a hundred offshore, outsourced software development projects over two decades, I’ve seen numerous successes and far too many failures.
Offshore outsourcing is no longer an “early adopter” trend. There is a mature software development outsourcing industry, and many lessons learned about what works and what doesn’t. If you are trying to decide if you should outsource or what aspect of software development you should outsource, it makes sense to ask, “what scenarios have the best chance of success?”
The mind map below outlines twelve outsourcing scenarios that I’ve seen work successfully over my career. (You can download the mind map as a PDF file if the version below is microscopic on your screen.)
Let’s take a quick look at the twelve scenarios by category.
Starting Small or Testing the Waters
Small projects represent a lower outsourcing risk than massive projects. Smaller projects can also act as a low-cost “pilot” to test out an offshore outsourcing vendor’s skills, responsiveness, and the quality of their work product. Two types of small projects, in particular, are very well suited for outsourcing:
1. R&D: Creating a technical prototype to test an idea
Outsourcing a technical prototype is a fantastic way to answer technology questions and validate feasibility before you decide to build a product. Here are a few examples of problems that can be answered by outsourced R&D and building prototypes:
- Can machine learning provide useful results from the data that I already have?
- To what degree of accuracy can optical character recognition read these insurance forms?
- Will augmented reality improve the ability of nephrologists to explain diagnoses to patients?
2. MVP/MLP: Creating a “Minimal Lovable Product” to validate the market
A Minimum Lovable Product (MLP) is an introductory version of a product that customers love right from the start. It represents the minimum possible design and features required for users to adore a product. MLP extends the Minimum Viable Product (MVP) concept, which focuses on creating only the most elementary version of a product with just enough features to be usable. Asking a team to create an MLP means they need to understand the “Love,” what the customer wants and needs, rather than just a dry list of essential features.
Minimal Lovable Product engagements are among the most successful projects to outsource. The size and scope are often just right for a small outsourced team. The team also has an opportunity to show off their full breadth of capabilities, including developing personas, user interface design, journey mapping, project management, engineering, and more. The key to success is your ability to communicate the end customer’s genuine needs as clearly as possible. One of my responsibilities as a Consulting CTO for Software Startups is to ensure that we share product requirements with the highest possible fidelity.
Building on Existing Success
3. Productization: Create a commercial-quality software product from a successful MVP/MLP or prototype
So your experiment worked. The market loves your MLP. Now your customers want more: more features, better reliability, better documentation, and they want it in Spanish. You can successfully use an outsourced team to “turn the crank” and create a second, much more robust version of your initial idea.
4. Replatforming: Moving custom apps to the cloud
If you have older software products you want to reengineer to give them new life as online Software-as-a-Service offerings, outsourcing can be a fantastic way to do it. The requirements for projects like this are straightforward since the bulk of the application is already well defined.
5. Hyperscale re-architecture: Re-design existing applications and development processes for Hyperscale
Hyperscale is the ability of software architectures to adjust as needed to meet changes in demand. Cloud computing and modern software design provide exceptional ability to meet demand without over-provisioning and over-paying for resources. Specialized outsourcing teams can re-architect your existing product to take advantage of state-of-the-art Hyperscale capabilities offered by cloud vendors. For a quick overview of cloud computing, see my video and article Cloud for Non-Technical Founders in 15-Minutes.
6. Secret Plan B: Creating a contingency option to replace an existing system your company depends on
Large companies often use vendor-provided software that supports critical strategic areas of their business. Sometimes, relying on a software vendor for a core, strategic part of your business represents a significant risk. What happens if the vendor decides to triple their pricing? What happens if a competitor acquires the software your company needs to be competitive? (And then wants to stop selling the software to reduce competition, effectively forcing you out of business?)
By “Secret Plan B,” I mean using an offshore, outsourced team to create custom software that allows your organization to free itself from this type of “vendor lock-in” risk in strategic areas. These projects often need to be done quietly, without upsetting the dynamic with vendors upon which your business depends. Usually, a remote, offshore team independent of internal development teams is well suited for this “contingency plan” work.
Avoiding Embarrassment: Adding Missing Technical Competencies
Almost every internal software development team could benefit from additional technical support in specialized areas such as security, DevOps, cloud infrastructure, software licensing, compliance auditing, and quality assurance. Three specialty areas I see successfully outsourced include:
7. Security: Identify and remediate security vulnerabilities in a new or existing application
Discovering vulnerabilities in your software requires a specialized skill set that most general development teams don’t have. I encourage my clients to engage an outsourced security testing firm early in the software creation process—the security firm reviews code during implementation, identifying security vulnerabilities before your product gets to market. And before you end up on the front page of the New York Times for a data breach.
8. Infrastructure-as-Code: Your engineering team lacks key operations skills
Most first-time software entrepreneurs I work with are surprised that software development teams usually don’t understand the complexities of running and operating the modern web applications that they just built. Until recently, “Development” and “Operations” have been different departments, often employing people with different personalities and priorities. The “DevOps” movement is beginning to challenge that norm and integrate these concepts. Still, the fact remains that you need BOTH developers and operations people to provide web-based Software-as-a-Service. I encourage my clients to use specialized outsourcing firms committed to supporting cloud computing environments, automating software deployments, and monitoring virtual infrastructure. The operations team is in addition, to your software development team. You can successfully outsource both teams from different vendors.
9. M&A: Preparation or due diligence for a transaction involving your software company
There are many ways to prepare your software company for sale. One of the most fundamental is to make sure the software product that you are creating is well documented and does not contain problematic or conflicting open source licenses. Third-party, outsourced code reviews can help establish (and improve) the level of quality of your software product. Reviews and audits can also ensure you are compliant with regulations that may impact your software or fitness for use in a particular industry. Engaging an outsourced code review firm early in the development process can help you avoid “baking in” problems that rear their ugly heads when you are ready to exit years down the line. I offer Software Investor Services designed explicitly to help founders and entrepreneurs in this area—and support investors on the buy-side making acquisitions.
Freeing Up Engineering Resources
The single most common reason for engaging an outsourced software development company is to add “engineering muscle” to an existing team. In this case, we are not talking about adding missing technical competencies, but often the opposite! The motivation is bringing on lower-cost resources to take on existing engineering tasks, freeing up your rockstar programmers for higher-value work.
This strategy is not without risk. The bear in the woods here is Knowledge Transfer (“KT” using outsourcing lingo.) Executives almost always underestimate the time, cost, and complexity of transferring required domain knowledge to the outsourced team. Luckily, the domestic engineering team is almost always enthusiastic about helping the foreign team learn. They will usually do anything they can to help the outsourcing company get up to speed. The sooner they transfer knowledge, the sooner they can move on to new and potentially more exciting projects.
The two scenarios below are, by far, the most common. Thoughtful risk and change management plans are needed to pull these scenarios off successfully. Give me a shout if you attempt either of these and want to talk about risk mitigation and battle-tested success playbooks.
10. Staff augmentation: Add additional capacity to your internal development team (including QA & Testing!)
An offshore software development firm can hire dedicated engineers that report directly to your team. Your domestic development team needs to manage them, hold them accountable, clearly identify work for them to do, and include them in the team workflow and discussions. This model is often called “staff augmentation” or “staff aug” for short. Available engineering resources can consist of all levels and types of software developers, including dedicated quality assurance and testing resources.
11. KTLO (Keep The Lights On): Provide ongoing maintenance and support of existing software products
Software companies often find themselves contractually obligated to support old versions of software for their customers. Usually, this happens due to acquisition. The acquiring company ends up with a portfolio of similar products, including some that once were competitors and are now owned by the same parent company. The parent company can hire a fully-managed offshore software development team to provide “maintenance programming” for overlapping or duplicated products. The offshore team supports the product’s customers, keeping the software secure and up-to-date. The team that initially built the software is typically integrated into the acquiring company to work on a new product or platform using the acquired team’s valuable domain knowledge.
Sometimes outsourcing is the only way to stay in business.
12. Running out of money: Your company will go out of business if you do not reduce the burn rate on your software development
The conversation usually goes like this:
Michael, I never imagined that we would end up here. The projected product completion date was 9-months ago. The last 20% has taken twice as long as the first 80%. The California-based team is now twice the size it was supposed to be. Recently hired software developers required outrageous salaries and took six-months to hire and onboard. And those were the ones that accepted the job. Four candidates were terrific, but an Internet giant offered each one a dream job before we could finalize. And our investors are not going to put in any more money! They told us, “make the money you have count.” At the current burn-rate, we have only 6-months, and then we are out of air. What do you think we should do?
Ug. My blood pressure goes up just writing that. Although the specific example is fictional, it is reasonably close to many of my clients' actual situations. I wish they had called me a year ago.
Being forced to sack more than half of your talented, US-based development team is not something I would wish on anyone. I’ve been through this as an entrepreneur myself, and I can tell you it doesn’t feel very good. These are real people with real families and colleagues that you have gotten to know well. That said, US-based software developers are some of the most expensive in the world. It would have been better to start with an offshore, outsourced team from the start in hindsight. (And to do more planning work, market validation, and strategic product roadmaps in advance!)
Using an offshore software outsourcing company to replace employees is complicated. You need to retain essential resources to help with knowledge transfer. You may also want domestic resources to act as project managers, product managers, and lead engineers. You need to carefully manage this dramatic change and prevent disgruntled employees from sabotaging your code, your intellectual property, and your ability to conduct knowledge transfer. You need to thread the needle. I’ve seen it done successfully multiple times, but it requires careful planning and transparent and honest communication.