Outsourcing Software Development
We were asked to write a little about outsourcing. There is a great deal of information out there about this, and people use the term for different purposes. In this case, by outsourcing, we’re talking about having a vendor do software development for you. We have intentionally presented our viewpoint on this, which we’ve established over 22 years of working in this area. We can provide links to more neutral resources such as Harvard Business Review (HBR) or academic-level papers on the topic if you would like that. We started with this simple write-up to respect your time. We’re happy to write more or provide information at no cost to you, such as reprints or links from HBR on the topic. With your guidance, we can provide the information you’re looking for.
Roles to Outsource in Software Development:
Which roles can be outsourced?
When outsourcing work it's important to clearly define which responsibilities are to be handled by the outsourced team members. Outsourcing can be as minimal as adding a single outsourced programmer to an existing internal programming team or as extensive as moving all technical work to an external team (including architecture, front-end design, back-end development, QA, devops, etc.).
Which roles shouldn't be outsourced?
Regardless of the level of responsibility outsourced, it's important that product managers working directly for the business define what needs to be built. Lack of appropriate direction from the company is one of the most common reasons for outsourcing to fail. Roles that involve business strategy and rules and roles involving a leadership component generally shouldn't be outsourced due to concerns with experience and conflicts of interest.
How do we determine what’s best for our organization?
Often it's best to start small—such as integrating an outsourced programmer into an existing programming team—and then iterating and expanding from there based on what is best for your organization. Outsourced developers can often be particularly useful for bringing on skills that you don't anticipate needing for the long term as well. They can also serve in a consulting role to help train internal developers on new technologies.
Benefits of Outsourcing Software Development:
Outsourcing companies can typically scale the number of developers allocated to a project up or down faster and with more flexibility than can be done internally via W2 team members.
Can cost less than hiring directly
The scaling flexibility of an outsourcing company allows for a pay-for-what-you-use cost structure, similar to the model used by AWS and other cloud infrastructure solutions. This can reduce total operating costs, especially in situations where demand varies over time. In some markets, outsourcing is also cheaper when demand is constant when factoring in the additional costs involved in hiring a W2 team member (retirement and other benefits, recruiting/HR, management, and G&A).
Knowledge, experience, and skills on demand
Outsourcing companies may work on different projects using many different technology stacks simultaneously, giving them ready access to experienced people with a wide breadth of technical knowledge. Up and Running Software has worked with over 500 customers since 1995, and those projects have involved a huge number of different technologies and technical challenges. This has resulted in a team with a very diverse and extensive technical background. This can be especially advantageous in situations where short-term integration work with a third-party vendor calls for working with a technology outside of the stack normally used by the company.
Continuous training and improvement
An outsourcing company must continually train its team members on new technologies to secure new clients. Existing clients also benefit from this training, as the team stays up to date with new developments in the field. The software development industry changes very rapidly, and Up and Running's team has remained current for 22 years.
Adaptable to existing processes and workflows
Outsourcing companies that have worked with many clients have seen and worked with a large number of different development processes and workflows. They can help make suggestions and introduce new best practices into a team environment, but a successful outsourcing company is also willing to adapt to existing processes and workflows.
Efficient, pre-established teams
An outsourcing company typically has an efficient development team that has already worked together for years. The team members already know how to work together smoothly and communicate clearly to each other. Starting from scratch, it would take years to create the interpersonal connections that make such a team so strong.
Software development is in high demand and finding quality team members who are willing to stay with the company for a long time can be difficult. When an individual W2 employee receives an offer for a higher salary from a competing company it can be tempting for them to leave. However, an outsourcing company is incentivized to build and maintain long-term relationships with their clients. When an outsourcing company receives an offer for work, even if it pays more, it will scale to handle both projects rather than dropping one for the other. In Up and Running's experience, our development teams outlast most W2 development team members (excluding those who are managers or executive level leaders in their organizations) over the long run.
Drawbacks of Outsourcing Software Development:
Can be more expensive
Although cost is often cited as a primary reason for outsourcing, outsourcing is not always cheaper. Depending on how consistent the demand for work is and the ancillary costs of W2 team members (retirement and other benefits, recruiting/HR, management, and G&A), outsourcing may or may not actually have a lower total cost.
Workers are remote
Although companies are increasingly allowing W2 employees to work remotely, for companies that are not accustomed to remote workers there can sometimes be challenges with integrating remote workers into the company. New tools and processes may need to be introduced for coordination with remote workers, although often local teams already make use of many of the same tools that are required for remote team members to engage efficiently.
Security often comes up as a concern with remote workers, and without proper operations security remote workers can present increased risk to the business. However, if steps like scrubbing identifying information from database exports before transferring them between environments and restricting access to live data are taken, the risks involved with remote workers can often be mitigated to the point where internal security becomes a greater risk due to the increased access to sensitive equipment and information that internal employees have. Ultimately, what matters is the trustworthiness of the individuals doing the work, and whether a person is a remote worker or a W2 employee has no effect on, or correlation with, their trustworthiness.
Company integration and unity
In some circumstances, introducing remote workers can create an "us vs. them" environment. Especially at the beginning of the engagement, it's important that the team members have good communication and establish a shared vision for the company and project. It's important that the teams not spiral into a pattern of blaming the other side for any deficiencies or problems, although fortunately quality personnel generally don’t think that way.
Lack of business domain experience
Programmers from an outsourcing company are generally highly trained in programming, but they are not trained in the specific industry for which they end up programming software. It's important that product managers with industry experience define how the software should work and communicate the business rules to the developers. One additional benefit of this approach is that it allows employees to focus on the areas they are best at: those in the industry can focus on the business rules they already know, and the programmers can focus on programming. This can result in greater ROI and happier people as they get to focus on what they want to do.
Lack of direction for outside team members
Remote workers don't always have access to the same information as internal employees, which can sometimes make it difficult for them to work in a self-directed fashion. Good communication and structured processes are important to mitigating this potential downside.
Download this article in PDF