When a mistake for a client is a really new feature

I read what-payment-structure-do-you-use-for-small-projects and I wonder how you guys deal with the error and the function. I once had a situation where a client wanted static reports. Then, near the end of the project, after most of the work on the reports was done, he said that he always wanted dynamic reports. This change was not easy because we chose a framework that did not support dynamic reporting. It was a strange situation, because the client had a development team, so they should have known. Perhaps it was just a lack of communication skills.

How do you guys deal with clients trying to add you to the functions because they forgot, changed their minds or didn't understand?

I mean big functions, not small ones.

EDIT:

He stated that the budget is fixed and cannot be changed, and that this function (like every one) is crucial, and without it they would not accept the system. (worst case scenario only)

+6
project-management waterfall
source share
14 answers

In my experience, on both sides of this problem, this is usually more about economics than programming, processing, or project management.

We, the client, often say "it may be a feature, but if we call it a mistake, perhaps we can get them to do it for free."

In the end, we, the programmer, pay or do not charge more for whether it helps or impairs our chances of future work. We, the client, are chatting carrots for future work as an incentive to get programmers to do extra work for free.

I do not think that this will change only because we have a better way of saying "this is a mistake" or "this is a new function."

+7
source share

It is important that both parties understand what they get for their money very early in the software development process. The Agile methodology is a great tool for managing this process. If you have the speed of your team, you can pretty accurately determine how many functions you can add during each iteration. Evaluate tasks and keep the client involved in prioritizing which features should be added, and even less important. Be sure to get a client demo after each iteration to show that the functionality that you both agreed to work at the end of the current iteration. If the client wants another function or significantly changes the one you have already agreed on, evaluate the number of plot points needed (the units of work used in Agile) to make this new change or rework the current functionality. This will help them remove another feature they think is less important than the current one they just proposed. This keeps everyone happy, and there are no surprises when the product is "shipped"

+5
source share

It makes no sense to try to argue them. After all, communication problems or not, the mission is to deliver what the client needs in the software.

I would go with the Iron Triangle argument as follows:
1) Obviously, we want to deliver the product you need, so let's work together.
2) We all understand that no matter how we get to the present moment, we can only go further from where we are today.
3) We also understand that making changes will take time and money, which must come from somewhere.
4) At the moment, your options are (choose one)
* Replace the work that was planned for some other functions with the work required for this change to stay on the budget and schedule (donate to other functions)
* Extend the term (increase the cost / transitional period)
* Add resources (increase cost)

Warning: although C makes logical sense if you are in production (creating 1000 more pencils), in R&D work like software development, it is usually just another B flavor where you increase the bias of cost and time.

+5
source share

If it is not in the project plan / written agreement, it is beyond the scope.

+4
source share

We have a specification in writing, and the customer subscribes to it, agreeing to pay for the features described in this document. If they change their minds later on to something simple, we will usually work with the changes at no extra charge, but something like what you described will require a new purchase order.

+3
source share

Well, the simplest answer is that a budget or contract has requirements. Changes to these requirements should be presented as additional, and then go through the same process as the original project. They should be budgeted and evaluated.

As soon as all this is done, if the client wants him to approach the initial launch date (and this is feasible), add extra for overtime hours.

At least that's what I did.

+2
source share

I charge them.

+2
source share

I would recommend making sure that the requirements are as smooth as possible, and that both parties understand exactly what is promised. This keeps the customer happy because there are fewer situations like you describe, and it pleases you because you don’t jerk around.

+2
source share

The question relates to two topics: negotiations and project management.

With regard to project management, you need to manage the risk that the client will change his mind or misunderstood the agreement in advance. Here is a list of preventive measures that are usually taken in a software development project; it can be used as a checklist when planning or revising a project:

  • Avoid most risks if, before you start writing written specifications. In case you perform smaller iterations, there is a specification for approving iterations. It should not be too detailed, but should set the expectations of customers and serve as a guide. Detailed things that you are not sure about the specification.

  • You may have another possibility that tells the client directly about the execution of certain risky bits.

  • Put a certain amount of time and budget in the plan, speak with the client that any compatibility will be used only by agreement with them.

  • I explicitly propose alternative solutions for the client at the planning stage, discuss the pros and cons and document the solution.

  • Even if you make a waterfall in several stages of the project, where you will make a demo version for the client or specify the requirements. Take this opportunity so that the client is still in order with the proposed solution.

  • As stated in Webdtc, always confirm the results of telephone conversations and face-to-face conversations by sending a brief summary by email.

  • Keep the results, their acceptance and payments distributed to projects for more than a month. Even if the client pays at the end of the project, make sure that you receive confirmation of their approval of the interim results.

