Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I am working with a client right now that wants me to sign a contact with a warranty for a year for no additional charge. As well as any reasonable changes he wants during the contract that are outside of the guidelines for no additional charge while not affecting deadlines. And lastly documentation and training for all staff for no additional charge.

Red flags are going everywhere in this contract and I wanted to hear from professionals how you guys handle / what you charge for documentation, training, warranty, changes in scope etc...

share|improve this question
4  
If all of these things are for no additional charge and the initial price did not include them can you increase the "no additional charge" price significantly to cover them? It's best to avoid doing mountains of work for free. –  FrustratedWithFormsDesigner May 16 '12 at 17:36
2  
Define Reasonable –  Aditya P May 16 '12 at 17:39
    
Contractually it has no definition. What would be a good definition? –  JAstanton May 16 '12 at 17:45
6  
Don't do anything for "no additional charge." Charge for your time so that your client values your time. –  Bernard May 16 '12 at 18:37
    
in all seriousness; if you really have to ask this question and don't intuitively know the answer you should probably not be managing contract negotiations for yourself or any one else. –  Jarrod Roberson May 24 '12 at 13:59
show 1 more comment

closed as not constructive by gnat, Walter, Jarrod Roberson, ChrisF May 24 '12 at 20:16

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

7 Answers

up vote 0 down vote accepted

Your situation sounds quite bad, for several reasons:

  • Your client seems to be short of money, or at least driving a hard bargain. This is never a good thing, and if you are offering decent services, your client(s) should be happy to pay you for it.
  • You seem surprised at the contract. Even if there was no contract in place before, clearly your expectations didn't match the client's. At best, you were both slightly naive and there's a large gap in expectations, and at worst, your client maliciously played you on purpose (e.g. if they withhold payment unless you agree to this, and knowingly sprang this on you late).
  • The contract seems to include several items which are very difficult to quantify, meaning a large risk for you. It doesn't seem reasonable (even without considering the "for free" part), which is never a good sign.

So in general, I agree with most of the other posts, you should take a hard line here and possibly cut your losses, if it comes to that. Having said that, your post still has some unanswered questions, so I will try to give some insight.

I wanted to hear from professionals how you guys handle / what you charge for documentation, training, warranty, changes in scope etc...

You really have two broad classes of scenarios - either the project is fairly well defined (in terms of requirements), or it isn't. What I'm going to describe below is for the "well defined" route. While this seems very "waterfall" / old school, the simple fact is, clients almost always want a fixed quote before work begins. The simplest alternative would be a "pay-as-you-go" approach where requirements are not fixed, but this doesn't seem to be attractive to clients, and will also make it difficult for you to plan your own availability.

I've always gone with a single hourly rate; this may or may not get communicated to the client (according to their preference for how the project and billing is structured), but it forms the basis of your estimates. Essentially, I mean that the rate charged for training, documentation, bug fixes, or new features is the same. The problem then becomes trying to estimate the level of effort required for each.

It is quite common to offer a fixed duration of training - e.g. "4 days of training", with various conditions attached. Typical conditions might be: specifying that each "day" is 8 hours, whose responsibility it is to set up the training environment, where the training will take place (the client may want you to travel). You are probably assuming: "I will show up, and train some people for a few hours". Your client might think "this guy will set up PCs for 20 people, train them, and give them lunch". It's best to clarify responsibilities early.

Warranty - I have no issue giving a limited warranty; if the scope of the project is clear, with unambiguous requirements. Use your judgement here. I also like to keep the warranty period short, as it can interfere with future projects. E.g. you don't want to be 3 months into your next project when the previous client decides to go live, and starts needing weeks of your time. I normally go with a 1 month period, along the lines of "anything that doesn't work as per the specifications will be fixed for no additional charge, as long as it is reported within 4 weeks of delivery date". Offering warranty is also great motivation to keep yourself honest, and the work to high quality, so I actually like to do it.

It's important to note that the warranty is explicitly tied to the requirements (assuming it is their responsibility to provide those). Don't agree to any requirements that are too ambiguous or broad for you to be comfortable. Even more importantly, never guarantee anything more than this; it's not your job to ensure that they are financially successful in using your software (e.g. that the requirements were good in the first place).

Changes in scope - this is the difficult one. I normally classify these into trivial and non-trivial changes. Trivial changes are things that would take less than 30 minutes to do. I will often let these slip, and do them without charge, because it'd cause more friction to explain to the client why you are not willing to change 1 label.
Include a few hours in your estimates for these, and you won't feel cheated when they come around. Non-trivial changes, in general, are not allowed. If they are critical for the client, they won't mind you whipping up an addendum to your quote (and typically, critical changes will be large enough to warrant an addendum).

