You can edit almost every page by Creating an account. Otherwise, see the FAQ.

Insourcing in Software Development

From EverybodyWiki Bios & Wiki




Insourcing in software development is the reverse process of outsourcing.:[1] and by definition, the former follows the latter. It refers to the event of bringing a process or service under the direct responsibility of a company, which previously had contracted a partner company to do those tasks. Where outsourcing can consist of moving employees or assets to another company, insourcing is often manifested in undoing those transitions [2]. This means that the outsourced assets have to be moved back into the company which can be a difficult quest.

There are many reasons for companies to outsource one of their internal activities. Cost reduction, a lack of in-house knowledge or reducing time to market (by using Follow-the-sun) are some example reasons for outsourcing. However, outsourcing in software development, especially when working with agile methods, can be very hard to manage. There are numerous examples of failed outsourced projects[3]. There are documented cases where outsourcing fails because there is a lack of trust caused by poor socialization or a poor socio-cultural fit[4]. When an outsourced project is failing, insourcing is often done to try to keep damages to a minimum.

History[edit]

The history of insourcing is tied to the history of outsourcing. Because the default for a company was to develop their products in-house, insourcing only became a topic of discussion after outsourcing had become a viable option. The interest in insourcing has shifted throughout the years, as did the interest in outsourcing. Where at first, insourcing was mainly done to revert or avoid the problems with outsourcing, the discussion has become more interesting in recent years. This is due to the development of cooperation tools that make outsourcing less difficult and the fact that more and more researchers have been looking into the benefits of outsourcing and the factors that are important to make outsourcing a success.

Outsourcing[edit]

As the need for software started to grow, a growing number of companies were struggling to get a highly educated labor force big enough to keep up with the demand of customers. This combined with the lower labor costs in countries like China and India triggered companies to start outsourcing part of their operations. This trend started around the 80s. When time progressed and means for global collaboration came available through technological developments, more companies engaged in outsourcing. However, not all outsourcing projects conducted by companies seemed to lead to the expected benefits (lower costs, higher productivity, access to local market).

A comparison study performed on different researches that reported on offshore outsourcing performance showed that outsourcing is not always successful[3]. Furthermore, there is little evidence that outsourcing necessarily leads to the benefits it promises. For example, it is not clear if outsourcing does reduce costs[5]. There are studies that have listed reasons for outsourcing to fail. Some reasons are listed here:

  • Vendors that over-promise and/or under-deliver[6]
  • Poor socialization and/or poor socio-cultural fit[4]
  • High attrition rates at the vendor which leads to loss of productivity
  • Improper setup of technological infrastructure at the vendor
  • Mutual disagreements
  • No costs savings due to hidden costs[5] (e.g. transportation costs, training costs, etc.)

When companies face these problems, they sometimes start with insourcing their previously outsourced work or they start looking for a partnership.

Insourcing[edit]

Researchers were reporting on the failed outsourcing attempts of different companies more often during the growth of the outsourcing trend. Companies started pulling back their outsourced business processes which comes with a lot of challenges: knowledge may be lost, people on the onshore location have to be trained to take over the work, there are less human resources, etc. Insourcing is a relatively new field of research. Some research has been done on offshore insourcing[7][3].

Different types of sourcing arrangements[edit]

In Global Software Development several disciplines have emerged in response to complexity and challenges in out- and insourcing. Four main types of sourcing arrangements can be distinguished: onshore outsourcing, offshore outsourcing, onshore insourcing and offshore insourcing [8]. Global Software Engineering occurs in the offshore in- and outsourcing-environment[3].

Sourcing[edit]

Refers to the form of collaboration, of which there are two types[9]

  • Insourcing: collaboration within a company
  • Outsourcing: collaboration between a company and a third-party

Shoring[edit]

Is about the distance to the site or location of a collaboration. Four types are distinguished:[9]

  • Onshoring: happens in the same country
  • Offshoring: occurs in a different country
  • Nearshoring: offshoring in a neighboring country
  • Farshoring: offshoring in a distant country

Onshore outsourcing[edit]

