"Any intelligent woman who reads the marriage contract and then goes into it, deserves all the consequences."
Isadora Duncan (1878-1927), U.S. dancer, in My Life (1927).
We will never know if Ms. Duncan was referring to the institution of marriage in general, or just the terms of it. Your relationship with the developer of your custom software application may not last for life, either. But there are things you can do to make sure the relationship is a happy and productive one for both of you - and not just a marriage of convenience.
Business people often look at a contract as a necessary evil - an insurance policy to be relied on in the event of a dispute. The increasing, and often painful, length of modern contracts has not helped to change this view. But you can use your agreement for much more than that.
A carefully thought out contract can provide the structure for the entire process - and contribute to improving the quality of the finished product. How? By addressing in one place the business, software engineering, and legal issues of the project. In other words, by clearly recording (1) the desired outcome, (2) the promises made to get there, (3) how completion of the promises will be measured, and (4) how the inevitable breakdowns will be fixed.
Starting with mutual responsibility.The more clearly that you have thought out and articulated your needs, the more likely they are to be satisfied. When hiring a developer, it is all too tempting to let them take the responsibility for defining both the need and the solution - with the risk that you will not be satisfied.