I went to hear Dave Thomas speak recently. He spoke for around 2 hours but I was really struck by his comments on cargo culting. Extreme Programming (XP) was developed to overcome the problem with cargo culting methodologies yet it’s now being cargo culted. I hadn’t really thought about before this but I have heard people dismiss XP because they can’t faithfully follow one component. I have also had fellow programmers tell me it just doesn’t work because they’ve been forced to faithfully follow a set of rules laid out in one of the many XP books.
Dave clearly stated that the point of XP is to allow you to be agile and that if something in the 12 principles doesn’t work for you then modify it so that it does. The important thing is not his, Kent Beck’s or anyone’s recipes for making a project work but understanding the reasons behind XP.
As an example he mentioned the XP principle of having an on-site customer. Is this really practical? Having an on-site customer clearly shows how important it is to have the customer’s input on a project but when this is not possible there are other ways to make sure that the customer is committed and available to answer questions. Virtual teams are also problematic as you won’t even have the programmers in the same room as each other. But that doesn’t mean that a virtual team can’t be agile.
The Agile Manifesto states that we should value “responding to change over following a plan“. This principle should also be applied to our agile methodologies.