Collaboration between a company and a third-party that is located in the same country. This is for instance when external company B performs certain tasks (e.g. software development) for company A, while B is located in the same country. A company might consider outsourcing to increase the quality of their product[10] as other companies may have more expertise on certain subjects. Similarly, looking for specific knowledge or skills outside of the inhouse talent pool, prevents the employers from having to invest in education for their inhouse developers every time a problem arises that is currently not covered by the knowledge of the developers. A major advantage of onshore outsourcing is that a lot of the challenges of Global Software engineering are avoided. For instance, not having to deal with differences in time-zone, or cultural differences.

Offshore outsourcing[edit]

Is the situation in which a company engages in collaboration with a third-party in a foreign country. This is for instance when company A decides to move some of its operations to company B that is located in another country than where A is located. Reasons for offshore outsourcing might be cost-savings, around-the-clock development, access to local markets and access to highly skilled specialists [11]. Whether off-shoring is the right decision for a company comes down to a trade-off between cost-saving and access to specific knowledge and the complication like cultural differences or timezone differences.

Onshore insourcing[edit]

Refers to company-internal collaboration within one country. When business processes happen within one company A, in one country. This is often the way companies start out, before they start looking into the other options. As with the other modes of operation, it has it's pro's and con's. Although the knowledge is kept inhouse and control over the daily operation are the greatest in this way of working, one also loses the advantages described in the sections of the other sourcing-methods.

Offshore insourcing[edit]

Refers to company-internal collaboration that occurs in different countries. When business processes happen within one company A in different countries. When offshore outsourcing turns out to be less valuable than expected, companies can consider a transition to offshore insourcing. In that case the company A has some own employees in another country. Offshore insourcing has the benefits of enabling higher control over the offshore location and increased shared corporate affiliation.[3]. Another reason for offshore insourcing is the following: Outsourcing may have the detrimental impact on quality as the companies work in different coding environments or have a different corporate culture. By incorporating a company with the outsourcing party (A decides to incorporate company B, while B is still located in another company) i.e. insourcing, the two parties can be better aligned (technically, culturally and in communication). So offshore insourcing can be a solution to the quality issue in offshore outsourcing [3]

Why? Reasons for Insourcing[edit]

A variety of reasons exist why a company could decide to go back to insourcing. Arguments can be found in the field of cost savings, impact on the business or minimising dependency on the 3rd party party.

Cost savings[edit]

This reason might be a surprise, as one of the main reasons for outsourcing business proceses is also cost savings. And when outsourcing is done right, this is surely a worthwhile factor to consider. However, research has indicated that companies often run into unforeseen cost and they do not achieve the desired results. Therefore, in some cases it might be cheaper to insource, rather than keep trying to make outsourcing work. Unforeseen costs can come in many forms:

  • Selecting a vendor: When selecting a vendor, you have to visit the sites and the people you will be working with in order to determine whether it is the right fit. This however will require spending money on traveling expenses among other things
  • Cost of managing the contract
  • Cost of contract-based personnel
  • Traveling (for example for scouting sites and maintaining relationships)
  • Cost of knowledge transfering
  • Coordination
  • Writing more detailed documentation
  • Retraining
  • Low productivity due to start-up difficulties

Other reasons exist that are inherent to collaborating with the other parties. A third party, like any other company, needs to make a profit and keep margins on the work they provide. These margins on the delivered work are on the expense of the company thinking about insourcing. Removing the third party removes these extra margins. Moreover, removing a third party also means removing an extra management layer which leads to cost savings.

Another aspect is that companies often have to invest before they can save money. With outsourcing it is inevitable that costs go up before they go down. Some companies do not have the patience or discipline to wait this period out. Instead they revert the changes by insourcing the work.

What the important factors are and for which benefits a company is willing to pay should be determined on a case-by-case basis. The third party might be more efficient in creating the product than the main company does.

Research has been done on which situations results in cost savings and which do not[5]. Basic projects with well-defined processes requiring less control often do result in costs being lowered. Also, outsourcing separate processes like test automation have shown positive results. Failures are associated with complex projects, as well as with domain specific tasks and projects of a very technical nature.

Impact on the business[edit]

