software projects: have your cake and eat it?

would you like to have your cake and eat it, too?

in my opinion you actually can’t; you’re not able to make absolutely sure that a project is on budget (resources), on time (delivery date), and have all the planned features with high quality, all at the same time.  there’s always a risk, and you can only control any 2 out of the 3 factors at the most. If you try to control all 3 factors at once you are most likely sacrificing the quality of the features, and thus you’re not in control over the features anyway.

Scott W. Ambler makes a few interesting points in this article about software development projects – i’ve selected the quotes that’s most interesting (to me) below.

  • “the only true measure of progress on a software development project is the delivery of working software. “
  • “Agile teams choose to produce potentially-shippable software at the end of each iteration, providing concrete and visible feedback to their stakeholders as to their actual progress. “
  • “… the majority of stakeholders prefer this sort of tangible evidence of progress instead of intangible numbers. “
  • “… the majority of our stakeholders aren’t really interested in whether we’re on schedule or on budget.”

“…. In August 2007, Dr. Dobb’s ran a survey exploring how people define IT project success, and we found that 80 percent of people preferred to focus on producing a good return on investment (ROI) than being under budget, and that 62 percent wanted teams to ship their systems when they’re ready to be shipped rather than forcing adherence to a schedule. ”

  • “… the priorities are to spend the money wisely and ship quality systems. “
  • “… shipping high quality software is more important than being on time and on budget”
  • “… instead of measuring progress against your plan, … you should instead be focusing on ensuring ROI and product quality. “

“The agile practices of implementing requirements in priority order and allowing requirements to evolve throughout the lifecycle ensure greater ROI, and agile practices such as test-driven development (TDD) and refactoring promote greater quality.”