This week I saw Steve McConnell give a short but enlightening overview of Thomas Kuhn’s The Structure of Scientific Revolutions. From Wikipedia:
Its publication was a landmark event in the history, philosophy, and sociology of scientific knowledge and triggered an ongoing worldwide assessment and reaction in—and beyond—those scholarly communities.
Most interesting to me was the idea that a theory is best described not as right or wrong, but rather as having more or less explanatory power for the data it chooses to address. Different theories seek to explain different data points. Additionally, a new theory which “replaces” an old theory may actually address itself to different data points than the older one—the data points of the new theory may not be a strict superset of the old one. That means the new theory may not address exactly the same problems as the old one… but still it may have more overall explanatory power.
Steve gave two examples: biological evolution and software development.
Example 1: Intelligent design advocates try to demolish biological evolution by saying “It’s just a theory”. In the above structure the correct response is “Yes, but it’s got better explanatory power than your theory.”
Example 2: The project that created NASA’s space shuttle flight control software used waterfall-like CMM, and the shuttle’s mission was successful. Meanwhile the original project for Extreme Programming, C3, was a failure. However Agile and XP have since been applied successfully to many other projects. The chances are that your current project is much closer to those Agile/XP projects than it is to the shuttle project—even if we include C3 as a data point—and therefore we can say Agile or XP has more explanatory power—and is therefore more helpful to you—than CMM.
An argument of “right or wrong” can get ideological very quickly, and I find Kuhn’s structure helps us get away from that. The concept of “more explanatory power” allows us to make practical use of our theory without becoming zealots.