Drafting contracts without legal assistance, or with the wrong legal assistance, may lead to disaster down the track. Many professionals (and this extends outside the legal and information technology fields) believe they can save money by drafting their own contracts. Almost invariably these contracts do not say what the professional meant to say, and miss important aspects of the transaction. The result can be one or more legal disputes later on that cost far more than the cost of getting the contract right in the first place.
Drafting computing and information technology contracts with a solicitor who does not have solid understanding of the technology and terminology may not be much better. The ordinary business aspects may be well covered, but where the contract deals with technology or technical terminology the contract may still fail to say what was meant.
Writing a contract is in many ways much like writing software. I often find myself drafting a contract and using structures that are very much like C++ templates or functions (or in the older terminology, subroutines).
In other ways writing a contract can be nothing like writing software. To be most effective it requires knowledge of the background of he law, but more significantly, it uses a horrible programming language with complexities that allow constructs that make the worst Perl spaghetti code look clean and elegant. Unlike the Perl spaghetti code, which is executed according to programmed rules and will have the same outcome each time (at least when executed in an identical environment), contract code is executed by humans, and where a dispute goes to a final decision, by a judge or arbitrator. Each judge or arbitrator is a different execution environment for code, with an interpreter written by completely different people using the vaguest of specifications, and if the contract is not written carefully it may be impossible to predict how a judge or arbitrator is likely to interpret it.
Getting the code in the contract right is the best way to protect yourself against having an expensive legal battle later on. The cheapest battles over vague contract terms cost as much as $50,000 on each side. Where the stakes are high or the issues are complex the legal costs may be hundreds of thousands of dollars on each side. If the contract is a standard contract you may have to fight the same battle with multiple customers, and getting a favourable result against one does not necessarily mean you will get the same result against the next one, even on the same disputed wording. It is always much safer, and usually cheaper, to get the right solicitor to assist you up front.