How to decide about using outsourcing for software development and application maintenance projects

Sharing our learnings about outsourcing and offshore software development based on experience working with US companies over last 15 years.

Listen to this Article using Text-to-Speech

How to decide about using outsourcing for software development and application maintenance projects

By Piyush Bhatt  at Jan 02, 2024  0 Comments

How to decide about using outsourcing for software development and application maintenance projects.


Over the period of the last 15 years, I have had the opportunity to interact and work with several business leaders who either used or considered outsourcing their IT projects to local companies or to offshore partners. Here I am sharing some thoughts about the learnings we had from these experiences.

Whether you are a CIO or CTO in a medium size corporate, a founder for a start-up or director or manager of IT unit of a large enterprise, at some point you have been tasked to decide whether to use external resources to deliver your projects.

Outsourcing is of two types:

Outsourcing to a software development firm locally in US or your own country 

Outsourcing to software development firm internationally - generally known as Offshore Outsourcing.

Here we are going to discuss outsourcing in general and address decision factors about each type of outsourcing. While people tend to think more about 'offshore', there are pros and cons for each model of outsourcing.

Why to outsource?


Costs should not be the reason or only reason - this should be very clear in your mind when you start. There can be several reasons that are pressing you or your supervisor to start looking for outsourcing services for your software or application development projects.

- Current team is occupied and you need additional capacity to handle the workload
- Skillset required for the development work is not available inhouse
- Your company's core business is non-IT and hiring IT resources inhouse would be costly or extra overhead
- Your company is looking to grow IT team slowly by first hiring external resources and then bringing the work inhouse
- Company strategy is to build the product outside and then maintain inhouse
- The main developer who knew about the application is leaving and you cannot find replacement quickly
- A Vendor built part of the application and then running into issues that they cannot fix

As you see, it could be a strategic move to use outsourcing or you could be forced to do so because of the business situations. The above reasons are for generic outsourcing. There are other reasons that require using offshore model.

The key reason to use offshore for outsourcing is Costs - the maintenance costs of the application cannot be justified using local resources - and it drives you to find cost effective alternatives.

Systems require 24-hour monitoring - and using resources in different time zones becomes necessary.

Your company is large enough and has staff around the globe who require local support.

The company strategy is to keep the application knowledge base across different teams in different countries, so no one is bottleneck, and it reduces market driven risks.

When to outsource?


You might ask whether 'when' is really important to think about - it is always 'Now' in business. True - but you do not want to be too early or too late to decide this either.

It is too early to decide about outsourcing when:

You just joined a new company that has never done outsourcing. You did this in the past with your previous company and you want to impress your new employer. A career advice - "it is bad idea to start outsourcing for a company you just joined". Because you will be pairing up two companies (or two teams) to work with each other, and along with you in between, there is no trust within this trio.

Cost reduction is necessary, and the company has never done outsourcing before. Many companies or managers flat fall on their face when they expect that they will reduce the cost just by outsourcing. The team who manages the projects need to have prior experience with the outsourcing team, so they know their strengths and weaknesses. Before having this confidence, outsourcing will bleed the team of both time and money, and you will not get desired results.

There are no processes and defined outcome for success. The outcome for success should be very well defined so that you can enforce the processes that can be followed by both internal and external teams. Otherwise, you will run into teams pointing fingers at each other or waiting on each other.

It is too late to decide about outsourcing when:

The project was done internally first and then half-way through management decides to outsource it entirely. It is too late to outsource the project to a third party and expect that they can pick it up half-way. There will be lot of back and forth and throwing ball over the court when the team picks up half-way. There are ways to manage outsourcing in this situation, but it all becomes subjective here.

You are under deadline for meeting some compliance requirement or preparing for a demo for funding round meeting. In such scenarios, onboarding new people will take away time that is critical to meet current deadlines. The approach at this time would be to outsource pieces of work that are not too critical and require the least amount of time from your critical resources.

What to outsource?


We are going to address this question keeping the original subject in mind here that you have software development or application maintenance project, and you are deciding what to outsource for such projects.

It highly depends on your company's own capabilities, what you can do in-house and what you can outsource. The high-level advice is “you want to outsource what you can clearly measure the success of”.

