views:

668

answers:

8

I have read the agile manifesto and spend a nice day surfing the web in search for this elusive answer. But sadly I did not get an answer that would cover all the basis.

If watching all the blog posts and news casts of agile preachers, you just hear about open scope or open "time" projects. How do you apply this to a fix cost project?

From what I found out the biggest problem is scope management. How do you determine if something is not inside the projected scope and how do you argument your decision. Because of the agile way you are implementing your software there is no detailed design to argue upon. In most cases you only have a vague wish-list that the customer hands to you. And is so general that you can interpret any feature into it.

And with the rising percentage of fix cost projects this seams to me to be weary real issue.

So the questions would be:

  • How do you manage scope in a fix cost project?
  • How do you determine if the features wished for, are outside the original scope?
A: 

I recently answered a similar question on SO. You may find that answer useful.

Eric J.
Nice answer. I find your statement that the development team cuts off quality to deliver something is frighteningly true.
Dejan
That's one reason that so many software projects fail to meet the original expectations.
Eric J.
A: 

Okay, this will not be the ideal answer you are looking for, but may help non-the-less.

For your first point:

With agile, and Scrum in particular, the style is suited toward changing specifications and unfixed deadlines using iteration patterns. To be able to manage this in a fixed scope project will be a nightmare. What one would normally do is set a budget for the specified scope, and any addendum to this would produce billable hours above and beyond the scoped budget. To do this in Scrum would be pointless, as the product backlog will be continually filled by the stakeholders. If there is no "punishment" for scope changes in a fixed budget, there will be nothing holding people back from just loading on to you.

The alternative here is to have fixed scope sprint successions, so for instance:

5x Sprints = x Cost with minimal scope change.

For your second point:

The use of Analysis and Design is an invaluable tool. By using use cases, event tables, sequence diagrams, state machines and the like; you will be saving yourselves oceans of tears in the long run. Basically, once the planning has been done, any addendum to this that requires additional (please note additional, not things that have been overlooked) use cases and large code changes will be out of scope. In fact, anything that was not overlooked in the planning and is not in your specification, is out of scope.

In closing, you will need to have very well planned documentation as well as very solid agreements with your clients to be able to pull this off 100%.

I hope this helps.

Kyle Rozendo
This is just my view of things. I must say that I am big fan of scrum. But I cant get read of the felling that we are running into the "if all we have is a hammer all problems look like a nail" problem.
Dejan
+3  A: 

Scrum does not replace having proper requirements, or even having occasional major releases or milestones. Rather, it gives you a means to keep your team productive and focused, and avoids the time-wasting side-effects of a waterfall process.

In fact, one of the biggest advantages of an agile process like Scrum is that it causes you to "fail quickly and loudly" on problematic areas of your project. If, after a couple of sprints, your team still can't effectively estimate the time and resources needed to implement a particular feature, it may be worth pushing back on the requirements in that area -- they may need to be clarified, simplified, or scrapped altogether. In a traditional waterfall process, however, those "problem features" can often be pushed back to the last possible minute, resulting in the usual deathmarch and under-delivery into which most projects devolve.

However, the role of the Product Owner is even more critical in teams using Scrum who have a large set of requirements. Left to their own devices, most development teams will focus on the most interesting/fun/geeky features (service APIs, caching, search) first, and leave the "messy" stuff like payment process, UX design, and i18n until the last minute. A strong user voice is essential to making sure those features critical to the end user receive their fair share of attention.

rcoder
A: 

I worked in a environment where we had fixed cost and fixed time projects. We has switched to a Scrum-esque methology from a Waterfall/VModel methology. Scrum can work very well in fixed cost/time projects as the concept is that the customer is put in control, however for this to work you have to be able to somewhat accuratly determine what work is required and what it will cost (time, money, resource). And this is a situtation where Scrum in an ideal candidate.

You break down the wishy-washy wish list/requirements/screenshots into tagiable deliverables. E.g. a customer may say "I want ecommerce, with Paypal", you need to break this down into actual deliverables e.g. "1. Customer Registration and Login, 2. Product Catalogue, 3. Shopping Bag, 4. Payment, 5. Order Acknowlegment". At this stage, it's still impossible to determine how long it will take, and ofc we need to deliver all of the above in order to complete the project (i.e. you can't have Ecommerce without Payment). So break them down again, and again, until you have granular deliverables, genreally delverable within hours, maybe days, but certainly not weeks e.g.

1 Catalogue
1a View all Items
1ai    View all items on 1 page with an image and item name underneath in a grid, 4 items per row
1aii   View 10 items per page with paging
1aiii  View a user slected number of items per page, with paging
1aiiii View all items on 1 page with an image and item name, descriptioon and price on the same line, 1 item per row

1b View by Category
...
1c Search
...
1d Attribute Filter
...

And so on, it can be done very quickly, and you can now probably guesstimate how long it would take todo x (ofc, I might break the above down even further, add more descriptive text to describe the work required, such as what persistant data stuctures Ill might need, the data in those structures, how data will be added, going further you might even desribe the required the begin and exit states).

