I had been putting together some notes to write a short article about the difficulties with fixed-price software development, but Scott Ambler beat me to it. I just read his excellent piece, entitled “Is Fixed-Price Software Development Unethical?“
It’s sure to spark some controversy. As he mentions, both academia and industry have been trying to figure out how to do this for decades now, and haven’t had much success.
The important thing to note is that he is talking about projects where the scope, schedule and cost are all determined upfront. To the inexperienced, this seems completely reasonable, but anyone who’s done software development for long enough (10+ years) understands the problems with this approach:
- It is impossible to define a 100% precise scope upfront.
- The scope always changes. Frequently.
- Even with a 100% precise, fixed scope, your estimate will likely only have order of magnitude accuracy.
- Starting with a good estimate, the resources you assign to the project will make a huge difference. (The best software engineers are 10x more productive than average ones.)
These are the major factors (IMHO) that together cause a “perfect storm” of risk and uncertainty. Be sure to read Scott’s article for more points.
So what’s the solution? Do we just give up and stop developing software because it’s too difficult and risky? My next post will focus on better ways to approach software projects.