Freud & Versioned Development: Reducing Project Risk w/Psychology
In Steve McConnell’s classic, ‘Rapid Development,’ he talks about the benefits of versioned software development.
The basic idea is almost a kind of psychological trick: Instead of promising one version with five features, you promise five versions with one new additional feature in each. Either way, the customer expects they’ll end up with the same thing. But by doing this, you force the customer to ruthlessly prioritize the most important features into the early versions. Guess what happens next?
By the time you’re into version two or three, the customer realizes that what they planned for versions four and five is all wrong. They need something different. So plans can be adjusted and the new revised requirements can be met. Now imagine that we had originally built the entire application (all five features) in one version. At this point, the code for the original features four and five would have to be thrown out, and the new revised features would have to be built.
The benefits of versioned development are obvious. But after watching this process unfold a couple of times now, I’ll go a step further: Not only does versioned development bring the utility of rolling wave planning to bear on software and reduce wasted effort, it reduces work entirely. What do I mean? I mean that I’ve seen customers end the project early because they realized that the functionality in version one, two, or three meets their needs entirely. They certainly don’t need the features originally planned for versions four and five, but nor do they need a different set of features.
And as everyone knows, project size has a linear relationship to risk. If you can reduce the size of your project with the psychology of versioned development, then you can reduce your project risk. Your project is more likely to be successful. Beautiful…


