Current Articles | RSS Feed RSS Feed

Using Agile methods to deliver on a fixed-budget, fixed-time commitment

Posted by Andy Singleton on Sun, Jun 28, 2009 @ 10:54 AM
 

Good comments, and some skepticism, greeted my article about 6 things that you can skip to accelerate a software project.  Mirko wrote “You are crazy”.  A more serious criticism came from MikeB, who, like many others, works for customers that want fixed specifications with firm time estimates.  He wrote “What timelines do you have? I work for customers who purchase software or software services from us. This is a huge piece of the agile methodology that I don't see fitting in the provider-customer relationship. Customers need to budget as much as anyone does. You just can't tell them that 'no, we're not going to design this' and that 'we'll get it done when we get it done and just keep charging you along the way'.   Find me a customer that will accept that, and I'll retire right now.”

Timelines and budgets, in my opinion, are the easy part.  You can do a good job with a fixed price/budget, and a fixed timeline, if the deliverable isn't fixed.  So how do you get away without promising a fixed deliverable to a demanding client or sponsor?  You fix the important part.  You create a roadmap, a prioritized list of feaures, where the important things are sorted to the top.  You guarantee a minimum level of capability, and then you go from there.

Then, the whole thing fits together.   Agile methodologies deliver releases on a fixed time cycle.  So, they give you a much better chance of hitting your delivery date than non-iterative methodologies.  Your expenses are based on the time required (mostly, cost of labor per week), so if you can deliver on time, your budget is easily fixed at (cost per week) * (number of weeks).  You take some risk by guaranteeing a minimum deliverable, but that's your job.  At some point, you have to step up, and be good at what you do.

The thread is copied below.  At the end, I present our battle-hardened (but not foolproof) Assembla Consulting recipe for delivering a product on a fixed price / fixed time basis.  And, in extreme circumstances, I suggest this simple scheduling algorithm.

posted @ Friday, May 01, 2009 2:51 PM by MikeB
Hrmm - you develop software for a web platform that customers subscribe to. What timelines do you have? I work for customers who purchase software or software services from us. This is a huge piece of the agile methodology that I don't see fitting in the provider-customer relationship. Customers need to budget as much as anyone does. You just can't tell them that 'no, we're not going to design this' and that 'we'll get it done when we get it done and just keep charging you along the way'.  Find me a customer that will accept that, and I'll retire right now.  The Agile approach sounds all peachy - but in the business world... hmm...


posted @ Friday, May 01, 2009 3:08 PM by Andy Singleton
MikeB, I don't understand your comment. Agile or not, you have prioritize the features that you are working on for customers, and tell them "yes, we will do that" or "no, that is not on the roadmap." You have yes's and no's whatever your methodology. 
 
If you give a customer an exact time of delivery to an exact specification, and then miss the date, you are actually causing a worse situation than if you don't give a specific date. Under the agile methodologies that I propose, you do better for this customer in two ways. First, you move faster, so you have a higher probability of hitting any given date. Second, you can get them a release on a specific date, if that turns out to be important, by not committing to a fixed spec. 
 
I usually work with a fixed timeline, fixed budget, and some flexibility on the spec. So, perhaps Assembla's work does fit into the type of customer relationship that you are imagining. 
 
However, there are a lot of customers that like the idea of getting software when it is ready to be released, soon, but with no timeline. That's the policy that Google uses, with their soft launches and endless betas. Google is one of the biggest software companies in the world counted by either revenue or users, so it's clear that they have found a large number of users that do subscribe to their "we'll get it done when we get it done" approach, as long as the basic underlying service continues to work.

posted @ Friday, May 01, 2009 3:21 PM by MikeB
I see your point Andy - or, really, I -want- to see your point. I love the agile concept - however, again, I'm not sure that it works when a customer is purchasing a deliverable product from you. That is, when we're not building a product internally, or as a beta, to be released later for sale to a community (like Assembla and Google products).  
 
Let me try to explain my thinking (correct me where you see me wrong) - So in your case, you can certainly work the agile approach because you know that whatever changes you make to the solution are out of your own pockets. If its a worthwhile change, where you see the potential to increase price or number of sales, you'll choose to add it in. 
 
Contrasting this though with customers coming to you for a specific product to be built specifically for them - they need to know what it is going to cost; they'll require it - 15+ years in this business I've never seen different. Maybe I'm doing somehting wrong, I'm always one to listen to critique...  
 
So, how can we give a price tag and at least a close timeline if we start so loosely and allow change along the way. 1) we never know what it will cost us to build it and 2) the customer will never know what it will cost them to have it made. 
 
I know I'm probably in an old school paradigm, but I am able to look outside the box... I just wish I could make more sense of this - I'm even having a tough time explaining it here. But really, I do appreciate your feedback on this as I really do want to visualize this working the way its supposed to. I just haven't found a customer to support it - they have to know how much money they are going to spend - just like everyone else. 


posted @ Friday, May 01, 2009 3:42 PM by Andy Singleton
MikeB, it can work if you assume that the specification is not fixed. At Assembla Consulting we work on fixed cost, fixed timeline development projects, and here is how we quote it.   

First, we make a roadmap, a list of features sorted in priority order. Whenever possible, we pull features apart so that we can deliver a simple feature first, and add to it later.  
 
