It was both an interesting and frustrating experience reading Mike Cohn's excellent
User Stories Applied tonight. On the one hand it's the tightest, cleanest summary of how to work with user stories that I've ever read. Lots of great distinctions in a no-nonsense, readable and enjoyable book by someone who clearly has to deal with the same issues we all do on a daily basis. (Go get a copy - it really is worth it.)
On the other hand, we're still left with this huge gap. On the one hand pretty much all of the smartest developers I know concede there is simply no way to accurately predict the effort required to complete a non-trivial software project. That maps exactly with my experience. While I continue to remove variables, tighten my contracts, more carefully set expectations and develop systems to cut the cost of changes, I still have issues accurately estimating projects - even after completing over 400 over the last ten years.
On the other hand not only do all of my clients want a fixed bid/fixed scope contract, but most all of the people who I'm bidding against will provide one.
Much of this is a function of education and selecting better customers (both of which I'm working on) and techniques like Software Product Lines can be used to manage the risk in providing a fixed bid on projects within known domains (as they can radically cut the cost of development and change, provide more detailed default documentation, make many tasks configuration, increase the profit margin of development and so on). That said, it can still be frustrating trying to balance the recommended approaches in much of the XP and Agile literature with the expectations of many of the smaller clients I still work with and the programming shops who are more than willing to provide fixed price quotes.
I guess it came to a head when I read part IV of the book which is a worked example for a simple e-commerce store with a basic catalog, cart, checkout, and wish list along with some basic my account and reporting features. The estimate was something like 50 ideal days with the programmers estimating one ideal day per 2-3 actual work days (which I get).
So assuming $80/hr, 8 hr days and 1 ideal day per 2.5 programmer days that is a billable cost of $640 x 50 x 2.5 or $80,000 excluding sales effort, project management, support, training, look and feel or content entry. It would depend on how you did those other items, but that wouldn't leave much change from $120-$150k for a simple commerce site which (even if I had to code from scratch) I'd see as a 2-3 man week project at the most (programming only).
What are your thoughts? Do you provide fixed bids? If so, how do you handle things like "dark matter", rounds of revisions and unreasonable clients? Do you sell agile/iterative development successfully to unsophisticated business owners when competing against fixed bid/scope quotes? How? What are the benefits that they buy?
And would it take you 50 ideal days to build out a simple e-commerce system or do we need to introduce these guys to a more productive programming language fast :->
Any input appreciated.