We had the same issue 2 years ago. The client requested 1000s of minor changes and tweaks, backwards and forwards across the same ground. We were billing T&M so kept making the changes they asked until they stopped the project complete and blamed us for not being able to deliver ... very frustrating.
We have since recovered the project, with the same people but it has taken some effort.
We now break up the design and development phases. Getting them to sign off detailed designs upfront ... in our case "this is the screen, this is what happens when you press the button ... etc'.
We have taken the overall project of 2-3 years broken it into 9 phases (3-5 months each). Each of these phases have been broken into sub points. This has got us down to the individual screens we develop ... We have a template we fill in about each screen with the customer including balsamiqs and buttons presses etc. The client then signs "this is what we want" we then quote on building exactly that. We have a "Style guide" document which gives samples of Balsamiq > Final ... thus "tweaks" are chnage requests.
We still allow them to change their mind but we do each as a formal change request that is paid for seperately.
We have a single page which shows the original dates VS the currnet timeline dates. Each change request is visible on the report pushing out the dates.
We then break down these subprojects into 2 week sprints, delivering something every 2 weeks, showing progress, taking feedback. We have a 1/8 sprint "cleanup" so that all the tiny non-critical path / non-structural items can be bundled up into one bucket ... they know it will happen, they can relax about those bits.
There is an overview on our website
Because having been on both sides of the fence (the customer and the supplier), when you don't understand what is going on exactly (because its not your field of expertise) it is very hard to judge a whole range of things:
- What is important VS what is not ... there is a tendancy to focus on the few things you actually have a grasp on and gloss over the large amount of things you don't. Another client would always focus on the colour scheme rather than the highly complex routing information to be collected and the algorithm which would make them their money ... so we used the balsamiqs above to a make it back and white and like a child drew it so they couldn't focus on the colour scheme until the "look and feel" meeting, where they could choose once and sign off.
- Understand the impact of each change, plus the bigger cumulative impact of all your changes. Somethings that look large are really 10 minutes and somethings (usually non-visual) sound easy but have huge implications ... explaining these is critical ... we try to find a tangible measure "number of points we have to change" 1-3 points is easy 10-20 points is bigger amount of change ... over time they have some measure to compare X against Y.
- The Client is expecting and trusting the the supplier to deliver what is promised in the inital meeting. Unless otherwise stated and made obvious, anything past that point is mere detail and isn't impacting the overall project ... In other words they don't know when they are taking the project off track its part of the suppliers role to educate them along the way ... we do it by breaking everything down visibly into bite sized chunks ... we then show the new chunks being added along the way.
- Commitment to the process. Most people are afraid of commitment and especially visible commitment ... ask any single guy ;) ... because its harder to turn back, its a point of no return, you aren't really in control of it anymore. Get them to commit to small things "sign off on 2-3 years all at once" is very scary and comes with a lot of assumptions. Sign off on this inital screen design or baby step ... thats ok, you make progress.
The biggest change I saw in my clients was putting a deisgn document infront of them with a signiture line saying "I have done whatever is appropriate to understood the implications on my business (due diligance) and this signiture represents acceptance" ... suddenly there is a lot of twisting and turning, a lot of "let me just re-read ... ". I change them seperately for the design VS development as 2 seperate milestones ... development doesn't start until design is signed off. We always do it in a meeting and sit there making any changes to the design document or talking through issues until they are happy.
Its more project management up front but it pays off fairly quickly as you manage through the change requests (and change for the project management).
To summerise that stream of consciousness:
- Break everything down into bite sized chunks (no more than 2 weeks is our guideline).
- Make each chunk a mini-commitment.
- Make a "gated process" that the client signs off at each gate not just start / end of big project.
- Seperate out the areas of the project, make them focus on 1 thing at once (and sign off that part).
- Give constant feedback to the client about their decisions. Make them visible on a timeline so they can see their current and previous decisions playing out.