Then, we read down the roadmap and we draw a line under the minimum feature set that we think will make a useful release. That's our guarantee. We take some risk to guarantee that you will get that much, within a fixed budget and timeline. There should be a high probability of going considerably beyond with the same budget and timeline.  
 
Then, we decide on a timeline that includes a first useful build, a beta release, and usually, a full production release. These timelines range from 8 to 26 weeks, and typically are more controlled by the business schedule than the development team.

Then, we design the team or "level of effort" that we think we need. Admittedly, this requires a rough estimate of the work to be done. The team has a certain weekly cost.  
 
The budget is equal to the cost per week, times the number of weeks. 
 
Then, we work on the roadmap in order. We assume that the roadmap will change approximately weekly if we see opportunities to improve the product. We release daily for the development team, weekly for the client, and to bigger groups on the dates promised. We try not to make a decision about when to release, but instead, discuss who should see the release, depending on its level of maturity.  
 
With this technique, the exact deliverable is not fixed, but you have a fixed budget and timeline, and you always get a useful product.  
 
This method is not appropriate for someone who absolutely requires a fixed spec - probably because their budgeting process is so unwieldy that they only want to go through it once. However, it produces a MUCH more reliable timeline than other methods, and it leaves open the possibility of getting a better product than you initially specified.

posted by MikeB
Very good clarification Andy, thanks. This has spurred a great conversation. I have often wanted to hear how another business owner utilizes this agile approach. I'll take a little time to re-read and further absorb your response - I may reply or may not reply again - but your post allowed me to air something that has been bewildering me for some time. heh  
 
It was particularly useful hearing a response from a business owner and developer, rather than simply from a developer high strung on agile. 

Tags: , ,

COMMENTS

Hi Andy, 
Customers are not mature enough. They take agile to be something where they can change requirements at any point of time, Specially in Fixed Price Fixed Time projects ,it means that life of developer becomes hell. You should read Dilbert for the definition of Agile. Agile is abused by mediocre management to make developer's life hell. To them Agile means micro management and good developers don't like to be micro managed.

posted @ Monday, June 29, 2009 11:54 AM by Shailendra


Andy,  
 
Thanks a lot for sharing your technique on fixed budget + fixed timeline approach. During the project execution of such setup, do you use a team of dedicated developers through out? Or you use the approach described in the Podcast with IT Conversations where you constantly shuffle and reshuffle remote developers at early stage until you find the optimal team? 
 
We help companies to staff and manage dedicated offshore development center. I've been listening into your agile strategies and really trying to figure out a better way to serve clients with more agility. Not sure how to best approach agile in the dedicated offshore environment? It would be hard for us to shuffle the developers constantly as we take risks hiring these offshore employees onto payroll and offer them as dedicated contractors to clients.  
 
Thank you.

posted @ Monday, June 29, 2009 6:27 PM by Jason


I think this conversation is awesome and agree with many of Andy's points around scope. The discussions so far seem to revolve round scope that may initially seem to be immoveable , but sometimes and somehow we can persuade our 'immature' customers to move scope. 
 
I coach companies and organisations in using precisely the techniques that Andy brilliantly explains here - so I get to see many many complex customer engagements and it is not at all unusual for my client's customer to say 'Great Roadmap - you have listed all the things I want, roughly in the order of importance - now I really don't care much for the lines YOU draw, here is the line I draw and this is the date I want it by' 
 
Surprise surprise, the line includes EVERYTHING and the date they specified, doesn't! 
 
They want a price and a commitment and don't really want to wait too long to get it! 
 
Unlucky - because this customer is 1/6th of the entire revenue of my client. 
 
You can try and wiggle, shuffle and shake - but this is not a dumb customer - they are very mature - they understand their business better than you do - what are you going to do? 
 
There are only 2 approaches I have seen work in this scenario... 
 
1). If you are a successfully agile team - exhibiting the benefits of agility - regular high quality product releases, stable velocity, known team costs etc, you can maybe trade fix scope and trade on time (within very short range), so for example you can say we will make monthly deliveries according to the roadmap and 'what you don't get by the date you asked for will be in a month later etc'. It helps if your client has a way to use your monthly deliveries. If they don't but need to be assured of the quality of your delivery, then this is what you try and trade on. I have only seen this work once (though since then, it has been the way this client engaged with this customer!) 
 
Secondly and more common, is to use the metrics and means that being agile give you to better capacity plan for the fixed terms - because now, only effort can be varied. 
 
Using estimating (by the teams) and applying their estimating team's metrics (velocity etc) you can, within a very short time, you can see (at a high level) what is likely to fall out of the delivery if you do not add more teams (not team members!). So there is a fundamental uncertainty here and you only able to guess what you need. 
 
This risk and uncertainty has costs - which you may decide to reflect in the fixed price you give the customer. 
 
There is more to this than I have written but hopefully you get the idea :) 
 
thanks again for reading and thanks to Andy for really good explanations. 
 
Mike

posted @ Thursday, July 02, 2009 11:55 AM by Mike Sutton


Comments have been closed for this article.

Follow Assembla

twitter facebook youtube linkedin googleplus

Subscribe by Email

Your email: