Contract with software house
Working with a software house can sometimes give people sleepless nights. It's not terrible, but it's worth making sure there are good provisions in the contract. Therefore, please feel invited to read this article!
Even though I am on the other side of the barricade every day, I know what sort of problems companies face when they want to benefit from the services of a company like ours. The lack of technical knowledge and high wages in the IT industry cause stress for clients. Will I not go bankrupt? Will the project be finished without delays? Am I sure I have made the right provisions? In the following article, I will prove that the software house is not as scary as it is painted and what should be kept in mind when writing a cooperation contract. The following article was written after analysing dozens of contracts we have signed with our clients at Code Apps.
Let's start by explaining what a software house is and how to choose the right one. In a nutshell: it is a company that develops dedicated software. There are many such companies on the market, but each specialises in different applications or technologies.
If you've already chosen a few companies that handle what you're looking for, it's worth checking out the portfolio and references. Some projects companies won't be able to show off, but there are certainly a few that you'll be able to have a look at. Pay attention to the scope of responsibilities in this project and how long the software house has been working with this client. This is extremely important.
Of course, there are some small and short collaborations, but usually, IT projects last for many months. For example, at Code Apps, we have clients with whom we have been cooperating incessantly for 4-5 years.
Ok, let's move on. You have already chosen a software house and you have an appointment to talk about your project. Before you sign the contract it is worth paying attention to a few things.
At the very beginning, it is worth defining what the communication between you will look like. Will everything go through the Project Manager or will you talk directly with programmers.
Another very important aspect is the model in which the company will make the software available to you for testing. If the project takes, for instance, 6 months and during this time you have no insight at all into what the company is creating, then you can be sure that what you will get will be significantly different from what you wanted to get.
The SCRUM methodology works perfectly. The idea is to divide the project into iterations (sprints) that will take a maximum of one month. We at Code Apps prefer 2-week sprints. Before each sprint, you discuss with the team what will be done in this particular one. After the sprint, you get access to the application and discuss bugs or changes if they occur. This solution is ideal, both for you and for the company that creates the software.
It is also worth specifying how comments, bugs or new features will be reported. When dealing with a larger-scale project, this can cause a lot of mess and misunderstanding between the parties. There are a lot of programs on the market that make it easier. Among such applications, we can include Jira, Asana or for smaller projects Trello. It is a good idea to specify at the beginning what you will use during the contract. Sending everything by e-mail or making telephone arrangements is not an option.
It may also be useful to have a provision that requires the contractor to produce and send a summary after each meeting held in person or by teleconference. By doing so, you will have the whole history of meetings and arrangements.
It is also worth mentioning that telephone arrangements are not binding. What is not on paper (so in this case, in an email) simply wasn't there. A very useful note. Two people involved in the same conversation can interpret it completely differently.
Contract with a software house
This may seem obvious, and yet, conflicts arise very often between the parties. You as the principal may think that the scope of the contract covers much more than it actually does. This is likely to be due to the ignorance or negligence of the contractor, so it is worth bearing this in mind.
For instance, the question of whether the scope of the contract includes the deployment of the application to the server once the software work is completed. It may seem obvious to you. After all, you won't do it yourself. The contractor, however, may assume that this is an extra job that they have not priced out and that it is not part of their duties.
In addition, the contract must include information on what exactly is the subject of the contract. Do you just produce the software and then you have to "do it yourself", or will the company also prepare for the software e.g. automated tests, specifications, documentation, mock-ups etc.? Specify exactly what the contractor will do for you and write everything down in the contract.
If the contractor will use open source or third party solutions, this should be described in the contract. No copyrights will of course be transferred to you for such solutions.
There should also be a clause in the contract stating that the contractor has the knowledge to perform the subject of the contract and will perform the subject of the contract in accordance with the utmost care and prevailing market standards. The point, in short, is that the contractor should not pull the wool over our eyes with his experience, and only learn the technology during our project.
Each party should also confirm that it has the right and capacity to enter into a contract of such scope and that this contract will not infringe the rights of third parties.
It is also worth adding provisions that the application the company creates for us will be able to be developed by another contractor and that the source code will be understandable to other programmers. If you get code written in a way that only the company that created your app can develop it, then they can impose their terms and price on you.
Employees and subcontractors
The contract should also specify who will work on the project and what their functions will be. It is also important to ensure that there is a clause that states responsibility. The contractor undertakes responsibility not only for full-time employees but also for subcontractors. Any change in the team, that works on our application, should be reported to us.
The absence of these points unfortunately leaves a lot of room for malpractice. Before signing the contract, an experienced programmer will talk to you, and after signing the contract, the company will assign someone who is just learning. The function of the project manager, i.e. the person who is responsible for the project and the team, should also be defined. The same applies from the other side, of course. The contractor should have it clearly stated in the contract who is the decision-maker and who from the client company is responsible for which area.
Every employee and subcontractor who will be working on your project should sign an appropriate stipulation ensuring that this person complies with the regulations.
I've written about methods for billing before in the post "Pricing for programming work". Please read that post. There is a lot of information there about how you can bill your project contractor.
If the contract defines additionally paid elements, which are not included in the scope of the contract, each such element should require your written consent and acceptance of costs.
It is also worth mentioning the accuracy with which the contractor will detail the scope and time of work in the case of Time & Material billing.
A very important point that cannot be neglected. The contract must be structured in such a way that the full copyright of the project is transferred to you. It is also worth ensuring that the company is not allowed to modify or further distribute the subject of the contract, i.e. the software sources, without you being informed.
If you're looking for an IT support partner for your business or you're planning to continue working with a company after the application has been launched, make sure you specify response times for errors and new features. As long as the application is being developed and no one is using it, this is not particularly important, but once customers start using your programme, a point like this is essential.
We can divide error types and response times into:
- Critical - errors that prevent the system from functioning or may affect your losses.
- Significant - Anything that is not a critical error but affects system performance or has the potential to become a critical error.
- Minor - Any reports or errors that are minor and do not need to be dealt with quickly.
It is useful to specify for each type of failure both a response time and a maximum repair time or bypass plan. A bypass plan is an information about the process for fixing an error if the problem is severe and the contractor is unable to determine how long it will take to fix the issue. You can also add contractual penalties for each hour of delay in response time and repair of the problem.
General Data Protection Regulation (GDPR pl. RODO)
If there will be personal data in your database, you need to take care of a provision stating who will manage this data. The contractor, as the entity that will process the personal data, must declare that he is aware of all the rules regarding the processing of personal data set out in the provisions of the Act and that he undertakes to comply with them.
The Contractor may only process personal data for the purpose of properly fulfilling the contract. He must not use the dataset in a way that is incompatible with your interests or contrary to the contract. He must also remain silent about any facts relating to the contents of the file.
The above provisions must also apply to employees and subcontractors who will have access to the personal dataset. And since the topic of RODO is very important, the contractor cannot share the dataset with anyone without your consent. He must not share it even with his employees who are working on the project.
The contractor must also be obliged to notify us immediately if there is a breach or suspected breach of a personal dataset.
At your discretion, you can also add a provision on financial penalties for failures regarding the processing of personal data.
Prohibition of competition
The contract should define not only what the software house has to do, but also what it cannot do. It cannot do for itself or for third parties any activities that compete with your business. Alternatively, it should have your written permission to do so.
Obviously, if the subject of the contract is, for example, the creation of a standard online shop then such a point does not make sense. But if you are transferring your knowledge and experience in a particular field, it is worth protecting yourself against the contractor using this further.
Withdrawal from a contract
Withdrawal from a contract is not a pleasant subject, but we must think about it in advance. In the case of an amicable termination of the contract, make sure to give a long notice period. If a company decides it no longer has time to work with you or wants to significantly increase its rate, such a provision will give you time to find a new contractor.
Even if you add a provision for a long notice period, you must also provide for the situation in which you have to tear up the contract from one day to the next. Such situations do happen. Contracts are written not for good times but for bad times. If you feel that the contractor is not fulfilling the contract, or worse, is working against you, you must be able to terminate the contract with immediate effect.
You also need a clause that defines what happens in the event of a dispute. Such a clause should say that before you are at daggers drawn over the project, both parties express their willingness to settle the matter amicably through mediation.
Guarantee and liability
After you have received your application, errors may still occur. Even if you think you have tested everything thoroughly. There must be a warranty clause and it must clearly state under which conditions it applies.
An exception to the warranty is the situation where a third party not connected with the contractor has interfered in the application or code. In such a case it is obvious that the contractor is not responsible for such actions.
Although the software house takes full responsibility for what it does, we must remember about:
- Situations caused by force majeure, i.e. situations completely beyond our control (e.g. a terrorist attack).
- Errors beyond the contractor's control (e.g. temporary malfunction in the server room).
Such provisions will save us a lot of time and frustration.
Make sure you also have a clause stating that you do not pay again for amendments that you have already paid for and that have come out again.
A warranty for what has happened is one thing, but the contractor must also be obliged to keep you informed of any irregularities or situations that have occurred that may affect security, leakage of personal data, or other situations that may act against you.
The contractor will probably want to show off their collaboration with you. Whether on their website, social media, or various presentations. It's worth defining at the very beginning what the company that works for you can and cannot make public.
It also often happens that the client does not agree with the posting of information about working with them. You have every right to do so and the contractor must respect this.
Important! Please note that the purpose of this article is to highlight significant issues. I am not a lawyer and I do not have the knowledge to advise others in this area. Therefore, always consult a lawyer before signing a contract. It is an investment that always pays off. The above article is only intended to show you what you may want to pay attention to. It is not to be taken as a template or reference when creating a contract!
The pricing of programming work is a very broad subject. We will describe the two most popular methods. Fixed billing and billing based on hours worked.
An employee or a freelancer, that is the question! Many entrepreneurs ask themselves this question. See this blog post, in which I’ve gathered the pros and cons of both forms of cooperation.
Minimum Viable Product (MVP), i. e. the minimum version of a product that is sufficient to verify our business assumptions.
Online shop software is the most important decision of every e-entrepreneur. Read more and find out, what to look out for.
An outsourced IT department is a modern approach to software support within a company. Instead of hiring employees, companies can use a ready-made team as a service.
Laravel is a PHP framework. It was released in 2011 and has very quickly become one of the most popular solutions.