While the guidelines in the previous blog, Outsource vs Offshore: What Do You Need to Know Before Involving 3rd Parties in Your Business, generally still stand when discussing software development outsourcing, there are many more particular situations in software engineering that we have had experience navigating to a successful degree.
To be more specific, in the world of software engineering, companies often decide to outsource for one of three reasons:
- The company or project is lacking in software development bandwidth, and need to grow an engineering team quickly to meet market pressure or a tight product deadline
- The company seeks to improve its cost structure by outsourcing its engineering tasks to parties in lower cost countries (hence they are effectively outsourcing by offshoring);
- Because of the competitive nature of the industry, the company is unable to recruit the right talent themselves, or is unable to effectively retain the right talent. Reasons for which it decides to retain a third party that has managed to recruit and train the right talent.
Within this context, similar rules would play out as before, but we offer a much clearer picture on why and how you might be outsourcing software development:
Scenario 1: Yes, but to be considered carefully
If a software platform or product is part of your core business, or is the vehicle by which your core business is made tangible to a client, you may outsource. However, you have to be very careful when you do so (more on this later).
Scenario 2: Resounding yes for outsourcing
If software is tangential to your core business - i.e. It is utilized to operate, but is not part of your secret sauce as the software you use is "generic"- then outsourcing is an easy call, a) it will save you money, especially if you offshore when you outsource; and b) it does not make sense for you to invest heavily in becoming a sophisticated, high-quality software engineering organization; this is very hard to do and will divert time away from your core business functions. Furthermore, the possibility of you being able to retain top development talent in today's technology-centric world, where engineers are exceedingly in high demand, and working in exciting, top notch software challenges, is very scarce.
Scenario 3: Outsource part of your engineering work
If you happen to have multiple software applications, some of which need enhancements and some of which need maintenance, it makes sense to outsource at least part of the engineering work. Under this scenario, you can use your top, internal talent to work on the "hard, innovative problems" which will keep them challenged and happy, while at the same time save some money by outsourcing other components of the work to a vendor elsewhere, specifically a capable vendor offshore. Notice that there is much less risk in this scenario, given that your core know-how and most innovative thinking is kept in-house, which means there is no risk that you are left with an incomplete "secret sauce" recipe should your relationship with your vendor go sour.
Scenario 4: Outsource for the expertise
There is a fourth scenario that should be mentioned, and it has to do with companies that want to develop a line-of-business application that is core to their business, but whose line of business is such that they seldom get involved with software. Under this circumstance, the company in question must be careful not to underestimate the difficulty of building a high-performance engineering team in-house, only to disband it quickly after the project is done. This is assuming that the project is more or less a one-off and will not involve maintenance and upkeep in the future.
Within this scenario, it is best to outsource the development to an experienced software house, who will be able to implement the thousands of best practices, tips and expertise they have acquired through other similar projects. This is to save you and your company from making all the necessary rookie mistakes one has to live through in order to be knighted as a high-quality, competent software engineering team. It is also naive to think that the only thing a company has to do to set up a successful software development team is to hire an experienced software engineering leader or architect. Few leaders or senior architects will be able to set up a high performance engineering team within the context of a new corporate culture and business domain, and get things right the first time!
It is important to keep in mind that life rarely distributes a clear cut situation. The scenarios above are meant to help guide your decisions related to outsourcing, but should be adapted to suit your specific needs and situation.
About PSL: With more than 30 years of experience, PSL specializes in outsourcing and nearshoring software development projects as well as Team Augmentation. Based in Colombia, Mexico and the US, PSL is an agile SCRUM development shop focused on high quality services.