dark

#10. Cooperation workflow between customer and software development company

Thus far, we have gone over the Scrum framework, the tools and processes that are used, and the roles of those involved in the project. Now, let's explore the relationship between the client company and the software development company, and then we will finish up with a summary.
This article aims to provide a comprehensive understanding of the structure of a software development company and the way it operates. However, keep in mind that the structure, hierarchy, roles, and responsibilities of the participants can (and will) differ across companies.
When referring to a company that creates custom software for its clients, the term IT outsourcing company is used. The main (and usually sole) activity of these businesses is outsourcing. This is when a company that must develop particular software (but lacks the capacity to do so itself) finds an outsourcing company and entrusts the task to them.
Take, for instance, a financial and legal consulting company that decides to use an advanced software that will be tailored to their needs and will allow them to manage their clients' needs more efficiently.
First thing they'll do is they they will look for existing software solutions. At some point they might think that nothing of-the-shelf can cover their needs. This is where they might decide to develop their own software product.
Therefore, they create a document where they list all the requirements they would like the software to have and send it to various outsourcing companies. This document is generally known as an RFP (Request For Proposal). It is usually developed with the help of 3rd party technical experts to make sure that the requirements are listed accurately.
The outsourcing companies then analyze the requirements and come up with a set of questions to clarify uncertainties. Just to put things in perspective, we have already seen in a previous article how simple it is to miss something in a single user story.
And here we are talking about documents containing tens or even hundreds of pages, aiming to describe a huge project. This is why such requirements clarification sessions happen every time.
Once the customer clarified all the details, the outsourcing company
submits their proposal. Usually the proposal consists of the requirements listed in the RFP + estimates of the project + cost.
The client looks at the offers from various outsourcing companies and makes their choice of with which company they'll go forward.
Once the outsourcing company has got an initial agreement from the customer, then they send their business analyst to conduct an in-depth business analysis of the customer's business. How it is being done we have discussed in one of the previous article, here.
Now let's take a look at a few possible cooperation setups between the Client and the software development company.
Setup version 1
https://strapi.keepsimple.io/uploads/10_1_31555e74aa.jpeg
Here, from right to left, we see the CEO or COO of PlumbusSoft LLC, which is our outsource company.
The project manager is accountable to the CEO and is in constant contact with the Teamlead (and also, if there is one, the Business Analyst / Product Owner).
The Teamlead of the project coordinates the team consisting of developers, designers, and testers.
On the left side of the picture we see the Product Owner (PO), who is assigned to the project from the client's side. His main responsibility is to support the project team by providing all the necessary information requested by them.
Finding a qualified Product Owner (PO) is an incredibly difficult feat. For this role, the individual must possess a variety of criteria, including direct access to senior management of his company, customers, and end-users. Ideally PO should also have generalized knowledge of the software development process, and the sensivity of requirements changes.
The PO can also be responsible for supporting the team by participating in their weekly/daily calls, DEMOs, and other project-related activities.
From the project team's perspective he is the main decision maker on the project, as only he knows from where to gather the necessary data to clarify the questions that the project team comes up during the project development.
Let's get back to our picture. In reality of an outsource company, often it is engaged in multiple projects simultaneously. So if we "zoom out" our picture a bit, this is a more common setup for the majority of outsourcing companies:
Setup version 2
https://strapi.keepsimple.io/uploads/10_2_b62cfd431c.jpeg
Companies use this setup to save money. PMs, a costly resource, usually manage one project with extra capacity to take on 2-3 more. Personally I worked on five projects simultaneously, coordinating in total around 35 people. So it is doable, but not recommended.
Team leads, a more limited resource, take on one main project and a couple of consultancies.
As a company expands, they may hire a Program Manager or promote an in-house project manager (PM) to that role.
The PM handles progress, deadlines, budgets, etc. while the PrM oversees the group of projects and align their deadlines and budgets with the strategic objectives of the company. Reports from PMs in the PrM portfolio come to the PrM. Here's an example of a simple but effective setup.
Now let's take a look at another setup of a mid-sized outsourcing company.
Setup version 3
https://strapi.keepsimple.io/uploads/10_3_dca319acdd.jpeg
Here we see three projects that the company runs simultaneously. There is a Program Manager who coordinates project managers for each project.
You may notice I used a note "Web Division". Many outsourcing companies provide multiple types of services. It can be mobile + web + VR + desktop + many other. At some point of company growth it starts to make sense to separate it by divisions.
This operational decision makes it easier to rule the company as you are having a separate portfolios, with separate budgeting, and statistics.
Now let's take a look at larger setup.
Setup version 4
https://strapi.keepsimple.io/uploads/10_4_cd3c357860.jpeg
In this picture we have a Program Manager responsible for mobile applications division. You may also notice a DevOps - a specialist who is in charge of setting up an infrastructure for the projects. It's my bad I didn't add him to previous images. But he is always around with engineers :-)
And the last picture is to show a few more roles that might appear in large-scale companies (hundreds of employees)
Setup version 5
https://strapi.keepsimple.io/uploads/10_5_0659017b54.jpeg
At some point of an outsource company growth, it might happen so they have hundreds of employees and a few dozen of projects of different kind. This is when they can have a Senior Program Manager (SPrM).
SPrM is in charge of coordinating other Program Managers. Similarly to how Program Managers coordinate Project Managers, SPrM keeps his hand on the pulse to make sure that all divisions of the company work well.
Other operational roles in the company (and on the picture) are COO (Chief Operating Officer), and CEO (Chief Executive Officer). COO is in charge of operations in the company. Program managers coordinate their decisions with him. CEOs work is often related to finance and legal paperwork.
Conclusion
I hope this article make it more clear how a typical outsourcing company looks from the inside, and how the communication flow between them and the customer happens.
Next article will be related to Project Manager's career path, their skills development + a few tips.