Once you've go this, you'll notice that some features and depenant on others, e..g you can't have paging feature on a catalogue unless you have a catalogue to start witj, and the catagloge will require the CMS screesn to add and edit items etc etc. Highlight these 'can't live without feature' in whatever tool you using and this forms the core project, and within a day or two you have a bunch of features that can be developed somewhat standalone, with costs, which when added up make the cost of the project. And now the customer is in charge, they decide thay want to added a feature and increase the cost, cool, its up to them afterall.

All the above is obviously only a small portion of what scrum or any agile process is.

Jaimal Chohan
If we break down the customers wish list down into smaller peaces where do we draw the line between big up front design and scrum. Because we know that BUFD does not work. So here I see a little problem of how to do this right.
Dejan
I agree, it does take a bit of judgement. Think of it to be a first draft functional spec, rather than a techincal spec, you only want to desribe how something works from a user point of view, you don't need to specify everything. For example above I metioned paging, but not how I would implement it, or how the user would interact with it (is it a link, or a drop down, can I go back, forward, jump to page? etc). You could also using a UI Mocking Tool (I like Balsamiq Mocks) to get the hang of this, you're limited to very basic UI elements, if you can't mock it, its too complex.
Jaimal Chohan
+1  A: 

I don't think a fixed price contract with scope creep and a Scrum process are incompatible. You just need to agree up front with your customer how it will work. If you create your initial backlog with your customer, estimating as you go, you can use that as your basis for the fixed price cost and schedule. You can even agree to a rate of "X" story points equals "Y" cost and "Z" schedule at the beginning.

You then do the normal scrum thing, having the customer allocate stories to the current iteration, etc.

As the customer engages in scope creep, you work with them to add the "creep" as user stories to the backlog. Each time you add a new story, point out that for each X points added to the backlog, they will have to increase cost by Y and schedule by Z, or, they will have to give up story points of equal value. Since they are picking what you work each iteration, the points they give up (if that's the choice) will be the least valuable features. When your schedule runs out, you will be left with a backlog of the least important features that they can choose to drop or give you a new contract to finish.

The trick, of course, is to be good at estimating cost and schedule for each story/task ;-)

SingleShot
The problem is not to create an initial backlog, it's to estimate up-front and to freeze estimations. There is a double drawback : 1. you have to estimate at the worst moment (when you know the less about the project) 2. you can't change them later. This is not really compatible with Scrum that allows and promotes constant re-estimation as you learn.
Pascal Thivent
Like in the comment above I find it hard to join those two together. That is why this question was asked.
Dejan
+1 for a good answer SingleShot. @Pascal/Dejan: Story points/cost are not equal to hours; there is just a correlation between the two. It can be done with planning poker. It doesn't matter that there is a +/-25% inaccuracy, as long as it averages out. The scrum approach has more freedom for steering as a traditional waterfall approach as storys can be exchanged during the project. Changes can be incorporated inside the fixed price, rather than as extra cost.Fixed Price/Fixed scope is nearly impossible (often assuming fixed time and fixed quality too). This is a good approximation.
Adriaan
A: 

The project could be broken down into smaller parts and fixed rates could be attached to those. The other phases of the project could then be adjusted.

You have to be able to sell the agile process against your competitors. If a client has a history of fixed bid projects that were delivered on time, spec and cost, why would they waste their time taking bids from other developers?

Jeff O
+3  A: 

To me, the short answer about Agile and fixed price is that you can't do it, at least not with a fixed scope.

I know some people will say "that's not true, we are doing it" but, with all due respect, I don't think they are really doing Agile and I'll explain why. Actually the explanation is quite simple: fixed price implies fixed scope and is based on predictability where Agile is all about variable scope, scope management and adaptivity. So fixed price with fixed scope is basically the opposite of Agile.

With an Agile approach, fixed price gives you a number of iterations for a given team size. During these iterations, the customer will be able to have the team build the most valuable features first and thus to maximize the generated business value. The whole idea is then to stop iterating when the cost of an iteration is greater than the generated value. This is how Agile works.

So when people says they do fixed price with fixed scope in an agile way, they actually introduce some constraints that are not really compatible with the Agile theory - like doing an up-front estimation of a given set of features and freezing these features and estimations - and they loose important advantages of Agile (unless they have a perfect knowledge of the technologies and of the business domain and master them enough to predict everything but I know few projects that are like this).

Here is anyway a good compilation of various Agile contracts: 10 Contracts for your next Agile Software Project that might be helpful. But I think they all require some education of customers, especially the one that are used to fixed price with fixed scope (and late deliveries).

Pascal Thivent
I agree 1000%. Stakeholders need to be part of regular checkpoints to monitor progress and prioritize functional areas. If there is an insistence on getting a fixed feature set in a fixed time, then the stakeholder does not benefit from the agile process. Without full investment from all teams (both technical and business) the process is destined to fail - and if not failing, being near useless.
joseph.ferris
A: 

Fixed Cost does not mean single sprint. Scope gets transfered to the Product Backlog, and as Sprints progress, scope is adjusted, negotiated and delivered. Scrum allows for rapid value delivery, and provides quick validation, and the opportunity to identify potential gold plating.

Scope change may result in the addition of backlog items, and the deletion of others. Its a balance of ROI vs the fixed budget provided.

If the scope does increase (and add value), and the cost is fixed, then the triple constraint (cost, time and scope) must be managed accordingly.

Remember that fixed cost does not mean fixed length.

steve_mtl