Over the past few weeks, I’ve had several inquiries involving contractual disputes over software development and the implementation of IT/networking solutions. A number of these headaches could have been avoided from the get-go with a carefully tailored contractual agreement in place. These problems inspired me to write this post to serve as food-for-thought for software companies and developers to consider when hammering out the details of an agreement with a client or sub-contractor.
Practically speaking, the terms of the agreement aren’t really important until they are. Meaning that nobody will ever point to their contract and say, “hey, remember, this is what our contract said about that,” until there’s a problem. But when that problem arises, it’s good to have your bases covered. In a perfect world, every business project would be completed without a hiccup and go as planned. However, the thoughtful business owner would be naïve to proceed under this approach.
I was recently asked about a nightmarish sounding situation in which a small company hired two developers to complete a specific project. The company didn’t give much thought to their contractual arrangement beforehand and when the deliverables were not up to par nor were they completed on time, they were in a very difficult position to have any type of legal remedy for the particular problem they were having.
The details of every project should be carefully considered and drafted into an effective agreement BEFORE work is underway. This can go a long in way in avoiding needless headaches and expense down the road. Say for example the deliverable for a given project is a piece of software written in Python and optimized for specific database software. The “deliverables” section of the contract should in great detail spell out the specifics and also perhaps some metric for measuring performance.
Another consideration should time for delivery. This a highly project-specific inquiry depending on the nature and scope of the project. For example, if the project is large-scale and may reasonably be expected to take six months or a year, perhaps building in some reasonable amount of time for engineers from the client company to inspect and test the source code on a bi-weekly or monthly basis would be a sensible provision, whereas for a smaller-scale project this would be unnecessary.
Other factors to be considered are time/method for payment, assignment of intellectual property rights under the agreement, forum selection clauses in the event of litigation, arbitration agreements, and the list goes on. An effective agreement should encompass as much detail as possible about foreseen and unforeseen problems that may arise throughout the course of the agreement.
It is critical to have a lawyer who understands both your business needs and the technical process of software development to be most effective in drafting an agreement that best protects your interests.