The principles of the cooperation with a software house often raise some curiosity in the customers. They want to know a detailed plan of the daily cooperation, reporting on results, division of roles, and their necessary involvement in the project. When a customer needs to cooperate with an external partner, due to the high technological requirements of their product development, he could have concerns about the whole process. If a client has only worked on their products in-house, he might not know if the cooperation with an external team will be effective.
If you decide on this option for your product development, you will quickly find out that cooperating with a software house has many pluses. It is primarily a cost-effective solution, it provides high-quality work thanks to their specialization in some selected field, and it assures continuous technical support.
Basically, there are the two most popular ways of that cooperation. There are custom projects and outsourcing.
This cooperation applies to projects developed from scratch. The customers usually come with an idea for a product and present it to the software house. Sometimes they may not have a specific idea, but know what are the most important functionalities they would like to see implemented in their solution. At the initial stage, the software house (using its experience) helps conceptually develop the product outline, helping the client understand what is the right technology for the specific product. This phase could be named consulting.
This initial stage of cooperation is needed to define the specifications and aims of the project. This task belongs to the customer. Based on this, the software house can make an estimation of the costs, project duration and deadlines for specific tasks. Both sides get to know each other's way of working and fine-tune the details. If necessary, the client can consult with the software house to find alternative solutions. If we are speaking about custom projects, the most common practice is defining the list of the necessary functionalities of the product to achieve MVP (Minimum Viable Product).
At this point, the customer decides if the cooperation can move forward and the contract is signed. The stage two involves the software house building a team that will develop the project. Often these teams do not only consist of developers, but also UX / UI designers - depending on the type of project. Then the Project Manager is then chosen to coordinate all the work and to act as a link between the client and the developers, in order to provide the best level of communication. It is also good practice to give the chance to the client to get to know the whole team from the very beginning. This helps to create trust in the client and involvement in the team.
Time for the development phase. Most software houses prefer to work using the Scrum methodology (an approach we can also recommend), thanks to which all tasks related to the project are gradually developed at a given time. All tasks are located for example in Jira (or any other project management tools) and they are grouped as follows:
- backlog - tasks that will be performed in the future
- to do - tasks that will be performed during the sprint
- in progress - tasks that the team is currently working on.
The duration of the sprint is usually about two weeks. During this time, the team focuses on the implementation of selected tasks and continuously tests the created functionalities (code review). Thanks to daily meetings the team can share information about the progress of their work and the clients receive weekly reports showing the development of the project.
Depending on the client's needs, the communication between both sides can happen more often, sometimes even daily. Tools such as Slack or Jira are normally used to facilitate communication. In this way, the customer not only has an up-to-date insight into the progress, but he can also ask a member of the team for anything at any time. This process helps to keep the product in constant development.
It is worth noting that after establishing the basis of cooperation and confirming the specification of the project, the client's involvement comes to an end. The whole process is then taken over by the software house whose task is to achieve specific goals and targets.
The second option is outsourcing. It is usually selected by companies that have quick or urgent needs related to the development of their product. Another reason for choosing outsourcing might be the lack of sufficient competence or manpower inside the in-house team. Such cooperation can start much faster than custom projects, because the client knows clearly his needs and requirements from the beginning.
In the first stage of cooperation based on outsourcing, the client determines his needs and asks the software house to appoint the appropriate team member with whom he could cooperate. Then, most often comes to verification of his skills. This can be done through an interview and a familiarization meeting. But sometimes the software house might implement a free trial period (1-2 weeks) for the client to test the skills of the potential employee.
Once the verification phase is successfully completed, the client outsources one or more developers to join his in-house team. In this case, the Product Owner plays a crucial role. He contacts remote developers and coordinates their work. All this process is made easier thanks to specific tools that help to measure the working time of each developer. This is also useful information for the client to understand how much time is actually needed to perform a specific task.
As you probably noticed, outsourcing is a relatively simple and fast solution that does not require a lot of commitment from the client. It's an easy way for a company to add developers to its in-house team for temporary projects. Its advantage is also the possibility of conducting a test period, where the developer's skills are verified, and the company can get to know his method of work and ultimately decide whether to establish further cooperation. This minimizes the risk of choosing the wrong candidate.
Custom projects and outsourcing are effective methods for developing your product from the technological side. The key is choosing the right partner - preferably one who has experience in developing projects similar to yours. This should reassure you that the software house has sufficient competences to help you. It is also worth checking the opinions of other clients and see how they evaluate the work of the whole team.