Should I guarantee or add a warranty clause to my contract in the event code breaks or an anomaly occurs outside the client's hand or act of God?
If so, what should that language say?
Should I guarantee or add a warranty clause to my contract in the event code breaks or an anomaly occurs outside the client's hand or act of God?
If so, what should that language say?
Unless your client demands some kind of a guarantee or warranty, don't go offering one. Many clients will end up using it to force you into indentured servitude.
Even if they do demand one, consult a lawyer. Otherwise, you are setting yourself up for catastrophe.
Should I guarantee or add a warranty clause to my contract in the event code breaks or an anomaly occurs outside the client's hand or act of God?
If required don't take the job. This is an impossible situation. There is no end to the list of things that could be changed that would cause your code to break or not work.
Unless you like working for free, then go right ahead.
The standard way to respond to this is to add a support or maintenance clause - "the first 10 hours of work included for free, the rest available at the following rate:".
I upvoted Adam's "don't do it", but offering such a warranty for a commercial software product might get a lot of favorable attention from customers. It would also show you had huge cojones compared to the rest of the industry. :-)
I might consider offering a warranty under the following circumstances:
In that case, I might offer a warranty something like, "For a period of one year from the date of purchase, we guarantee that if the software does not run substantially as documented in the user manual, we will fix it and issue a free update."
That doesn't sound like much of a warranty, but it's far more than most commercial software has, reassures customers that you'll fix bugs, and the word "substantially" leaves enough wiggle room that you won't go broke.
If it's contract programming for somebody else, forget it. I once got into a situation similar to that, porting a Windows program to the Mac, and lost tens of thousands of dollars fixing "bugs" that were actually hidden features in the Windows version that the client conveniently failed to mention before we signed the contract, even though we'd repeatedly asked for specs. That experience was one of the main reasons I quit doing fixed-price contracts.
It's common to give a warranty that include bug-fixes for a specific period after project end (say 3-6 months). This says to the client that you stand behind your code, and frankly you should have some liability to issues that you deliver with your code.
What we usually do in our projects is offer an SLA (service level agreement) that defines what bugs are and the timetable for fixing them according to their level of severity. For example, critical issues on a live project should be resolved (at least attempted) within 1 hour of receiving the report. Visual issues and minor bugs should be resolved within 48 hours.
It's very important to have a clear definition of what a bug is - since clients will often try to work in new features as bug reports (sometimes unintentionally). Those definitions are always somewhat open to interpretation, so you need to assign an arbitrator (usually an authority in the development language / platform) that can arbitrate disagreements.
The wording of the contract would have to state things similar to the following:
Just a few I could think of.