Which Software Projects Can Be Outsourced?

The decision to outsource is tightly coupled with the consideration of WHAT to outsource. Although there is no "right" answer to this question, here are several "real life" examples that come to mind.

EXISTING PRODUCT SUPPORT

It is often the case, especially in well established and successful companies, when they become a "hostage" to their own success – that is, the product that was developed "N" years ago is still going strong, and the growing customer base demands both enhancements and bug fixes. At the same time, the underlying technology may have gotten stale and it may be time to respond with a new product version more in line with the current “state of the art.”

In such a situation, it may make sense to start outsourcing support of the existing product, for a couple reasons. First, it would free the most experienced and "business-savvy” developers to start on the next-generation product; and second, it would minimize the cost of supporting the older product line. With the cost of support under control, the company can keep existing customer happy, thus enabling a smoother transition to a new product.

TEAM AUGMENTATION

“Stay focused!" is a common mantra that start-ups hear from investors. While quite reasonable, this sometimes leads to a situation where some “peripheral” aspects of software development are neglected. Most common examples include:

1. Application programming interface (API) development
2. Test automation infrastructure
3. Integration capabilities
4. Specialized libraries

At the same time, those are the very areas that become important down the road, when it’s time to "expand"! The good news is that these specific areas are excellent candidates for outsourcing because these subsystems interact with the rest of the product in ways that can be clearly specified, and are standalone to a large degree. Outsourcing these allows the project team to continue their focus on the core, while investing in the future of the product without "breaking the bank."

BREAKTHROUGH RESEARCH

Research is another area where outsourcing could be used. Again, the rationale is to keep the key team of developers "undisturbed" while new directions/technologies/approaches are explored. It should be noted that this only makes sense if the selected outsourcing partner has substantial experience in the specific area of research. It’s also important to mention that outsourced research should be "well orchestrated" - i.e. the framework of the research should be clearly specified ufront, and results should be closely monitored and managed.

“ONE-OFF” WELL-DEFINED PROJECTS

This is another area where outsourcing can prove successful, and is often done by “non-development” organizations – organizations without the requisite software development expertise. For example, the customization of specialized packages – CAD, ERP or CRM may require deep knowledge of the package's API. That knowledge may be quite specialized, and might not be "reused" internally outside the particular project in question – and so adding permanent hires to the company’s engineering ranks may not be beneficial. Which is why outsourcing a portion of this work can make sense – provided your outsourcing partner has good knowledge of the area, and the project specification is thought through, and well-defined.

CONCLUSION

While there may not be a black-and-white answer to, “which software projects lend themselves best to outsourcing?” a rule of thumb is that if the objective and scope of the project are well understood, it just may be a good candidate. The opposite is true as well – outsourcing "uncertainty" never works!