views:

42

answers:

3

Hello!

I have a project I am stuck with because the customer always tells me "Hey, I just forgot to tell you one LITTLE thing..."

Now, I don't really want to abandon the project after so much work, on the other hand my customer will never be able to tell me in advance everything, he will always have more changes.

The question is if there is a pattern or technology for such projects that are (DAL+representation) rapidly altered.

NOTE: it's in WPF + VB10, but I guess my question is language agnostic.

+1  A: 

Arguably, there is never going to be a way to cover all possible changes that might be made to the specs. You'd just be writing abstractions =) Sure, you can be highly scalable in your design, and by all means I think you'd be better off for adopting any practices that'll help you in that regard, but ultimately, the most important thing to get across is that your code is not the place to tackle these problems. This is not a technical issue at all.

All customers will want to change the specs. Many are not very tech-savy, and that shouldn't be a problem, because that's our job to be. You'll encounter many customers that'll have a very specific requirement, but no idea what that requirement might entail, or look like in real life. There is only ever going to be one way to deal with this issue:

Make proper agreements. Write a spec that clearly specifies what is included, and - perhaps more importantly - what is not included. Make it clear that any changes to the specs will be implemented at an extra cost, and that they may void any agreed deadline. Make it clear to the customer, when a new requirement comes in, that it is a new requirement - you can't argue about that after the implementation.

In this way, whenever the client has troublesome changes in requirements, you can make it the client's problem, and not yours, in a very professional manner.

David Hedlund
Yeah! they always blame me "I only want that a customer should be able to have many addresses, not just one, you can't call that a major change, why does it have to take more than 10 minutes!?", but he doesn't realize that this change have to be applied in 3-7 tiers and views.
Shimmy
+1  A: 

Well, the whole idea of agile software development is to "embrace change" - you might want to have a look at the ideas of the agile manifesto and how these work out in practice. A decent book I just recommended a short while ago is "Agile Software Development, Principles, Patterns, and Practices" by Robert C. Martin.

Then, again, remind your customer that changes that deviate much from the current objectives will cost him. But, in all honesty, you should be grateful for changes, they will keep you employed, thus keeping the money rolling in. I'd probably charge the customer depending on the nature and size of the change and implement it in another upcoming iteration, while focusing on the already defined goals in the current iteration.

Jim Brissom
A: 

That's the nature of customers. Your job is to help them get to success. You can't afford to have only customers that fail because they did their requirements upfront to discover few months after that they are not in sync with their market.

So a customer that changes his mind frequently is good ! You have to embrace it.

Just ensure that you get paid for the extra work. Using small iterations like in Scrum can be helpful.

Tell your customer he has to write down all his changes requests and that he can come with new things only once every two weeks.

Pierre 303