The basis of cooperation between the client and the software house is a properly structured contract. If you have never worked with an external company on an IT project, you may not know what such a document looks like and what it should include. Thanks to the tips presented in this article, you will learn what elements should be included in the contract with the software house and what provisions will guarantee security for you and your project.
Points for the client - transparency and security
From your perspective, that is from the client's point of view, the most important elements of a software house contract are the provisions regulating:
- intellectual property rights,
- notice period,
- progress reporting,
- individual roles in the software house team,
- amount and scope of insurance,
- as well as the testing period.
However, before you start verifying the above points in the contract, you should make sure that the software house with which you are going to start cooperation is reliable and fulfills its tasks in a professional way.
Technical issues - before you start cooperation with a software house
When you decide to cooperate with a particular software house, you need to be sure that it meets a set of criteria. Otherwise, there is a high probability that the company doesn't have competencies which would allow it to complete your order. Therefore, before you start cooperation - check if the software house:
- keeps the code in a repository,
- creates automated tests,
- conducts code reviews,
- writes code in English,
- works on a well-known framework,
- provides progress overview.
Storing code in a repository
A repository is a type of storage that allows you to access all its resources both quickly and easily. It provides the following functionalities:
- revert to an older version of the code at any time,
- the team working together in an efficient way,
- much easier backup,
- run code quality checks on a remote server automatically,
- work on multiple versions of code in parallel.
Testing is one of the basic processes that are carried out during software development. It allows one to:
- detect whether changes made in particular modules of the project affect the others,
- add other people to the project and pass it to other teams without worrying about introducing changes that will have a negative impact on the code quality.
The "Code Review" process has to do with code review. During its execution, individual code fragments are reviewed by other people, thanks to which it is possible to:
- catch errors that the author has made,
- suggest a better solution.
Coding in English
The coding language is primarily of practical importance. A professional software house codes only in English, because such a code looks neater and is more transparent.
Working on a well-known framework - not on a proprietary system
This is a technical issue that is difficult to grasp, but it is of great importance for the entire project. A known framework:
- excludes the possibility of dependence on one company, which as the only one knows our code,
- allows for the efficient joining of new people, teams to the project,
- allows the use of resources, created by an international community, which also cares about the maintenance, development and security of the basis of our code.
Staging, test, production server
This allows you to see the progress of work and the current image of the project on a server other than the one we provide to our users.
Software house contract from a customer's perspective
There are several points that must be included in a contract with a software house to ensure that you receive the service you paid for. So what should you put emphasis on when constructing such a document?
1. Testing period
The testing period is a period of time from the beginning of the contract in which you have the possibility to terminate the contract with an immediate effect. It may cover two or four weeks. This allows you to verify the reliability and competence of the software house you decide to work with.
2. Insurance policy
A software house should have an insurance policy. It will cover potential costs related to software development.
3. Key roles in the project and their rates
This subsection in the contract serves to increase the clarity of the document. It allows you to be sure who is responsible for our project, at what rate and to what extent. What type of tasks they will perform, etc.
4. Manner of reporting project progress
This subsection of the contract is meant to specify what data will be presented to the client at specific intervals. It can also define the exact form of reporting. The most important information that should be included in the report (weekly, bi-weekly or monthly) is: time spent on particular tasks and people who were responsible for them.
5. Contract termination
A sub-item that should provide information on the termination period, as well as the potential consequences that are associated with such a termination.
6. Intellectual property rights
This is one of the most important points of the agreement with the software house. It should be worded in such a way that it clearly states that all ownership rights to the software created under the project (including source code) are transferred to you or your company. If the software house uses subcontractors, make sure that they transfer their ownership rights to the contractor.
Points for the contractor - software house contract
A properly structured contract should be satisfactory to both parties and also provide them with security. That is why the following issues should also be regulated in the contract that is signed between the software house and the client.
1. Access and data
The client undertakes to provide all data and access necessary for the execution of the project for the entire duration of the contract.
2. The person responsible for the project on the client’s side
The client should designate a person who will be responsible for coordinating the software house's activities, such as communicating the contractor's requirements and progress to the client.
The payment period from the invoice should be fixed in advance. This avoids delays - which is important for both parties.
4. Advance payment
Paying an advance allows the software house to start work without worrying about financial losses.
5. Prohibition on the software house employees working in the client's company
This ban lasts for a certain period of time (usually 3 years). Violating it usually results in a high financial penalty.
6. Final project price
This point regulates what factors have an influence on the final price of the project this will not only be the programming work, but also meetings, the creation of development environments and bug fixing.
7. Exclusion of liability for software defects under warranty
Exclusion of liability for software defects refers to errors in the code, caused by external software - e.g. errors of the browser or operating system.
8. Limitation of liability clause
This may concern, for example, the amount of the insurance policy held by the software house.