Software In Process

How can you improve your software project?

Start a clock the instant work begins on a feature. Stop the clock the instant the feature goes into production. The average time gap between investment and return is SoftwareInProcess (SIP).

A simple way to visualize SIP is to draw a ValueChainMap. Start with deployment and work backwards--what happens right before deployment? 1 week of final QA with no changes. Before that? 4 weeks of UserAcceptanceTesting?. Before that? and so on back to the beginning of development. Add up the numbers (be sure to include time waiting for overloaded resources.)

What would you do if you wanted to squeeze 20% out of your SIP? You can't just arbitrarily chop the time. You have to look at something like User AcceptanceTesting and ask, "Under what circumstances would User AcceptanceTesting add no value?" Probably something like SitTogether with the customers would make User AcceptanceTesting redundant. Try sitting together. If UAT is now redundant, eliminate it.

The underlying theory of SIP is that more feedback reduces the amount of wasted effort. Shortening the feedback cycle will increase the amount of feedback. Learn to deal with the feedback you receive and you'll be ready to shorten the cycle further.

Unfortunately, the cynic in me says that the common answer to reduce your SIP is "ship it as is." This is acceptable in highly iterative releases, but generates problems if you have a long release cycle.

There are two related capacities at work here--

If you eliminate PostDevelopmentTesting?, you will generate much more feedback (defect reports) without creating more capacity to handle feedback. Eventually the system reaches an equilibrium state. The way out of the equilibrium is to eliminate the source of the feedback (the defects, I mean, not the customers), then shorten the cycle again. TestDrivenDevelopment, PairProgramming, and CodeReviews are possible ways to reduce defects.

Excellent thought , David


EditText of this page (last edited March 2, 2010) or FindPage with title or text search