The Pros and Cons of Software Development Outsourcing
August 22, 2019 / super user
Reading Time: 11 minutes
Over the last 10 years, one of the hottest and most controversial issues in the world of business has been outsourcing, typically from developed countries like the United States to poorer, developing ones. This has especially been true in the world of software development where many companies have opted for the far-cheaper services of programmers in the developing world, who are often able to passably compete with their stateside counterparts on skills while dramatically undercutting them on price.
Such offshoring has given outsourcing a bad name, with notorious quality issues, serious communications barriers and failed projects as far as the eye can see. Less known is the fact that much outsourcing takes place right in the United States. Known as onshoring, this form of in-country outsourcing completely removes the most serious concerns that decision makers express when weighing whether to outsource a software project.
With onshore outsourcing, quality standards remain at the highest level, and the language barrier disappears. What’s more, U.S.-based outsourcing companies, such as Baytech Consulting, provide world-class talent and customized solutions that create tremendous value for businesses in need of technology solutions. This frees those businesses up, allowing key employees to focus on their core competencies rather than learning the violin on stage.
When done right, outsourcing can create powerful synergies, freeing up employees to do what they do best while delivering top-quality technology solutions that streamline operations and give businesses the competitive edge they need. However, there are also pitfalls and drawbacks to onshore outsourcing. Let’s take a look at some of the major benefits that a company seeking onshoring solutions can expect to derive, keeping in mind when making such a move is appropriate as well as noting the contexts in which the drawbacks are likely to outweigh the benefits.
Outsourcing can get projects done that might otherwise be impossible
Embarking on a major software development project is not as simple as some other business cases for outsourcing. Often, a company will need to develop advanced features using cutting-edge technologies, like microservices and responsive web front ends. These projects are not the time to go hunting for new employees and trying to assemble a team on the fly. Attempting to keep projects like this in house for all but the most sophisticated and experienced IT departments would be like a local high-school coach trying to assemble a basketball team that can compete in the NBA: Barring a miracle, it’s going to end in tears.
Business applications like CRM programs, customer-facing web apps, ecommerce sites and other common technologies are highly complex, often using many different computer languages, data-management platforms and hardware to bring a project to fruition. This is not the time for a business decision maker to start playing Silicon Valley entrepreneur, throwing together a ragtag team of street-level recruits and hoping it all comes together. For major software projects, you want to go with a proven team of professional developers, with a portfolio that demonstrates their ability to complete demanding projects to customers’ specifications.
For most non-technological companies, realizing the flexibility, cost savings and enormous advantage in quality, speed and efficiency that outsourcing offers will ultimately be far cheaper than attempting to assemble in-house capabilities to complete complex technology projects.
Drawback: Outsourcing every software project means you won’t develop those skills in house
It’s not likely that personnel at a real estate company with a once-off need for the development of custom CRM software will ever need to know what terms like microservices or event sourcing even mean, much less have an in-house team made up of experts in those programming techniques.
However, a company that is constantly developing web applications may think twice before passing up the opportunity to develop formidable in-house programming capabilities that use the latest technologies.
In general, companies that need only infrequent overhauls of their software, whether back end or customer facing, will find that outsourcing their software development projects is vastly easier, more efficient and more cost effective than attempting to carry them out in house. This is especially true for companies whose core business has nothing to do with software development and who may not even have a single dedicated IT person. Such companies should generally stay far away from attempting to carry out complex software development projects themselves.
Outsourcing can leverage specialists with the right tools and skills
When your car’s transmission starts having problems, chances are that you will end up taking it into a shop that specializes in transmissions. Likewise, those who have specific medical issues usually end up being treated by doctors who specialize in the relevant area of medicine.
This tendency in modern society towards specialization is more than just a way for service providers to avoid learning more about cars, human medicine or whatever industry they’re working in; it’s a proven means of maximizing efficiency and minimizing costs. In fact, specialization is one of the key concepts that allowed for the development of modernity itself. As Henry Ford and other industrial titans discovered, having 10 employees who are each expert at one of 10 tasks is far better than having 10 generalists who each assemble the entire product themselves.
The same principle applies to software development, often with even greater implications for cost and efficiency. Programming languages and techniques may take even the most talented people years to master. Outsourcing can often match companies who have specific demands up with coders who have precisely the right hard-won skillset for the job. This creates massive efficiency gains versus tapping an in-house employee to write code in a language or architectural setting with which they are unfamiliar.
In many cases, it may be tempting for an organization to push their own IT staff to complete a project for which they have not developed robust experience and skills. Such cases call for steely eyed assessments. Just like in the case of transmission repairs, most local shop owners could complete a transmission repair if they had to. But without the experience and the right tools, it might take a general mechanic twice as long as a transmission-repair specialist. And going with a specialist translates into much more than just immediate cost savings.
With a poorly done transmission job, the chances are high that the repair will fail at some point in the future. The same problem arises with software that is poorly coded, stress tested or designed. Sure, a company may be able to tap one of its own staff to carry out a complex development project. But without the years of experience that top-end developers usually have in their specialty, that company is likely to run into serious problems in the future when it comes to extensibility, efficiency, functionality and even software maintenance.
Going with professional specialists avoids all of these problems while usually saving money up front due to shorter project-completion times.
Drawback: Becoming permanently reliant on outside vendors can be expensive
For most companies, even software development firms, outsourcing projects for which the company does not have adequate expertise will make sense. However, if the nature of the project is ongoing or iterative, companies should always consider whether the significant costs involved in developing in-house expertise in a new programming technique or language will maximize profits over the long run versus outsourcing. Over time, coming to rely completely on outside vendors can end up costing significantly more than in-housing the functions in question.
With once-off or infrequent projects, outsourcing will nearly always be the optimal decision. However, for projects that may involve tasks that are needed on a recurring basis, spending the time, money and human resources to develop those abilities in the short run can save big money over the long run.
Outsourcing can provide large cost savings
Shorter project-completion times on complex and difficult jobs is not the only way that money can be saved by outsourcing. One of the most salient reasons that companies choose to outsource software development is that many coding tasks do not require great skill or expertise to carry out. In fact, it is mostly repetitive grunt work that has been the target of much outsourcing, not just in the software field but across all industries in the United States.
In some cases, outsourcing companies that operate in the United States may be able to save money on low-skill IT tasks by providing high levels of automation. But the most frequent way that outsourcing allows companies to save big on low-level IT jobs is by labor arbitrage: outsourcing to countries where the average pay for that kind of work is far less than in developed nations.
Some developing countries with the unique combination of low wages and high human capital, especially China and India, have become well known as outsourcing destinations. In the case of India, the average programmer there makes only around 8 percent of what their American counterpart would. These huge disparities in salary for what is, at least on the surface, the same work can prove to be an irresistible temptation for businesses that are looking to save money wherever possible.
But while saving money up front by simply paying workers less is one of the biggest draws for companies looking to outsource, it also turns out to be one of the most problematic. When done right, outsourcing offshore for the sole purpose of saving on labor costs can be an effective strategy, especially when it’s used in a way that frees up stateside employees to concentrate on the business’ core mission.
However, offshore outsourcing can also ensnare companies in some very difficult situations when they go in without a strong plan and well-defined goals.
Drawback: Pure labor-arbitrage outsourcing can cause big problems
Companies that are outsourcing primarily to save on labor costs should generally be wary of delegating complex tasks to the outsourcing firm. While it makes little sense to use a stateside programmer who is getting paid $100,000 per year to carry out the coding equivalent of mopping the floor, it can make even less sense to expect someone who is getting paid $3 per hour to handle mission-critical development or high-level systems architecture.
A good recent example of this is the difficulty encountered by Boeing in its wayward outsourcing approach. The company outsourced critical software development tasks on its 737 Max airplane. This outsourced code was later discovered to have been a contributing factor in two fatal crashes. The fallout has since cost the company hundreds of millions of dollars. And with its entire 737 Max fleet grounded indefinitely and the model’s reputation indelibly tarnished, Boeing’s ill-considered outsourcing decision, which was probably intended to save a few hundred thousand dollars in labor costs, could ultimately end up costing the plane maker tens of billions. In this case, outsourcing solely for the purpose of saving on labor costs was clearly ill advised.
Another prominent issue with labor-arbitrage outsourcing is the language and culture barrier, which can lead to extreme difficulty in managing projects that must, by necessity, be conducted at great distance. Hiring an outsourcing firm in a foreign country is not an automatic deal killer. But communication difficulty has been named as the number-one problem that companies face when they outsource software development offshore.
Employee morale can often be severely affected by any decision to outsource work based solely on labor-cost considerations. While a changing employment landscape due to efficiency-increasing developments has always been an inherent part of the business world, it’s still true that employees, ranging from tenant farmers displaced by mechanized equipment all the way up to modern computer programmers displaced by their lower-cost developing-world peers, tend to resent these changes deeply.
The potential for outsourcing to damage employee morale means that a holistic approach in assessing the value of outsourcing must be carefully taken. A project that nominally saves tens of thousands of dollars will likely not be the optimal choice if it ultimately leads to an exodus of a company’s best people.
Finally, offshore outsourcing is notorious for producing quality issues. The maxim that one gets what they pay for reigns when it comes to outsourcing as well. It is ultimately a judgement call as to what tasks should be insourced, outsourced to world-class onshore firms or outsourced to cowboy cubicle farms operating out of the Third World. The latter can definitely be leveraged for big cost savings on certain jobs. But as the case of Boeing and thousands of others like it amply illustrate, letting greed take over the outsourcing decision-making process is to be avoided.
Summarizing when outsourcing is likely to be the right play versus when it’s not
Every technology project exists on a continuum that determines how likely outsourcing is to save money for the company carrying that project out. In general, cultivating in-house software development capabilities will become more valuable when the following are true:
- The skillset needs to be deployed with frequency. A property management company probably doesn’t need to develop top-level relational database architecture skills whereas a consultancy that helps property management firms streamline operations through software may profit from developing those skillsets in house.
- Developing certain software is part of the company’s core business. Businesses that must field market-leading software solutions as part of their core product may profit from developing those abilities in house rather than outsourcing them.
- It is anticipated that the software will require ongoing improvements and intensive administration or maintenance efforts. In cases where constant improvements to the software are anticipated, developing in-house IT talent may be the optimal choice.
On the other hand, outsourcing projects can be an attractive option when the following statements hold:
- The software development project is a once-off event. Spending big money to develop in-house expertise that will never be used again obviously makes little sense.
- Serious money can be saved on grunt work. Not all coding requires genius-level hacking skills. Hiring out grunt work where a company is saving $10 or more per employee-hour for those doing the coding can add up quickly.
- The company in question doesn’t have anywhere near the existing skillset required to carry out the project. If a company needs a software development project completed but doesn’t have the in-house talent to even get started, the decision to outsource will usually be an easy one. Attempting to form a world-class IT team from scratch will be a gigantic waste of resources and a mistake to avoid for most businesses that are grappling with urgent software projects.
Onshore outsourcing can give you all the benefits while minimizing risks
Many people are unaware that onshore companies can often provide all the top benefits of outsourcing without exposing clients to project-killing risks.
Stateside outsourcing of software development gives companies that may not have specific in-house skills and tools access to world-class developers with proven track records of success. At the same time, onshore outsourcing companies can often provide long-term cost savings on even mundane projects that far outstrip the expected value of problem-fraught offshoring.
Companies like Baytech eliminate almost all of the serious problems that are associated with offshoring software development. They use world-class full stack consultants who are all native English speakers and who have been recruited not just locally but from across the country, with such dedicated consulting firms usually only hiring on the absolute top talent.
Onshore firms make project management much easier due to the generally far higher levels of professionalism and increased skill in coding, including project management, modular design and code documentation.
This brings up another leading complaint among those who have run into offshoring failures with software development outsourcing: Code is often written in sloppy or even unintelligible form, often with poor, unintelligible or nonexistent documentation. While software delivered in this state can work, it can render later extensibility or even routine maintenance impossible. Good onshore consultancies eliminate these problems, with a view towards not just creating functioning software but code that is easily understood, built upon and maintained.
Finally, even in situations where outsourcing is being used as a means to reduce total labor costs, brining in stateside consulting firms rather than going with firms in developing countries whose primary selling point is very obviously labor arbitrage tends to have a less-negative effect on employee morale.
Employees who see that their tasks are being delegated away to ersatz third-world replacements who may be conspicuously less skilled than they are will often deeply resent such moves. On the other hand, bringing on board professional consultants who are both clearly qualified and easy to work with can greatly lessen any simmering morale issues that may result from an outsourcing decision.