Monday, May 17, 2004

Microsoft and Extreme Programming

by Asim Jalis

These insights are related to seeing up close how the Microsoft development process works. The fundamental problem with the way we were doing XP (and this might be the way a lot of organizations do XP) is that there is no appreciation for the significance of a release. A release is assumed to be just a bunch of iterations blended together. It is precisely the sum of its parts (the iterations) and nothing more. Related to this is the idea that stories create user value. Or that each iteration delivers value. In fact both of these statements are false. There is an illusion of value. But there is no real value. It's a game. Let's take a really really simple example. Suppose I am writing a commercial printf library that implements the printf function for Java. Say there is some small demand for this. So suppose I implement %d first. This creates almost no value. No user would be interested in investing in downloading and using a function that just implements %d. A program that is useful is much much more than the sum of its parts. The features work in concert to create value. The function is not a linear slope, but rather it is a kind of a non-linear step function. It is all or nothing. Each release consists of a bundle of mutually reinforcing features that together deliver real value.