What is an outsourcing company? How do they operate? What are the differences between a product and an outsourcing company?
Outsourcing companies continue to have a significant share in the software development market. It’s a profitable model for both the customer and the service provider.
Besides the need for new software, there is a significant pile of old software. Old software is a blessing and a curse at the same time. Old software is the reason why many outsource companies exists. Their primary business is to maintain or rewrite old software. Here is the second category – the outsourcing companies.
Outsourcing takes a business activity out of the company and contracts it to another company. The reason is always cost-efficiency. The leading company – the customer – keeps the know-how, the domain knowledge and the decision-making. Very often, the project management comes from the customer as well. The outsourcing company provides the necessary teams for a given project. That would usually be developers and testers.
Outsourcing companies have one significant advantage, and that’s the low risk. The customer takes a higher risk because the outsourcing company does not work for end-users directly. However, low risk translates to the correspondingly lower cost of the outsourcing teams. Another advantage is the quick profit and lower investment compared to the product companies.
The outsourcing projects are relatively smaller. Usually, there is no direct communication with the end-users. The risk of misunderstood customer expectations is significantly higher. The initial agreements often include serious engagement from the customer side. This implies a dependency in the outsourcing team. However, as the project goes along, the customer gets less available, which puts the project at risk for the outsourcing team. This paradox is, in my opinion, one of the reasons for the agile methodologies to be born. Agile means easy to change. It means self-sufficient teams. It means early feedback.
The team organisation is critical for outsourced projects. The outsourcing company often contracts their teams in a time and material fashion where the customer pays for hours. The customer usually orders “3 senior developers”, “2 testers”, “1 DevOps engineer”. Yes, it doesn’t sound appropriate, but this is the outsourcing life.
How the outsourcing teams are built is crucial for the development of the relationships. That includes what part of the risk and responsibility is transferred to the outsourcing team. If the architects are from the customer and they don’t plan to upgrade the technology, we can imagine that the knowledge & tech factor will not be great.
On the contrary, a typical outsourcing model involves the newest technology because that secures engagement if the customer doesn’t have that knowledge. This is the preferred type of outsourcing company. Of course, if autonomy is higher, the work-life balance can easily decrease.
Although the most common practice is characterised by low autonomy, no real knowledge and technology gained but still a great work-life balance. In my experience, I have seen more developers who do not prefer to be accountable, so this model is prevalent among employees as well.
Outsourcing companies have one serious advantage. As we said, they would usually work with short-term projects and different customers. Working for an outsourcing company is a chance to quickly gain experience with various practices. These are various business domains, development tools and technologies, project methodologies.
Last but not least, working with customers from different geographical locations and regular business trips. Dealing with several customers and their expectations are the most valuable experience. That’s why someone from an outsourcing company usually has a broader technology stack than a guy from a product company.
A great team is a great team, regardless of the company model. What’s important is we built high-quality software.