Since requirements do tend to change, keep your projects short. I like to split large projects into roughly 1 month iterations, with defined requirements and a testable, executable deliverable at the end of each. Any changes arising out during one iteration can be worked into the next - a modification to the quote and a quick approval from the client is all that it takes. If there's a major ripple effect, the situation is more complicated; but it is in your interest to avoid those. You need to take a very mature, pragmatic approach to these projects, understanding the requirements intimately, so that you can preempt show-stoppers early on.

To summarise:

What you are doing here is estimating things. The more you know about yourself and your client, the easier this becomes. With experience, you will learn to detect problem clients early and avoid them altogether.

When you see risks and unknowns, make sure you pad for them (read up on how to factor risks into your estimates). If I'm pushed into these situations, I tend to err on the side of caution (this also gives the client incentive to minimise unknowns). Do communicate with your client about these things - 99% of the time, they would rather clarify a requirement, or narrow the scope of something in the contract, than be thrown with a hugely padded quote.

Never go into anything that poses a severe financial risk for you - unbounded warranties, etc. When you have a long history with a (reliable) client, you can relax these rules to make things easier, but in general, they still apply.

share|improve this answer
    
This was very useful, I have a feelin I am going to be revisiting this several times a year –  JAstanton May 25 '12 at 0:54
add comment

This is simple, tell them no, submit a solution you feel is fair and if they aren't willing to work with you just walk away. Taking/signing a contract you know will lead to trouble isn't worth it in the long run it will cost you. There are plenty of people to work for willing to show you respect and pay you fairly that you don't have to lower yourself to work for those that won't respect you and are trying to get a "free lunch."

as Cape Cod Gunny comment bug fixing should be done for free, at least during the warranty period. factor that cost into the development costs or break it out as a cost for a warranty period if they ask for it that way. Deciding if something is really a bug or a change is an exercise left to the reader.

share|improve this answer
2  
You must tell them no. You should cover bugs & omissions for free. Scope changes or scope creep should cost money. If they object, walk away. –  Cape Cod Gunny May 16 '12 at 18:06
    
@CapeCodGunny good point I added something more specific about bugs –  Ryathal May 16 '12 at 18:18
add comment

Of course a customer wants everything for free, and a consultant wants to maximize income. Consider the clients and your alternatives... then it's mostly a matter of negotiating your best deal, and walking away from unprofitable deals.

Many consultants charge per hour for all of the above, but then also throw in some answers and quick fixes off-the-clock to maintain good client relationships.

Warranty coverage is an insurance business, and most programmers are not insurance companies (either by capitalization or expertise). Offering (re)insurance has bankrupted billionaires. YMMV.

share|improve this answer
add comment

Me personally, I estimate what it costs me to do these things along with the rest of the project.

Then I look at how much money I would be getting in return.

I subtract the former from the later to estimate profit.

Then I decide if that's enough or if I want more. If it's enough, I do it. If it's not then I tell the customer I'm not willing to do the work for what they want to pay. Either they give up trying to get something for nothing or they go find some other sucker. It's a win for me in either case.

Of course the "changes outside the scope of the project that don't affect deadlines" is easy...there's so such thing so there's no problem giving that away for free. Of course, that doesn't mean I'd agree to a contract with language that vague in it.

share|improve this answer
add comment

So let me get this, The Idea is on no additional charge extending outside the initial declared charges at the time of contract right? Just factor in all the required things and estimate the charges up front declaring your fee and time for all the effort involved.

There are few things to consider here.

  1. This may seem like a situation where the client does not trust you enough to do a good job and is just trying to buy insurance if you try to do a shabby job and hold you accountable.
  2. This can also be the case where you are expected to give out a lot of free lunches like you fear.
  3. As CapeCodGunny Points out If the warranty only ensues Bug fixing and Ommisions. they should be done for free.

Options

  • Write your own follow up contract getting written and explicit definition of "Reasonable as agreed upon by you and the client", clear requirements and usage to understand any bugs/errors on your part and the list out the charges as per additional requirements.
  • Keeping in mind the first two considerations , ask your self why this situation has arisen and if it is really worth your time and effort and reputation to pursue this engagement further.
share|improve this answer
add comment

The definition of reasonable is going to be a landmine. Large contracting companies can often offer a year's support for 1/3 of the headline cost, but they have at least two advantages:

  1. they have an agreed and finalized functional spec and
  2. they have enough manpower and resources that if they over-run on one job, they absorb the loss and chalk it up to experience (i.e. the self-insure against unsuccessful projects).

If you can't do both those things, don't sign.

Documentation and training is a different matter, offering it for free is a reasonable thing. Offer a specific number of days of training (total, not per staff member).

share|improve this answer
add comment

Can you provide all those things with no additional work? The customer seems to think so.

Other reasonable interpretations are that the customer doesn't think those things add much value (in which case it shouldn't be a big deal to drop them from the contract) or the customer is trying to get something for nothing.

Try: "we strive to provide excellent service and excellent value, but we hope you'll understand that we can't work for free." If that doesn't work, try the door.

share|improve this answer
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.