April 9, 2019
8 Things You’ll Want To Include In Your Software Development Contract
A solid software development contract is important in today’s fast paced technology world where it is easy to get details and expectations mixed up. Contracts can miss the mark to protect all parties involved unless you know what to look for and include. This article will help you avoid common pitfalls of bad contracts. We will look at fixed cost vs time and materials cost. Next we will cover multi-language needs followed by privacy policies. We will tackle all that needs to be covered for tools and processes. There must be a definition of success metrics. Things like documentation and intellectual property ownership must also be a part of the contract. Pricing and billing procedures should be clear and in writing. Lastly we will take a quick look at warranties of work.
1) Cost Structure of Development Contracts
You really need to be aware of how charging for software development can be structured. There are fixed cost projects and projects that account for time and materials. Each has strengths and weaknesses.
Fixed Cost
Fixed cost projects can be fairly easy to estimate if the project is not large, but often they miss important items of cost. These missed areas can leave software development firms losing out on profits and even the possibility of losing money on a project. Fixed cost contracts are usually best suited for something that has been done before and is mainly being re-branded for a new customer or is a smaller project. There may be some small tweaks to parts of it, but are manageable under the time frame laid out in the schedule. These are often off-the-shelf type products that the firm sells as a package to the public. The customer often assumes that development is much simpler than it truly is.
Time and Materials
These types of software development contract costs are more accurate especially for the software development firm. They are, though, much more difficult to estimate up front. Many contracts require documentation to be written. Projects also inevitably miss items when planning is done. These types of things can be easily adjusted in a time and material contract costing scenario. In a fixed project, this may be a cost the development firm has to eat. When we talk about the minimum viable product, we must cover cost carefully.
2) Language
This point is two fold. The product itself may need to be multi-lingual. Often times this resource is lacking when creating a contract agreement. A quality associate that knows the languages fluently is needed. Translating from English to Spanish, for example, can be very tricky. You cannot rely on Google translate to do it for you. Those translations are usually word for word literal translations and do not pick up on the nuances of languages. This work also may take several experts to fulfill depending on what languages are needed.
The other part of language is the fact that some developers are not native English speakers. They may be decent in a conversation, but sometimes things can be missed due to idiosyncrasies of language. Someone from another country may not be able to understand a slang phrase or cultural reference.
3) Privacy Policy
Establishing a privacy policy is strongly encouraged. The privacy of the customer, the development firm and the eventual end user are all important. No one wants their personal information leaked, sold, or stolen. Be sure to define what privacy policies will be adhered to when creating your contract. There are often proprietary data sets involved in projects, private customer data and sensitive data being shared with competitors may lead to legal ramifications.
4) Tools and Processes
An important step to any project is having a clear plan for what tools and process will be used under the software development contract. A list of the development tools being used, the source code repositories, bug tracking software, schedules and project management styles all need to be established. Some of these may not have been completely clear during initial discussions, so it’s important to have both parties understand and agree to all elements of the project. The contract may include who the responsible party is to establish the tools being used. Using the same tools across a project will greatly increase efficiencies.
Processes must also be established for how code deployments are handled, quality checks are made and change controls written up. A clear plan on how to proceed with bugs, changes and management expectations is crucial to a quality relationship between all parties of the contract. If someone or part of the group is not following the plan, it may seriously hinder the project. The key is to figure most, if not all of it up front or as quickly as possible.
5) Success Metrics
Another important aspect of any contract are the expected success metrics. How is the project deemed a success? How are different milestones met? They need to be exact, but measurable. Avoid vague language in contracts as they leave too much room for misunderstandings and arguments. One party may believe it has achieved the success metrics when another believes they fall short. Clear, concise statements of expectations helps to avoid conflicts. There will be fewer delays and more progress made towards the end goal.
6) Documentation and Intellectual Property Ownership
A software development contract must contain clear designations of what is expected in documentation with the finished work. It is also imperative to assign to whom the intellectual property belongs. Under U.S. copyright law, the author of a work generally owns the copyright. Software development is a more complex subject. Most times it will belong to the company, firm or organization employing the development work. Sometimes large development firms may be selling an already established product. In these cases the intellectual property wouldn’t belong to the customer. These instances are more akin to software as a service (SaaS) company. In either case, ownership must be clear in the contract. When it is not, it may lead to years-long legal battles regarding who owns what. These legal fights are not worth it for any of the parties involved.
7) Pricing and Billing
Be clear! One of the biggest hangups of projects are around cost. The prices of development must be made clear. There can be a range from developer rates, quality assurance, to project managers. Each one needs to be set upon software development contract negotiations. That way all parties again know what to expect when allocating resources for the project. The customer will be expecting the same exact cost as stated in the contract. It is important for this to be in writing so there is no ambiguity.
There also needs to be a clear process of how, when and where billing occurs. There are many options available. It simply needs to be setup in advance. Often times, projects will require a deposit be made before work begins. Therefore it is extremely important that accounting work be done early. Both the payee and the payer need to be on the same schedule. No one wants a missed payment because of a scheduling mishap. Developers want to be paid and sometimes there are penalties outlined in contracts for missing payments.
8) Warranties
Warranties are a mixed bag. There is usually some sort of a warranty of work period for projects. You really shouldn’t expect to have very long ones unless the project is extremely large in cost, scope and time. Warranties are sometimes as long as a year, but only for very large projects.
Conclusion
We’ve looked at a lot here and there is much to digest. Always be sure that you get an attorney to look over any contracts. The cost of attorney review is far less than the cost of a lawsuit. In your software development contract remember to include cost structure, language needs, privacy policy, tools and process, success metrics, intellectual property ownership, pricing and warranties. If you have any questions for us on contracts or a project you’d like to kick off, contact us!
Matt McCandless
Consulting Software Engineer
Matt McCandless is a consulting software engineer and writer in Wichita. He is skilled in Java, Integration, Javascript, SQL and Requirements Analysis.
Matt McCandless
Consulting Software Engineer
Matt McCandless is a consulting software engineer and writer in Wichita. He is skilled in Java, Integration, Javascript, SQL and Requirements Analysis.