(More on XP History at
ExtremeProgrammingTimeline,
HistoryOfExtremeProgramming)
I am going to push way back, and make a few broad statements that I hope
can be expanded and/or corrected by Kent and Ward, or by anyone else
that can make a good contribution.
The XP style of developing software was slowly distilled -- XP has not
been designed by a master plan. Rather, practices were added
through the years slowly and gradually.
Its core origins lie in the Smalltalk tradition and date back to the mid-80s
when Kent and Ward worked at Tektronix. Things like refactoring,
development
in pairs, rapid change, constant customer feedback and interaction,
constant integration, iterative development, constant testing, etc.; are
all key elements of the Smalltalk culture.
From this perspective, XP is the Smalltalk way generalized to other
environments. But mind you: you still need an Agile development
environment and even an agile language to be agile. (14 hr compile
times _do_ conflict with Agility ;-)
I recently had the opportunity to spend some time with Ward. He concurs,
XP was heavily influenced by the Smalltalk way.
Beyond 1986, or perhaps 1987, there were some key contributions
to XP:
1) Episodes
From 1986-1996, Kent and Ward develop a large set of
best practices that were succinctly captured in Ward's Episodes
pattern language.
This pattern language was published in:
Pattern Languages of Program Design 2, Vlissides, Coplien, Kerth,
Addison and Wesley, Reading MA, 1996 (Ch. 23).
2) Refactoring
Through that same period, 1989-1992, there were important development
in the areas of refactoring. Most importantly Bill Opdyke's dissertation:
William F. Opdyke, "Refactoring Object-Oriented Frameworks".
PhD Thesis, University of Illinois at Urbana-Champaign.
Also available as Technical Report UIUCDCS-R-92-1759,
Department of Computer Science,
University of Illinois at Urbana-Champaign.
which captured how people like Ward and Kent obtained, in practice,
huge productivity gains by doing refactoring.
Just a couple of years later, 1995-96 Kent published a book that was titled:
Smalltalk Best Practices Patterns
http://www.amazon.com/exec/obidos/ASIN/013476904X/
that also had many good technical contributions in this area.
And Martin Fowler and a few contributors captured most of these
combined practices in:
Refactoring: Improving the Design of Existing Code
by Martin Fowler, Kent Beck (Contributor),
John Brant (Contributor), William Opdyke, Don Roberts,
Addison and Wesley, Reading MA, 1999.
3) Test-first, or Test-Driven development
Test-driven development is also derived from the
refactoring practices. The first published article on the
concept was a
SmalltalkReport that
KentBeck wrote where he
introduced the
SmallUnit framework. From then, the next
discussion was probably the
JavaUnit Dr. Dobb's article
"Test infected".
4) Patterns
Also from the technical perspective, XPers have also been traditionally
heavy patterns users. This is another interesting story. Kent and Ward
started applying the concept of patterns to software since 1987:
http://c2.com/doc/oopsla87.html
In 1996, the C3 project at Chrysler Corporation, now Daimler-Chrysler
started, and this led to the integration of many of the practices
included in:
Smalltalk Way + Episodes + Refactoring
+ Contributions of by their practitioners
Also, sometime between 1996 and 1999, when
ExtremeProgrammingExplained,
was published by Kent, most of the
ScrumProcess practices were added
as part of the so-called planning game but with the constraint
that the Backlog added was application functionality, as opposed to
the more broad definition made in Scrum.
So by September of 1999, XP was mostly:
Smalltalk Way + Episodes + Refactoring + Scrum
+ Contributions of by their practitioners
The rest is history
ExtremeProgrammingTimeline, and it is in the making as we speak.
From this perspective, XP had its origins sometime in 1986, although,
of course it wasn't called XP.
I claim XP is the largest
PatternLanguage in wider use today in the
software world,
MikeBeedle