Micro Focus is now part of OpenText. Learn more >

You are here

You are here

In-house vs. outsourcing software development: 6 questions to ask first

public://pictures/RobertRimmer.jpg
Robert Rimmer Information Analyst, HPE
 

You’ve seen it before: An email from senior management comes in stating that they're delighted to announce that they have contracted with outside software development experts who will deliver valuable training and roll out innovative solutions to all of your teams. Perhaps the project is to codify design requirements or to automate a key process that's highly dependent on human judgment. Once everyone’s up to speed, management says, it will result in dramatic cost savings, a transformation in customer experience, or both.

Then, after the money has been paid and several hours spent on outsourced software development expertise, reality hits. The change is slower than expected, and possibly more painful. Perhaps it was a core competency, such as a mobile app development project, that should have been kept in-house. If the external development experts' final product doesn't work immediately, management explains that change takes time. Then the executives in charge of the decision move on, and their replacements decide to switch to a new strategy. The motivation might be to honestly try to fix things, or simply to demonstrate that "we are going to do things differently than the last guys, since they obviously didn't understand the issues."

The underlying problem is that businesses place too much trust in outside development experts — and in external expertise in general. People tend to forget that these experts’ primary purpose is to promote change in the way things are done so that they can sell training or certifications for the latest, greatest systems. Under constant pressure to increase productivity and cut costs, executives nonetheless look at external sources of wisdom and their seemingly lucrative new ideas as a first option. Sometimes, however, you're better off using the resources you have in-house rather than outsourcing.

Don't rush to outsource software development

When your team is as lean as it can be (i.e., understaffed) and the pressure to deliver more is constantly increasing, engaging with an external agency seems like an easier option. Taking people out of their day jobs and into internal, problem-solving “tiger teams” is a problematic proposition in today’s organizational reality, even if going outside means ignoring organizational wisdom and knowledge and spending lots of cash.

The speed at which technology progresses is often a contributing factor. Take, for example, corporate social networking. A few years after Facebook became a mainstream phenomenon, companies were scrambling to put a corporate equivalent in place, trying to realize the promise of fully flowing, efficient, and transparent organizational communication. Although I am aware of several development experts who built such networks, I have not heard of a single successful long-term play in this area.

Now think about software containers and products such as Docker. Regardless of whether the technology is right for the customer, it’s unthinkable for a public, hybrid, or private cloud provider to not promote a container or Docker play. It’s something that supplies salespeople with the headlines they need to manage a conversation. Once such ideas gain wide acceptance in the industry, customers begin to demand them. After all, if you are not using them, you might lose business. It becomes a self-fulfilling prophecy: "Company X wasn't using method Y, and look what happened to it!"

Sometimes standards have been adopted to such an extent that people forget what they set out to standardize in the first place. A good example is ISO 9001, which focuses on certifying an organization, but is often mistakenly understood as addressing product quality. In my experience, the standard has very little to do with the actual quality of a product. You can make as many mistakes as you like, but so long as they are all documented according to the rules, you will still be accredited and regarded as a "quality" organization.

Six questions to ask before outsourcing development

So when should you outsource software development vs. keeping it in-house?

Despite the objections I have outlined, outside, objective opinions can be immensely valuable, especially if your problem is well defined and if external software development experts are aligned with your business objectives. If you're considering outside help, here are some simple questions you should ask before proceeding:

  1. Should something be done at all? Decide whether the premise is specific and relevant to your business reality. The question should be answered not only at the abstract level of boardroom discussions, but also by people in middle management who are acutely aware of how the everyday business runs.

  2. Why should we do this? It may be deemed imperative due to customer demands, competitive reality, or other valid reasons. However, “Everyone else is doing it” is not an acceptable answer.

  3. What’s wrong or limiting with what we have in place? Sometimes, the products or processes you have are good enough as they are, or just need a simple extension.

  4. What is our maximum risk? Examine the possible direct and indirect impacts of failure, as well as the probability that such risks will materialize.

  5. What is the expert risking? If something goes wrong, the external party should feel some of the pain. If it goes very well, on the other hand, it should share in the upside. It’s a simple case of having skin in the game.

  6. What is your definition of "done"? Include a clear, visible set of criteria that must be met in order to declare the project a success. This isn’t about finger-pointing: In agile methodologies you perform retrospectives and learn from your mistakes. Set the expectation that this is a continuous, multiparty effort.

Change is good, but you don't always need external support to get there. Sometimes you can achieve outstanding results using internal knowledge and resources. While there are times when external experts bring unrivaled capabilities or an invaluable outside perspective, companies should exercise good judgment to ensure that internal resources can't do the job better and that the effort will be truly aligned with the business' goals. 

Keep learning

Read more articles about: App Dev & TestingApp Dev