Outsourcing software development today is no longer just a simple relationship between buyer and supplier where the main goal is to safe costs for the buyer and increase revenue for the supplier. Especially in software development, long term relationships are valued highly because technology and skills can be leveraged for better business results. This shift leads to a new goal, that is: creating a win-win situation, rather than trying to get the highest or lowest price for a product or service. This change in attitude means the roles within outsourcing (business process management) have changed as well, from a competitive to a partnership-like role. See the figure below to understand the relationships.
There are two key parts in outsourcing software development, namely the technology orientated and customer orientated part. The customer and the technology parts require different roles and team work for the outsourcing company and its client. It’s important to ensure that both parts are in sync. This can be done through defining processes, roles and responsibilities. The following roles and responsibilities should always be in place:
Project manager (customer): This is the person who leads the planning, procurement and product services. He or she works closely together with the project manager of the outsourcing company and its own managers and software engineers for negation and contract management.
Project manager (Offshore Development Team): This person manages the development team and works closely together with the business analyst and quality assurance to define and follow up on planning, communication channels, processes, business requirements and quality requirements. He or she is in direct communication with the project manager from the customer.
Business analyst (customer and ODT): Both the customer and ODT should have business analysts. This shouldn’t come as a surprise as you’re both working on a product that has to be implemented cost effective for the end-customer. The business analysts from both sides work closely together to specify, translate, analyze and managing the requirements to fulfill business needs.
Software & hardware engineers (customer): Software and hardware engineers work on the product as required by the end customer. Because part of their software is outsourced they have to work closely together with the offshore development team and its quality assurance manager to make sure the requirements are met.
Procurement (customer): This person is responsible for the activities around managing the incoming product stream until it goes into production. He or she has to work together with the account manager of the ODT to manage delivery risks and try to lower the outsourcing costs (without damaging the relationship).
Account manager (ODT): The account manager is responsible for ensuring timely and successful delivery of the product as agreed upon with the procurement manager. He or she negotiates contracts to maximizes profit (without damaging the relationship) and has to maintain a healthy and long lasting relationship with the customer.
Development team (ODT): The development team is responsible for creating a product that the customer and ODT managers have agreed upon. That means they have to plan, create, test, review etc. as stated in the product requirements.
Quality assurance (ODT): The quality assurance engineers work together with both the development team and the software and hardware engineers from the customer. They are responsible for establishing procedures and quality standards and monitoring these to report back to the project manager.
If you are planning on outsourcing your software development, then keep in mind that it’s very important to define roles and know the responsibilities on both sides. This way you can set up an effective team that works closely together with the ODT, which will result in operational efficiency. This in turn will create a strategic advantage for your company.