Causality? Or Correlation?
There's an interesting thread on
Ward's Wiki:
Could Extreme Programming Have Arisen Without SmallTalk? (for those who didn't know this, the earliest use of Extreme Programming was on a commercial SmallTalk project.)
Looking over the discusion, I notice that is heavily weighted towards arguing cause-and-effect. The abridged version is:
SmallTalk has these properties, which lead you to these practices, which are codified as XP. The implication is that if everyone had been using SmallTalk (perhaps because it had "won the war with VB"), XP would have been independently discovered/invented dozens or hundreds of times.
I am unconvinced. Instead, I suggest that both SmallTalk and XP are common effects of a hidden variable. They are
correlated.
The kind of people that chose SmallTalk for an enterprise application at a time when OOP was considered an unproven language paradigm, and at a time when running "serious" applications on a virtual machine was considered "unprofessional," are the kind of people that will discover or invent new ways to do things.
Paul Graham said similar thing in his
Python Paradox essay:
if a company chooses to write its software in a comparatively esoteric language, they'll be able to hire better programmers, because they'll attract only those who cared enough to learn it.
What I like about this quote is that it says nothing about whether the "esoteric language" is more productive. It simply says something about the kind of person who learns an esoteric language. And likewise, you can infer something about the kind of project that is implemented in a comparatively esoteric language.
I conclude that the relationship between SmallTalk and XP is one of correlation, not causality. In my opinion, radically different practices like XP are most likely to be discovered/invented by people who are willing to bet on radically different tools like (at the time) SmallTalk.