Research has been done on the relative strategic value of IT outsourcing and IT insourcing[12]. This research points out that IT insourcing is more effective for developing IT enabled business processes (IEBP). Furthermore it shows that IT insourcing "is positively associated with IEBP, while the relationship between IT outsourcing and IEBP is not statistically significant". The research concludes that firms should consider IT an integral part of their strategic core and should be proactively involved in the internal development of IT resources.

Another business impact is that insourcing often comes with lower attrition rates. This can be explained by looking at the outsourcing situation. Companies often outsource a single business process to the offshore site and the employees at the offshore site without including the employees in the decision making process. A typical example is a company that outsources all their testing activities to a vendor. Studies have shown that using outsourcing this way will cause lower motivation on offshore sites. This can be explained by looking at the Motivational Potential Score (MPS), for which the formula is listed below[13]. Each variable is a score that is subjectively rated on a scale of 1 to 7.

Minimizing dependency on 3rd parties[edit]

Being dependent on 3rd parties carries a number of extra concerns with it. These do not always have to be huge problems, but require attention and a company must be aware of them. For instance, the size differences between the partners. If a company tries to outsource to a vendor which is much larger than the company itself, there is a power imbalance in the relationship, possibly leading to issues in the future when there is disagreement. Similarly, when the vendor also works for a competitor, conflicts of interest may occur when the vendor is dealing with the separation of the teams allocated to both competitors. Another issue could be local legislation of the vendor. There might be restrictions in place in the country of the vendor that not everyone is aware of. Last there is continuity. If the third party stops, goes bankrupt or gets acquired by a competitor this might lead to problems in the product line. By insourcing the work, these risks are minimized.

Challenges of Insourcing in Software Development[edit]

Although insourcing has numerous advantages over outsourcing, it also comes with some challenges[14]

Additional costs[edit]

In contrast to saving money in the long term, insourcing in Software Development can introduce costs relative to companies that outsource[1]. It makes sense that setting up a (new) department and/or team to take over the outsourced work takes time and therefore money. Moreover it cannot be expected from the new team to work as efficiently as the outsourced team used to work beforehand, so more working hours will be needed to come up with the same results. These costs most often come into play in the initial years of insourcing as the company then has to make itself capable of managing the work[15]

Competition disadvantages

An advantage of outsourcing is gaining knowledge not present within the company. Hence insourcing would diminish this advantage, and make it harder for the company to compete with other companies that already have this knowledge in-house or use outsourcing to gain that knowledge[1]. When a new field of technology emerges in software development, the company has to decide whether or not to research this field. A current day example is the popularity and broad applicability of machine learning. For the company it is expensive to research all possible new fields in software development, and easier/cheaper to buy the knowledge through outsourcing when the field becomes of competitive importance. With insourcing the risk of performing research into a field that turns out to be unimportant is carried by the company, instead of the third party.

Additional recruiting/training

The third party, previously responsible for the part that is being in-sourced, may have (domain) specific knowledge which now also has to be brought to the company. This will require training of the current personal, or additional recruitments to gain the required technical knowledge[14]. This training or recruiting process can be time consuming, resulting in decreased productivity for the company. Furthermore in some fields of software development finding the suitable personal near the company can be challenging. It might even have been the reason why the company started with outsourcing in the first place.

Transfer of knowledge

Over time the third party has obtained knowledge and information which has to be transferred to the company when they insource the development. This knowledge transfer is suboptimal, and some information will get lost in the process[15]. Many companies work with software for keeping track of internal communications such as Slack, Jira or Asana and these communication structures are hard to export and fit in the new in-sourced environment. Therefore chances are that (important) decisions within the software are not easily visible to the new team. Aside from the documented communications, there is also a lot of knowledge within the personal at the third party. This knowledge is hard to get correctly documented in hindsight and make visible to the new team.

Infrastructure and license

The company has to set up the right infrastructure for operating after the insourcing has been completed. [14]. This infrastructure spans the entire set of tools required to take over development in-house. Setting up the correct development environment with the correct IDE's, testing environments and protocols, communication systems, deployment systems and more. For all newly used software and software libraries the correct licenses have to be obtained. In the event of a software tooling processing data on an external server even data processing agreements have to be made.