Let's hope that after these tips you will never encounter a difficult situation when you will need to negotiate deliveries after the fact of a client who is at risk of non-payment. But if you, nevertheless, were forced to withstand unreasonable requirements, the information that you had accumulated by then would give you a very strong leverage. Tips for negotiation:

  • Start by understanding the exact cause of consumer demand. And exactly what their position is. Confirm that the customer understands them correctly.

  • At this point, it may be your mistake (it is unlikely if you manage the project correctly), a client mistake (sometimes they change their mind), or on both sides (most likely).

  • When all this is likely, you will need to learn the pill and learn your lesson. However, you will need to agree with the client about new deadlines so that the problem does not cost you even more. Always think about offering an alternative solution to the problem built on top of the software you have.

  • When a customer or mutual error begins with a no. Come back so that they understand that you are not absorbing the cost, and not completely. Do not let them convince you that they can easily leave, it will never be so. At this point, even if they have not paid you a dime, their investment in the project will be significant: the time spent on evaluating applications, participating in meetings, the efforts they made to communicate, their and their dependence on the client regarding the completion of the project in mostly on time and on budget, etc. You may have to split the costs between the two organizations, but start with “no” to make it clear that they are responsible for making efforts to clarify the requirements in a timely manner, as you are in the process of finding what is needed.

+2
source share

It seems to me that the client can seek an excuse to withdraw from the agreement without paying anything. If he can arbitrarily add features and insist on them for final adoption, at no additional cost, he got a way to make you break the contract.

There are two obvious ways to avoid this.

One of them is payments for the entire development, so that the client can not dismiss most of the payment, and you are more or less compensated for what you did at any time.

The other is a good contract. For any reasonable software project, a few hours of legal fees is cheap insurance against something like that. If you are sure that you can sue the client for the agreed fees and win, the client has less chance of trouble, and if all else fails, you can sue.

I don’t know what the contractual agreement you are working on (and I’m not a lawyer at all), but in such a situation I would get a lawyer and see what situation I was in. Even if you are in a dubious legal position, it’s possible that the letter from your lawyer can help resolve things.

And do not return to this position.

+1
source share

Well, if that's true, just go. What to explain if you agreed on one thing, and now he wants to do more? Are you getting back?

I would make it clear that we initially developed a static report, and that was what was signed. It can be expanded to dynamic reports and that you can provide a quote if he would like to know the specifics.

I often use the analogy of building a house. Either the client changes the plan, or finishing materials that require more time, materials that need to be completed, from what was originally agreed.

Hope this helps!

+1
source share

What I do in this case, see the previous documentation and posts.

For example, if the documentation / link says "Create Reports." If there are no specific references to dynamic reports, I would not give it to the client.

If there is any documentation that says “dynamic reports”, then the client will be right, and I will have to develop reports at no cost.

If there is a message about "dynamic reports", I will need to see what the final result is. This can become more difficult, because many times the client could: "Is it possible to create dynamic reports?" and the developer may say, "Yes, it is possible." (which means that it is possible, but that does not mean that we will do it). This is where I would have to explain that, although discussed, this is not part of the work. It is necessary to specify that the function will be developed.

If you do not keep documentation and previous messages, I would say that you are at a loss, and you will need to decide whether you want to provide the client with what they want, or risk losing the client.

One of the worst things for me is a client who insists on telephone communications. These customers are those who usually quickly and easily play with their requests. What I usually do here is always to make a written observation of the client in everything that is discussed during a face-to-face meeting or by phone, and require a response from the client to make sure that we are on the same page on what will be and we won’t win.

+1
source share

There is no right answer - just a few wrong ones. Specifications and requirements have more gaps than information - there is always room for interpretation and misunderstanding ... that this is really happening:

  • future work - is there any future work with this client or a potential link to future work? if so, you drop a little, try to remove other gray areas of the results that, based on this instance, can be rotated in the right direction.
  • payment - do they hold payment based on this? and this work is still within your buffered budget (you added a buffer for this type of work - right? well, next time you will - future customers will pay for the mistakes of the past customer).
  • deliver quickly and often - IKIWISI - I know this when I see it - if earlier in front of the client and later, then the “interpretation” / gray areas are reduced ... iterative deliveries (even incomplete) work wonders

After you can’t do much, if it comes to legal action, you have lost this client and good reputation (potential) - be careful how hard you press it

0
source share

I am in a situation where this happens regularly. We write web applications that perform complex tasks, and then after we have finished it according to the specification, the user will then turn around and say: “We want not just X and Y, but we also want Z”. Z was not in the project area and thus could not be achieved in the current system, so it needs to be rewritten for new “functions”.

We get around this as follows. Treat the user like an idiot and understand the system better than they do. I know what this really means, and at first, when my boss introduced it to me, I told him directly that I would never treat the user as such - unfortunately, I learned this difficult work and now I need to know more than the user To accomplish my tasks, Mitigation is of the utmost importance, and anticipating the significant changes that may be made is a skill acquired over time.

Now I am softening these unplanned, but likely changes.

0
source share

All Articles