In this post we take a brief look at outsourcing software development, how to tackle quality assurance and why you should even consider outsourcing in the first place.
So you want to outsource your software development projects. It can be a daunting task. You have questions. Is outsourcing your cup of tea? How do you find out? How do you find a suitable partner to work with? How do you measure the performance, how about quality of the code, what’s your ROI?
In this post let’s look at outsourcing software development and quality assurance and why you should even consider outsourcing. In a later post we can dwell more on how to successfully build a reliable offshore team that is not only good for the CFO (cost effective) but also produces good solid code (your development team manager has an ear to ear grin). I will describe in a later post how outsourcing strategies have been built based on experience and usually involve a hands-on approach where solid structured processes are built in order maximize the chances of success.
The obvious first question is why outsource? If you are a software development company or the software division that takes care of all the software your company runs on, then you seriously need to evaluate outsourcing as one of your options. As an executive running an independent small to medium sized software dev shop or a software development division within your company you are constantly faced with the following challenges.
- Your development projects are short staffed.
- Existing projects need to be maintained. Your existing staff claims “But it’s his code. Ask him to do it.”
- Your user community is constantly asking “Give me more and more.”
- Your CEO is constantly snip, snip, snipping away at your development budget.
- Your Production software needs 24/7 support. Meaning it needs constant “babysitting.”
- The constant changing landscape of the dev tools makes your software a dinosaur that none of the existing team will touch. They all want to work with the new toy.
- That nagging bug(s) in your software needs to be fixed, but you say “It’s a Feature not a Bug.”
Let’s dive into each of the above and look at how outsourcing could help.
- Development Projects are short staffed – Within an organization the Project Managers are constantly wrestling with each other for resources. In my experience as a PM for a large company I had a portfolio of projects that needed to be released as of yesterday, meaning from the user perspective every project was a top priority. The issue was the development resources needed for the projects. Every developer was assigned to multiple projects in the interest of keeping all projects moving and all users happy (sort of). The consequence, what I like to call the “dance with delivery date”, is every project’s delivery date gets pushed back further and further. Dedicated resources on a project are a luxury PM’s dream of.
- Maintenance on an existing project – We (the dev community) have all been there. We rolled off this fine piece of software. Users love it. They even gave you an award back in 2006, but now it’s 2015. The good news is your core software still works; users still love it (you can keep the award). The bad news is the software needs maintenance. Your IT manager wants to upgrade the user community to the latest and greatest OS, but your software is not compatible. It needs to be upgraded. Upgrade estimate is about 2 months. None of the other developers will touch it.
- New Features, new reports, etc – Users are a demanding bunch. That’s what they do. In short it’s more work. As a PM how do I fit this new feature list into my development team’s already tight schedule? When we prioritize absolutely needed features, everything else gets put on the wish list. Soon the wish list becomes daunting.
- Shrinking Budgets and Staff retention – The new kid on the block (new CEO) is going to take your company to the next level. However, before he does that he needs to restructure, reorganize, rearrange, streamline… In simple terms, your open development position will never be filled. CEO says we need to do more with what we have. Yeah right, tell that to my development team. If you are a small to medium sized business, hiring new talent can itself be a daunting task. Take a gander on the job boards and you realize that the geek world is alive, well and thriving. So many open positions, so few good programmers.
- 365/24/7 Support – Who works year round? Well someone does. Especially if you have users all around the world, someone is on your application all the time and sure enough they hit a bump or they don’t know how to work the work around. They call help desk, help desk escalates the ticket to the next level (he doesn’t know how to work the work around either) and your SLA says you need to provide a solution in 4 hours. You need 24/7 support.
- Tools, tools and more tools – They say change is the one constant in life. The part they did not say is that it’s painful. What’s new today is not tomorrow. New technologies, new frameworks, new programming patterns and architecture can all be overwhelming. There are a hundred different ways to build an application. As a dev shop you need to be on top of the change. How is it possible for a business of your size to keep on top of these ever evolving tech tools?
- Quality Assurance – Do you QA? Do you have a separate team who tries and finds faults with your beautiful piece of software? Some companies have their developers do QA. They are good at it. They write clean code. As a PM, I am constantly surprised when a company does not have a dedicated Quality Assurance team to write test plans, test scenarios and test and re-test every bit of functionality of the software. Often budget is the reason cited. Many a times it’s the PM or the Business Analyst who doubles as QA. This is expensive in terms of dollars and hours. And the result is untested code, untested scenarios and bugs that have quality implications on the software.
Outsourcing can help with all of these issues.
There are multiple ways that outsourcing some parts of the development to a reliable team offshore can help with any or all of the challenges above. But the solution can itself become a challenge. Strategies to identify and hire the right partner, types of projects to outsource, how to monitor progress, how to ensure code quality, what to do if there are issues with your current outsourcing vendor etc. will be discussed in later posts.