Extreme Programming

__Extreme programming__ (__XP__) is a software development methodology which is intended to improve software quality and responsiveness to changing customer requirements - wikipedia

> Extreme programming, or simply xp, collects complementary practices for developing useful software with a minimum of ceremony. > Ward Cunningham

As a type of agile software development, it advocates frequent "releases" in short development cycles, which is intended to improve productivity and introduce checkpoints at which new customer requirements can be adopted.

Planning and feedback loops in extreme programming - wikimedia

- See Practice Now for reflections arising from my current work in both open source and commercial development.

- See Ring of Truth for reviews of posts or papers that speak from experience that makes sense to me.

- See Strength in Numbers for free and open or otherwise cleverly organized programming communities.

Other elements of extreme programming include: programming Pair programming or doing extensive code review, unit testing of all code, avoiding programming of features until they are actually needed, a flat management structure, code simplicity and clarity, expecting changes in the customer's requirements as time passes and the problem is better understood, and frequent communication with the customer and among programmers.

History

At its inauguration xp offered a dozen or so practices that startled the programming community. Could it be so simple? Aren't those practices already discredited? Yes and yes. When they are applied consistently and with confidence they have been shown to work, work over time, and work to the strengths of everyone on a team.

The original practices included the advice to try new things, when they worked, do more, when they don't, do less. The humans and their computers thus become a complex adaptive system.

I am, with a few colleagues, the one that set this course in motion. I'm pleased with what has been discovered since but troubled that my now many colleagues have delegated the explaining to others that drag along a lot of complexity that distracts us from the essential act, programming.

Programming

A program instructs a future computer in a way that makes it more useful. If you encode such instructions you are programming. If you only guide others who are encoding such instructions, you aren't.

This site collects the discoveries of programmers. It is like a blog in that I write freely about things as they come to me. It is also like a wiki in that my words join others and are thus improved.

Computers are wonderful things. There are many ways to program them. I hope my observations are taken for what they are, the best of my experience creating value instructing them.

# Sections

# See also

Original discussion on Extreme Programming from C2.com.