If you have inhouse technical capabilities:

> If your team is good at solution architecture and design, then keep this in-house. Hire external teams to follow the practice you have with specific instructions to follow. Have your team review the code and design changes as they are made to make sure it does not break away from their standards of practice.

> If your team is inexperienced in the desired technology, you may decide to outsource the end-to-end development of the application. You will need to plan for maintenance and upkeep of the application or system once it is built. Either you will have to train your team to maintain it, or you will have to keep a vendor resource available for this. You want to agree on future price increases for such support.

> You can also outsource other activities such as

UI/UX - Graphics Design

QA - Testing


CI/CD DevOps activities

If you do not have inhouse technical capabilities:

In this case you want to engage in a model to get a fixed outcome for fixed costs. You will surely be at the mercy of the vendor for their quality of work and integrity. But past references and reviewing the completed projects may help you decide this. You can also engage a 3rd party consultant to review the work to ensure that your investment is safe.

Outsource the end-to-end development of application or module. Let the vendor decide what resources they need to complete the project, while you ensure the delivered product meets your requirements.

Remember a cliché that 'you cannot outsource the risks and keep all the profit'.

Whom to outsource?


'Who' is the most important question in your decision process. The vendor you are trying to find will either make it or break it. If your first experience with outsourcing vendor is bad, then you may never try it again. But here are things you can look for:

> Your technology or software services vendor is not like a sandwich vendor. He is your technological partner - possibly for a long time. You want to compare whether in terms of size of your company revenue, number of people, amount of business - is this vendor equal? The more equal and similar the vendor is, the better your relationship will be. Also, a vendor who is smaller in size than your own company will provide better service too. Vendor who is bigger than your own company will never have enough interest in your company's success and will drive your costs higher.
As your relationship progresses, if the vendor becomes a true partner by having some equity, then it will be true win-win. Find out if the vendor has such relationships with their prior clients.

> The outsourcing company should be headed by technical geniuses rather than mere sales or marketing people. Sales or Marketing head of the vendor company will sound too good initially but cannot deliver the right solution. Technical leadership will be able to guide and advise when needed.

> The outsourcing company should have physical office as local as possible. This will reduce a lot of logistical costs. Even in 2024 when more than half of technical staff works remotely, physical proximity will be unbelievably valuable as time goes by.

> The Outsourcing company should be incorporated as well as should have business insurance in the US (or your local country). Technology vendors will know a lot more about your business, confidential information as well as data that you want to be able to protect using local laws. Signing NDA (non-disclosure agreements) or Service Agreements with a technology vendor will only make sense when both the buyer and the service provider are in the same country.

> Verify references for the vendor company within your own circle. Nowadays people ask their friends for referral for few hundred-dollar handy man job - but they trust the online reviews to do business for hundreds of thousands of dollars. That's an irony. There are many review sites that review services companies, but then the services companies can pay for positive reviews as well as hide any negative reviews. The review sites have their own business model to make profit out of these reviews and sponsorship, so you cannot trust the review sites.

> Verify Digital profiles on LinkedIn of the people you are going to be working with. People make company. Their individual reputation is what matters most to them when they work on any project.


Even if you know all the above, you will go wrong with companies and you will be right for few. No matter how much training is given, everyone learns the most from their own mistakes.

A prospective company approached us for their possible outsourcing needs. We were local to them being in metro Detroit area. After a few presentations and all, they went with another company in Dallas. They told us that the reason they picked another company was because a UI/UX guy was in the leadership team in that company. After a year or so I met a consultant who mentioned he was hired as consultant by this prospect - so I asked curiously what happened to their outsourcing company they hired over us? Consultant found out that the relationship did not work out after few months. The reason is simple - they went for shiny things.


How to outsource?


Success of outsourcing, like all other endeavors, also depends on its execution. The goal of this article was to write about how to decide about outsourcing. We hope that all the above thoughts may help you make your own decisions too. We will be publishing another article about How to execute outsourcing projects efficiently and make it more effective based on our own learnings.


Previous Post
Not available for the Jan, 2024
Next Post
Not available for the Jan, 2024

Join The Discussion

Leave a Reply