Tuesday, December 11, 2007

Lawyers are Good Things

No, I'm not in any trouble where I need a lawyer...but I have visited one to get moving on creating my own contract for consulting purposes.

I had a great lunch with another consultant who talked about the importance of creating your own contract and having that available for engagements. After meeting with the lawyer he recommended, I realized how naive I was at the types of things to think about.

The idea of "warranty" for instance. I assumed that you would of course want to "warranty" your software. But then I was challenged on what "warranty" really meant: is it a bug, or a feature that's now requested...and if the latter, then how do you avoid getting into a "well that should have been in the original and its under warranty" argument. The word "warranty" is too grey of a word with software, so the safer road it seems is to say you won't warranty it...which opens the door to you as a consultant to offer value-added services for your clients. "Even though that wasn't in the initial agreement, I'll make the fix for you because you've been such a good client."

There's also the issue of liability, and although insurance should always be a consideration there's alot that you can do up front in a good agreement to deflect many of those concerns. For instance, specifying up front that any damages due to failing of software is not your responsibility. Now, you might think "Well, that doesn't sound fair...if you're building software shouldn't it work properly?" Of course...but consider this situation:

You write an application that provides some sort of financial calculation. As is always the case with software, its reliability is not tied directly to itself: network reliability, hardware access and reliability, proper maintenance, etc. are all part of the broader scheme...but many of those things are out of your control as the software developer: you can't dictate how often the IT department does routine maintenance on the servers your application will run on for instance.

So let's say that your application is busy running calculations for a mission-critical portion of a business, when the server crashes due to no fault of your software. As a result, the data files that were being used for the calculations become corrupt and unrecoverable. Without the agreement up front regarding liability, the company could come after you trying to make an argument that the software failed and cost the business, even though it wasn't the software that directly caused the issue.

Lots of things to consider around the legal side of things, and obviously the important part of this should be that the customer realizes that they're not getting someone that will shirk their responsibilities and try to sneak away with money for crap work...but taht's where reputation and experience play a larger role. But covering your butt isn't a bad thing; its a smart thing. It's just too bad that you have to paint broad strokes over everyone that they could be unsrupulous.


No comments: