Xp Roots

(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

EditText of this page (last edited January 21, 2004) or FindPage with title or text search