References[edit]

  1. 1.0 1.1 1.2 Schniederjans, M. J.; Schniederjans, A.M.; Schniederjans, D.G. (2003). Outsourcing and Insourcing in an International Context. ISBN 9781317463344. Search this book on Outsourcing and insourcing in an international context. Routledge
  2. Cabral, S.; Quelin, B.; Maia, W. (2013). "Outsourcing failure and reintegration: the influence of contractual and external factors". Long Range Planning. 47: 1–14.
  3. 3.0 3.1 3.2 3.3 3.4 3.5 Moe, Nils Brede; Šmite, Darja; Hanssen, Geir Kjetil; Barney, Hamish (2013-08-29). "From offshore outsourcing to insourcing and partnerships: four failed outsourcing attempts". Empirical Software Engineering. 19 (5): 1225–1258. doi:10.1007/s10664-013-9272-x. ISSN 1382-3256.
  4. 4.0 4.1 Moe, Nils Brede; Šmite, Darja (2008-06-12). "Understanding a lack of trust in Global Software Teams: a multiple‐case study". Software Process: Improvement and Practice. 13 (3): 217–231. doi:10.1002/spip.378. ISSN 1077-4866.
  5. 5.0 5.1 5.2 Smite, Darja; Calefato, Fabio; Wohlin, Claes (2015). "Cost-Savings in Global Software Engineering – Where is the Evidence?" IEEE Software, 32(4), 26-32.
  6. C. Lacity, Mary; P. Willcocks, Leslie; Rottman, Joseph (2008-02-22). "Global outsourcing of back office services: Lessons, trends, and enduring challenges". Strategic Outsourcing: An International Journal. 1: 13–34. doi:10.1108/17538290810857457.
  7. Šmite, Darja; Wohlin, Claes; Aurum, Aybüke; Jabangwe, Ronald; Numminen, Emil (2013-04-01). "Offshore insourcing in software development: Structuring the decision-making process". Journal of Systems and Software. 86 (4): 1054–1067. doi:10.1016/j.jss.2012.10.003. ISSN 0164-1212.
  8. Prikladnicki, R.; Audy, J.L.N.; Damian, D.; De Oliveira, T.C. (2007). "Distributed Software Development: Practices and challenges in different business strategies of offshoring and onshoring". International Conference on Global Software Engineering.
  9. 9.0 9.1 Smite, D. (2011). "A Whisper of evidence in global software engineering". IEEE Software. 28 (4): 15–18. doi:10.1109/MS.2011.70.
  10. King, W.R.; Torkzadeh, G. (2008). "Information systems offshoring: Research status and issues". MIS Quarterly. 32 (2): 205–225. doi:10.2307/25148838. JSTOR 25148838.
  11. Laplante, P.A.; Costello, T.; Singh, P.; Bindiganavile, S.; Landon, M. (2004). "The who, what, why, where, and when of IT outsourcing". IT Professional. 6 (1): 19–23. doi:10.1109/MITP.2004.1265538.
  12. Guang Qu, Wen (June 2010). "The strategic value of IT insourcing: An IT-enabled business process perspective" (PDF). Journal of Strategic Information Systems.
  13. Hall, Tracy; Baddoo, Nathan; Beecham, Sarah; Robinson, Hugh; Sharp, Helen (2009-05-01). "A systematic review of theory use in studies investigating the motivations of software engineers". ACM Transactions on Software Engineering and Methodology. 18 (3): 10. doi:10.1145/1525880.1525883. ISSN 1049-331X.
  14. 14.0 14.1 14.2 Naik, N (2016). "Crowdsourcing, open-sourcing, outsourcing and insourcing software development: A comparative analysis". Service-Oriented System Engineering (SOSE): 380–385.
  15. 15.0 15.1 Deloitte (2013). From Bengalore to Boston: The trend of bringing IT back in-house. Retrieved from: https://www2.deloitte.com/content/dam/Deloitte/se/Documents/technology/the%20trend%20of%20bringing%20your%20outsourced%20IT%20deal%20back%20in-house_030113us_sdt_.pdf


This article "Insourcing in Software Development" is from Wikipedia. The list of its authors can be seen in its historical and/or the page Edithistory:Insourcing in Software Development. Articles copied from Draft Namespace on Wikipedia could be seen on the Draft Namespace of Wikipedia and not main one.