# So what's the deal with extreme programming?

**URL:** <https://boards.straightdope.com/t/so-whats-the-deal-with-extreme-programming/307592>\
**Category:** Factual Questions\
**Created:** [June 9, 2005, 2:20pm UTC](https://boards.straightdope.com/t/so-whats-the-deal-with-extreme-programming/307592 "2005-06-09T14:20:08Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![Crowbar\_of\_Irony\_3](https://avatars.discourse-cdn.com/v4/letter/c/f08c70/32.png) [@Crowbar\_of\_Irony\_3](https://boards.straightdope.com/u/Crowbar_of_Irony_3)\
**Post date:** [June 9, 2005, 2:20pm UTC](https://boards.straightdope.com/t/so-whats-the-deal-with-extreme-programming/307592/1 "2005-06-09T14:20:08Z")

</div>

Whole books have been dedicated to the topic of _Extreme Programming_. I browsed through a few of them, leaving me rather puzzled. It is like reading a brochure on alternative healing, saying how I will be slim, fit and a success just by embracing my inner self or some Hidden Light.

I know the benefits - ability to put a prototype together quickly, not needing long period of planning, and etc, but I am still confused about the _methods_. There is something about pair programming, and from my knowledge that it works, but that’s can’t be all to Extreme Programming.

So, what is it, really? How does it work? Does it _really_ work?

Thanks in advance!

---

<div class="post-metadata">

**Author:** ![JohnM](https://avatars.discourse-cdn.com/v4/letter/j/848f3c/32.png) [@JohnM](https://boards.straightdope.com/u/JohnM)\
**Post date:** [June 9, 2005, 2:38pm UTC](https://boards.straightdope.com/t/so-whats-the-deal-with-extreme-programming/307592/2 "2005-06-09T14:38:47Z")

</div>

I haven’t done it myself, but one project group at my company went through this a few years ago. Whether because it was poorly implemented or the methodology is faulty, I can say that it didn’t work here. IMHO, in the end it’s just another flavor _du jour_ promising incredible results that don’t happen in reality.

---

<div class="post-metadata">

**Author:** ![micco](https://avatars.discourse-cdn.com/v4/letter/m/5f8ce5/32.png) [@micco](https://boards.straightdope.com/u/micco)\
**Post date:** [June 9, 2005, 3:49pm UTC](https://boards.straightdope.com/t/so-whats-the-deal-with-extreme-programming/307592/3 "2005-06-09T15:49:58Z")

</div>

Extreme Programming is a collection of strategies that cover everything from how a team is assembled to how code gets written. Under extreme programming methods, projects basically get designed on the fly with feedback from the “customer”. That is, someone who represents the needs of the end user of the software is a member of the team and may constantly change the requirements. Much of the design work is basically the old “compose at the keyboard” model done by paired programmers. Unit testing is built, usually with the “build the test first” mentality.

IMO, extreme programming is a great thing for some people and projects, and it’s pointless for others. It’s not a “better” way of doing things, just another method that may produce better results in some situations. Some coders are able to work in pairs; some aren’t. Some coders are able to design on the fly while coding; some aren’t. Some projects work best with flexible requirements and constant input from end users; some don’t. I think the only thing about extreme programming that you can say is absolutely right is the philosophy of test, test, test. I can’t think of a programming project that wouldn’t be better off with a built-in set of unit tests, most of us just don’t take the time to do it.

Also, try not to think of extreme programming as an all or nothing proposition. It’s really a collection of software design methods, and you can pick and choose the bits that work for you. A real extreme programming zealot might not let you use the buzzword if you don’t implement every link in the chain, but who cares. If the team building and design strategies work for you but you want more detailed high-level designs and individual coders, great. If you want to add unit tests but have them built by a separate QA team, great. Extreme programming isn’t just some half-baked “self-help” strategy that one guy came up with to sell books. It’s based on real-world programming experience and all the things included have their benefits, but you just have to choose which components work for you and which don’t.

---

<div class="post-metadata">

**Author:** ![Cagey\_Drifter](https://avatars.discourse-cdn.com/v4/letter/c/b2d939/32.png) [@Cagey\_Drifter](https://boards.straightdope.com/u/Cagey_Drifter)\
**Post date:** [June 9, 2005, 4:05pm UTC](https://boards.straightdope.com/t/so-whats-the-deal-with-extreme-programming/307592/4 "2005-06-09T16:05:14Z")

</div>

why does everything have to be “extreme” these days?

---

<div class="post-metadata">

**Author:** ![Stringer](https://avatars.discourse-cdn.com/v4/letter/s/eb8c5e/32.png) [@Stringer](https://boards.straightdope.com/u/Stringer)\
**Post date:** [June 9, 2005, 4:24pm UTC](https://boards.straightdope.com/t/so-whats-the-deal-with-extreme-programming/307592/5 "2005-06-09T16:24:44Z")

</div>

The most central goal of XP is to reduce the cost of change to the development cycle. Requirements changes? Incorrect assumptions? These are the potential problems XP aims to solve. XP seeks to identify these changes early and lower the cost of integrating them into your development cycle. Within other software process frameworks, a change to requirements could be a huge undertaking.

Pair programming, continuous integration, small releases, on-site customers and refactoring are probably the central “methods” of XP. The idea is to always be creating, changing, and improving until you have software that your customer is pleased with.

I’m less familiar with the formal testing and code review guidelines in XP so maybe someone can come along with more background and fill in the gaps.

---

<div class="post-metadata">

**Author:** ![audiobottle](https://avatars.discourse-cdn.com/v4/letter/a/bc8723/32.png) [@audiobottle](https://boards.straightdope.com/u/audiobottle)\
**Post date:** [June 9, 2005, 4:31pm UTC](https://boards.straightdope.com/t/so-whats-the-deal-with-extreme-programming/307592/6 "2005-06-09T16:31:17Z")

</div>

And here I was thinking it was akin to [extreme ironing](http://www.extremeironing.com/).

---

<div class="post-metadata">

**Author:** ![ultrafilter](https://avatars.discourse-cdn.com/v4/letter/u/3d9bf3/32.png) [@ultrafilter](https://boards.straightdope.com/u/ultrafilter)\
**Post date:** [June 9, 2005, 4:47pm UTC](https://boards.straightdope.com/t/so-whats-the-deal-with-extreme-programming/307592/7 "2005-06-09T16:47:03Z")

</div>

Wikipedia has a nice [overview](http://en.wikipedia.org/wiki/Extreme_programming).

---

<div class="post-metadata">

**Author:** ![ouryL](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/ouryl/32/6067_2.png) [@ouryL](https://boards.straightdope.com/u/ouryL)\
**Post date:** [June 9, 2005, 6:52pm UTC](https://boards.straightdope.com/t/so-whats-the-deal-with-extreme-programming/307592/8 "2005-06-09T18:52:55Z")

</div>

It mimics what the average intelligent slacker student does in his programming class, do his homework the day before class. 😃

Just kidding, sorta

The idea behind extreme programming is that programmers all program differently. It may be good practice to document your work as you do it but it’s slow and boring. The fun part is the programming itself. Some parts of the programming is boring in itself so one “steals” code with or without attribution. So a program designed to plot the placement of sprinkler heads on a lawn can be adapted to plot the placement of soldiers on the battlefield. Documentation is done last. :eek:

---

<div class="post-metadata">

**Author:** ![Stranger\_On\_A\_Train](https://avatars.discourse-cdn.com/v4/letter/s/13edae/32.png) [@Stranger\_On\_A\_Train](https://boards.straightdope.com/u/Stranger_On_A_Train)\
**Post date:** [June 9, 2005, 7:06pm UTC](https://boards.straightdope.com/t/so-whats-the-deal-with-extreme-programming/307592/9 "2005-06-09T19:06:36Z")

</div>

> [@Cagey Drifter](#):
>
> why does everything have to be “extreme” these days?

At lesat it’s not “XxXtreme Haxx07ing!!!”

Yet.

Stranger

---

<div class="post-metadata">

**Author:** ![Squink](https://avatars.discourse-cdn.com/v4/letter/s/b5e925/32.png) [@Squink](https://boards.straightdope.com/u/Squink)\
**Post date:** [June 9, 2005, 7:14pm UTC](https://boards.straightdope.com/t/so-whats-the-deal-with-extreme-programming/307592/10 "2005-06-09T19:14:03Z")

</div>

> [@Stranger On A Train](#):
>
> Yet.

I hear that groups of _Hardcore_ Extreme Programmer’s organize trips across the border  
to score Mexican **F** ile **A** llocation **T** able Burners.

---

<div class="post-metadata">

**Author:** ![Bytegeist](https://avatars.discourse-cdn.com/v4/letter/b/9dc877/32.png) [@Bytegeist](https://boards.straightdope.com/u/Bytegeist)\
**Post date:** [June 9, 2005, 8:22pm UTC](https://boards.straightdope.com/t/so-whats-the-deal-with-extreme-programming/307592/11 "2005-06-09T20:22:16Z")

</div>

> [@Cagey Drifter](#):
>
> why does everything have to be “extreme” these days?

[It makes the rice taste better.](http://www.mst3kinfo.com/ward_e/Bit815a.html)
