Slashdot Mirror


Extreme Programming Refactored, Take 2

Sarusa writes "eXtreme Programming has been quite the lucrative phenomenon, with a slew of articles and a bookshelf full of 20+ books on the subject, rivaling even UML for fecundity. With all the hype, where's the opposing viewpoint? Well, it's not often as profitable to write a book on the downside of a hot trend, but Matt Stephens and Doug Rosenberg managed to find a publisher for Extreme Programming Refactored: The Case Against XP by Matt Stephens and Doug Rosenberg, henceforth referred to as XP Refactored because I'm eXtremely Lazy. This book is not intended entirely as a hit piece - as the title indicates, they do spend some time examining what works in XP and how it can be used sanely. (Please note that this book has been reviewed on Slashdot once before, but from a slightly different perspective.)" Read on for the rest of Sarusa's review. Extreme Programming Refactored: The Case Against XP author Matt Stephens and Doug Rosenberg pages 432 publisher APress rating 8 of 10 reviewer Sarusa ISBN 1590590961 summary A book you should definitely read along with 'Extreme Programming Explained'. Makes its points quite well, though a bit over the top in places.

Where I'm Coming From I've worked on several large projects (and innumerable small ones) as programmer and/or system designer. I thought long and hard about shelling out my $30 for this book (list price is $39.99, but you can find it for less online), and more importantly, scheduling the time to read it. I pride myself on being a software engineer, concerned with not just cranking out code, but overall system design. On the other hand, after being subjected to various overkill design methodologies, such as full-on UML, I'm wary of things that keep you so busy designing and reading books on the subject that you never get around to doing anything. One of the authors of this book (Rosenberg) is a big UML advocate and has written at least two books on the subject, so I was suspicious.

I want to like XP because I feel strongly about several of XP's source tenets -- such as frequent releases, not bloating the code right now with reusability that will never be needed, refactoring often, and unit testing. And of course it looks sort of 'open-sourcey.' Power to the programmers! I finally decided I had some time to spare, so I lined up Extreme Programming Explained by Kent Beck, Extreme Programming Installed by Ron Jeffries, and XP Refactored.

The Outline XP Refactored starts out by examining eXtreme Programming's basic methodologies and its central claim: In other methodologies, making changes to the project takes exponentially more resources the further along you are in the project. If you make a big change after two years of development, it costs a lot more than a big change after one month of design. XP's basic claim (even if they don't enunciate it this way very often) is to flatten the cost of change by keeping everything in a state of flux all the time. In their words, Embracing Change.

There are 12 canonical XP Practices, and a couple more which weren't part of XP originally but are now gospel, such as collocating -- the entire team needs to fit in one room, or some of the Practices break down. The book goes through the four values, the four activities; basically you get XP in a Nutshell right up front. And the authors do a good job of presenting these in the spirit intended, I think -- after reading this chapter you might feel that XP is a fine thing.

Then we start getting into the juicy bit you bought the book for. They start by examining the infamous C3 project at Chrysler. This was the poster-child XP project that launched XP to stardom and spawned a flood of magazine articles and 20 books on the subject. It was started in 1996 as a payroll system to replace the payroll system running on Chrysler's mainframes, because Chrysler was pretty sure that the Y2K bug would cause all their mainframes to keel over on Jan 1, 2000. Kent Beck was brought in, and he brought in the others. The project was canceled in Feb 2000, when it was apparent that it was still nowhere near done and the mainframes were still working after the drop-dead date.

This chapter really sets the tone for the book. First, we get the too-clever-for-my-taste Beatles filks (song parodies). We get a fairly concise summary of what happened along with references for you to study if you wish. We get lots of satire from the authors. We get copious quotes from XP gurus hanging themselves with their own rope -- and this proves to be one of the most powerful techniques in the book. You are given all the URLs you could ask for to further research the subject yourself, including the XP gurus' own takes on what happened. You will learn that to XP people, 'inexplicable termination' of a horribly late project that has failed in its very reason for existence can be Success. It is at this point that, if you love XP, you will probably fling the book against the wall and walk away. As gleeful as the XP camp was in trumpeting the early successes of the C3 project, the authors of XP Refactored are just as gleeful in dissecting the final outcome and the subsequent confused disarray in the XP camp -- such as TerminationCanBeSuccess.

The next chapter, 'The Case Against XP,' provides the manifesto for the book. It lays out the authors' case in a step-by-step overview. You won't be convinced of anything after reading this chapter, but it summarizes and provides references to later chapters.

'Extremo Culture' examines what kind of people are attracted to XP, how XP plays on the natural inclinations of most programmers who will be attracted by some of the good ideas and not-so-good ideas XP builds on, and the XP culture of fear. XP is obsessed with Fear and Courage -- you must have Courage to do XP, and if you oppose it, it's because you're Afraid of it. You need to be corrected or eliminated (off the team, nothing more violent than that). The only thing that causes project failure is Fear - either you were afraid of XP and weren't doing it right, or someone outside was Afraid of your XP project. I found this chapter quite fascinating, because I could see a lot of myself and the people I've worked with in it.

Having laid out the Practices, and The Case Against XP, the book takes on each of the practices in turn and gives it a thorough going over. This is the largest section of the book, as there are 12 (plus) Practices to cover in detail. The outcome of the analysis is generally negative, though not always -- the authors feel that XP's emphasis on unit tests is a good thing in general and should be expanded to other methodologies. They like frequent releases, just not quite so frequent. The Pair Programming chapter is perhaps the most gleeful, because it's arguably the worst idea in eXtreme Programming when taken to the eXtreme of no programming alone, ever, so there's plenty of fodder for wit and demolishment. But they also examine how Pair Programming is part of the Practices because it's required to compensate for other XP fragilities. This chapter is available as a sample chapter on the authors' website.

After examining the Practices, the book looks at the outcome of another XP research project: what would you expect to happen based on the previous chapters in the book, what did the study report show happened, and what can we learn from this? The predictions of the XP Refactored authors seem to be mostly borne out, and of course they say this proves XP is a bad idea. Though in the end, the study authors said, "But we liked XP anyhow." So you can draw your own conclusions on this one.

And finally, in perhaps the most practical chapter, they take XP and Refactor or 'defang' it. XP makes use of some good ideas, after all. The major failing is taking them all to extremes on the theory that if chocolate tastes good you should eat nothing but chocolate (You think that's silly? Beck reasons exactly this way.) This chapter suggests how to combine XP with real software engineering practices to hopefully achieve manageable, predictable results. Combine flexibility with actual design and risk control. Perhaps not surprisingly, this method resembles a lot what you'll often find small teams of skilled programmers doing on their own. And if you asked them what methodology they were using, they might even say eXtreme Programming, even though they aren't.

What Doesn't Work? Let's start with the bad. The song parodies are unrelenting and painful. If you like filking for the very idea of delicious subversion of media to your own ends, or you are the kind of person who loves any web comic that mentions Star Wars simply because it mentions Star Wars, you may think these are clever. At least they're easy to skip, but severely hamper the utility of handing this book to a manager and saying, "Please read this, it's important." The prose satire sequences and Monty Python skits are less painful, but again often too self-satisfied for their own good. But sometimes nothing makes your point like satire.

If you're a big XP fan coming in, you will almost certainly be turned off by the relentless skewering of XP. Then again, I don't think this book is aimed at you, nor is this review.

XP Refactored does an excellent job of providing all the ammunition you will need to convince anyone who might be thinking of foisting pure XP on you that it's a bad idea, even in manager terms. However, it doesn't provide an 'executive summary' chapter and it could definitely use one - simply because no manager is going to read through this entire book, much of which is in programmer-speak. Chapters 2, 3, 14 and 15 all almost fit the bill, but it needs one chapter with references you can just rip out and hand to your boss to read between holes of golf.

What Works?

Advocates of a position usually fear the other side, and will try to prevent you in some way or another from being subjected to the opposition's best arguments. On the contrary, the authors of XP Refactored seem to feel that the more you read about XP, in the words of Extremos themselves, the better their anti-XP case is made for them. Quotes are used relentlessly, and by the end of the book you will have the eXtreme suspicion that most of the XP authors are making everything up as they go along with no worries about consistency. Which, if you think about it, is pretty XP -- all the contradictory injunctions can be refactored later. Very often the authors' best case against XP is made by a prime quote from an advocate, with reference supplied so you can go verify that it's not out of context, of course.

Secondly, there are frequent Voice of Experience sidebars, which consist of feedback from people who have been involved in XP projects. The authors say they did not solicit these, but when word got out that they were doing the book they started getting submissions anyhow. They delayed the book and added 25 pages in order to fit the VoXP sections. That was very smart, because these notes from the field are quite visceral and provide powerful contrasts between XP in theory and XP in practice -- simply reading the authors' arguments would not be nearly as convincing. For example, the field stories of how XP coaches or managers tend not to do Pair Programming, even while they make everyone else do it, because they hate it too.

XP Refactored is not relentlessly anti-XP, though it sure may seem like it at first blush. The authors do a good job of presenting XP ideas in terms that are not unflattering before they dissect them. They do acknowledge that many XP practices are just good ideas that have been 'turned up to 11' on the theory that more is always better, and will point out the core of a good idea. For instance, rapid releases are a response to the problem of massive unwieldy design methods where everything is supposed to magically all come together at first delivery way down the road, and often doesn't. They also point out that most of XP is a pretty good mode in which to maintain already developed and mature software.

This book makes an important distinction between two levels of XP - the 'official' XP, which is what you'll get in the books (though that's often contradictory) and the 'Extremos' position, which is what you get when the authors argue amongst themselves on Usenet or Wiki and are less guarded and more honest. This is an important distinction as far as theory vs. practice. You'll glean from the various quotes and URLs, if you haven't read the XP books, that Kent Beck is a fairly intelligent guy and knows when it's smart not to go into too much detail on a delicate subject, and when it's time to move on to other causes like Test Directed Development. And then you've got people like Ron Jeffries and Robert Martin who should be thanking their personal gods every day that XP came along and gave people as horribly unqualified to manage or design software a bandwagon to hook onto.

I was a bit harsh earlier on the song parodies and satire sections, but in many cases humor is used quite well to expose the underlying weaknesses or contradictions in XP. That old British humour serves its purpose, and should be well received by the geek audience for the most part. Do you like User Friendly? You should love this.

Finally, the book does an excellent job of clarifying the cultlike nature of XP. How it appeals strongly to coders who think they're being oppressed by The Man and claims to empower them while reducing them to a commodity. Anyone who opposes the culture it is Afraid of you, and needs to be eliminated (non-violently) or ignored. If your XP project fails, it is because you weren't Really Doing XP - any deviation from XP is what lead to disaster. However they'll also tell you it's so flexible you can feel free to change it in any way to fit your way of working. Except you must always Pair Program. Except when you don't. Got that? You may think I am stupidly oversimplifying here, but no, quotes and references are provided. And I'd already gotten a lot of this just by reading two pro-XP books (XP Explained and XP Installed).

Key Points

If you are already pretty sure you want to read XP Refactored, you may want to just skip this section. These are key points I got from reading the book, and of course they're made in far more detail and more cogently in the book itself. This is where you'll find it's pretty clear that I ended up siding with XP Refactored, as well.

The most important argument XP Refactored makes, and uses as a basis through the rest of the book, is that XP is a highly fragile web of high-risk practices which are woven in a tight web to minimize the damage from the other bad practices. These are (mostly) worst-practices that coders engage in because, heck, the most fun part of programming is the coding. So XP attempts to compensate for them and turn them into virtues. For instance, the lack of written documentation is balanced by the code sharing and pair programming, which are supposed to make sure that everyone knows everything about the system. If any one of the practices is not followed religiously, the whole thing comes crashing down. This is referred to as the 'circle of snakes' and is an excellent distillation of what XP books continually hint at but don't tell you outright. XP Refactored goes through each Practice and shows how failing to stick to it causes everything else to collapse, domino-like.

The circle of snakes means that XP (and this is my own analogy, don't blame the authors) is a precariously controlled free-fall, which should get you to where you want to be faster than hiking if you can maintain control. But people don't stick to the practices 100%, because they're very high discipline, the circle unwinds, and the snakes are venomous. As usual in the book, this viewpoint is validated by plenty of quotes from the Extremos themselves, who will tell you that any XP project failed only because you deviated from XP. And XP is such a high discipline methodology that unless you are continuously coerced back onto the true path, you will deviate from it; this is also covered in the C3 chapter, where it happened to even the Poster Child XP team.

XP's indifference to design is pretty astounding to anyone who's gone through any reasonable sized project. The theory is that you don't add anything more than you need at the moment. YAGNI (You Ain't Gonna Need It). And to a certain extent this is a good idea - if you're writing a small memory pool system, there's no need to turn it into a full blown memory manager 'just in case'.

But to use an XP example from the book, if you're working on an program that will need to work with objects on several different systems (local disk, database, web, ftp) but right now you're only got the disk based story card (user stories being broken up into small tasks) you hard code everything in your program to go right to the disk. Even though you know that you will need web support, because the customer insists on it, you are not allowed to plan for that whatsoever by adding a layer of abstraction between your code and the abstracted 'object holder'. Rather, when someone needs to add web support, they will just code it right in, maybe at least out in a separate web class. It will have a slightly different interface than the disk class, since there's almost no design, no planning, and different people coding it. Then later on you will refactor the code and merge these three or four different systems, make them behave the same, and clean up the code.

This is incredibly expensive and error prone for something that could have been avoided with even a little thought up front. You can say that any decent programmer would of course realize this was what was needed to be done, and add the abstraction layer. But you are no longer practicing XP. You made it needlessly complex for the moment, and added a requirement that might be removed.

There is no need for any large scale design in XP because it will naturally 'emerge' from continuous refactoring. As Kent Beck says, "The larger the scale, the more you must rely on emergence." You can treat a 10,000,000 transaction per second system as if it were a 1 transaction per second system. You write the 1 tps system, then the 10,000,000 tps system will just be 'refactored' from the 1 tps system when necessary. You don't need to worry about degenerative interactions between different parts of the system. You don't even need to worry about any error handling or out of bounds cases because that's not simplest possible design, until the customer codes up acceptance tests that trigger these. If you've been on a real project you're probably gasping for air now.

These next few points are points you can bring up with your management if they decide to do XP since they read a neat article about it somewhere. I know arguments that appeal to management aren't necessarily going to be seen as a good thing by coders, but if you've had some project experience they should make you break out in a cold sweat too.

An incredible burden is shifted to the 'customer' in eXtreme Programming. The customer (representative), in the room at all times, is responsible for expressing all the requirements in the form of short use stories (which can be jotted down on a card) and in the form of code, as acceptance tests. The customer is now responsible for everything, and if anything doesn't work, it's the customer's fault for not making their tests stringent enough. Given the extremely low likelihood that anyone is going to dedicate a senior designer/programmer to work with the XP team indefinitely, this tends to fall on someone more 'expendable'. Who is still expected to do a massive amount of work and know how to code and take all the responsibility for the project while having no real authority over the XP team that's implementing it. It should come as no surprise that this is a high stress, high burnout position and that the XP people are trying to 'refactor' this requirement constantly. Now ask your manager who the 'customer' is going to be.

Excellent management ammunition also comes in XP's total inability to deliver your requirements on time - it's quite up front about this. This seems a little strange for something that claims to make your development more rapid, but one set of XP gurus will tell you that XP can deliver by a fixed date, but not a known set of deliverables, and another will tell you that XP can deliver any fixed set of deliverables, but not by a known date. Which works out to be equivalent. Other methodologies often deliver late, but XP doesn't even try, and this is because XP totally punts any real design or scheduling. You can't tell how much emergence or refactoring it's going to take. Let's hear it in their own words:

"One of the most important principles in planning for Extreme Programming is that the dates are hard dates, but scope will vary.'" -- Kent Beck and Martin Fowler.

"There is a difference between 'Schedule' and 'The Schedule'. In XP, 'Schedule' is very important, but 'The Schedule' doesn't exist per se. ... The reality, of course, is that a software project is never done until it has been terminated." -- Robert C Martin

"Once you accept that scope is variable then suddenly the project is no longer about getting 'done'. Rather it's about developing at a certain velocity. And once you establish a velocity then the schedule becomes the customer's problem." -- Robert C Martin

My favorite quote in the whole book also comes from Robert C. Martin:

"If you lose a card, and if the customer does not detect that loss, then the card wasn't very important. If, however, at an interaction planning meeting, the customer says: 'Hay [sic], where's that card about blah, blah, blah,' you'll find it easy to recreate."
Did you get that? It's okay to drop customer requirements in the trash, and unless the customer remembers to code up an acceptance test checking that requirement... the joke's on him! The customer can request you do some documentation, any documentation, monsignor please, only by writing up a story card - how often do you think those get lost? And lest you think this is just a moment of weakness, XP Refactored supplies other quotes from XP gurus encouraging you to dink with the user story cards as it suits you. Summary

XP Refactored largely succeeds in the task to which it set itself: countering the hype of XP, or at least defanging it and making it sane. It won't make any difference to the fanatic adherents and their book empire, but this is an excellent guidebook if anyone tries to foist XP on you, or if you'd been making sideways glances at XP, curiously attracted as it batted its eyes at you. You can tell they had fun writing it, so it's mostly a fun read.

It could sorely use an executive summary chapter consisting of only the most compelling points with references, and please, no humor. For giving an executive to read when you're threatened with XP since he read about it somewhere.

Now I know people are going to read this and indignantly retort that XP is based on some good ideas, and I fully agree. XP's starting assumption, as explicitly stated by Kent Beck, is that if a little of something is good then as much of it as possible is even better. I like chocolate, but I'm not going to eat to exclusion. I further know people are going to respond 'But XP doesn't require you to _x_!', where _x_ is something like lack of design, or not planning ahead. This again is part of the cultlike beauty - you can claim any conflicting interpretation of the Rules you want. The primary advocates often do - Robert Martin says You Must Pair Program, Ron Jeffries says it's an ideal only, except where he says it's absolutely required, but if you fail then it's because you deviated from pure XP. Is that a little breathless? Well, no wonder.

XP Refactored really clarified my uneasiness with XP after reading the two XP books - first it simultaneously devalues real software engineering by providing justifications for ditching it all and treating programmers as commodity items. Secondly the horribly risky practices, combined with the incredible hype, seems to be setting us up for a return to crushingly restrictive, mind numbing waterfall methodologies when it shatters in the field like the fragile flower it is. As already happened at Chrysler, where even Smalltalk and the concept of Object Oriented were tarnished by association with the C3 project.

If you find yourself drawn to XP, as I was, I suggest you read Extreme Programming Explained, by Kent Beck, then this book. Hopefully you can read these and come away with a good idea of what works in XP and what doesn't. Perhaps you might feel the urge to unit test a bit more. Or do rapid release with at least some sane amount of design. Frankly, I got a better feel for the actual strengths of XP from Refactored than I did from any of the pro-XP books, including Explained. Which is pretty good for a book whose stated purpose is to deflate XP.

You can purchase Extreme Programming Refactored: The Case Against XP from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.

277 comments

  1. Could someone refactor the review? by Anonymous Coward · · Score: 5, Funny

    It's extremely long.

    1. Re:Could someone refactor the review? by Anonymous Coward · · Score: 0

      Too long, eh? I guess Sarusa should've written the review in a higher-level language.

  2. definition: by skinny.net · · Score: 2, Funny

    I was going to read this whole thing, but there was too much fecundity.

    fecundity-The quality or power of producing abundantly; fruitfulness or fertility.

    1. Re:definition: by Anonymous Coward · · Score: 0

      Dude, the trolls don't need any help.

  3. Can someone just explain this in plain talk? by Anonymous Coward · · Score: 0

    exTreme Programming, refactoring, man when I read this, the only thing that comes to mind is reducing equations while downhill biking on a 60% grade hill.

    Someone please distill these ultra hyped buzzwords into something that doesn't sound like something from an ad agency selling sports drinks.

    1. Re:Can someone just explain this in plain talk? by Anonymous Coward · · Score: 1, Funny

      This book is for you if you want to integrate leading-edge technologies, recontextualize viral e-commerce, expedite synergistic communities and seize front-end ROI.

    2. Re:Can someone just explain this in plain talk? by yintercept · · Score: 1

      Basically, the book provides fuel for your cause if one of your political enemies is in an extreme programming group.

      You have to envision the management team as a group of pointy haired men who are being pushed forward and backward by their desires and fears. The hype of XP triggers the desire instinct. Cynicism triggers fear. You need to trigger desire or fear depending on your objective. If you do it right, money falls out of the company's pocket.

      As for success of IT projects goes, I realized that the most difficult obstacles to overcome are political. Every project has supporters and detractors. Surrounding every project is a hum of buzz words as the political players line up to claim the success or declare defeat.

      Back to the book. In order to acheive a political objective, a pointy haired boss must look at the world from a higher meta level. XP, UML and other design philosophies are all paradigms. The pointy haired boss shifts the paradigm according to need. They do this by dropping the right buzz word or casting a disparagement. Paradigm shifting is largely a political task, and politics is divorced from reality. In reality, a large number of IT programs will fail. They will fail for a variety of reasons. Often it is market timing. Some projects were over designed, some were a bad idea. Sometimes the programmer weren't up to the challenge.

      Success and failure are not predictible. The politicos in the company need a language that can help them navigate the fallout of disasters while taking claim for successes. That means there is big need for books that provide different examples of arguments to help in the blame laying and success claiming climb up that long shiny silver corporate ladder.

  4. XP in a nutshell by donbrock · · Score: 0

    Extreme Programming = more than one person working on the same program.

    1. Re:XP in a nutshell by Anonymous Coward · · Score: 0

      Extreme Programming = more than one person working on the same program.

      Great for OSS developers because their time is free but computers aren't.

    2. Re:XP in a nutshell by ciroknight · · Score: 1

      Whoa... wait... does this mean that more than one programmer actually wrote Windows XP?

      I'm SHOCKED!!!!

      --
      "Victory means exit strategy, and it's important for the President to explain to us what the exit strategy is." G.W.Bush
    3. Re:XP in a nutshell by curtoid · · Score: 1

      I remember doing this back in '94. We had one good computer (a mac) and attached two keyboards with mice to it and programmed side-by-side on it. Weird.

    4. Re:XP in a nutshell by Neil+Blender · · Score: 5, Funny

      Did your code look like this:

      int int mamainin (voidvoid) {{

      pprintrintff(("%.3ff", "3"vavall;);

      retreturn 0;urn 0;

      }}

    5. Re:XP in a nutshell by tjmsquared · · Score: 1

      Collective ownership of code is part of XP, but hardly describes it "in a nutschell". I'd say that a better description of XP in a nutshell would be "Test driven iterative development".

    6. Re:XP in a nutshell by Anonymous Coward · · Score: 1, Funny

      Dude, nobody owns code. It wants to be free, man. Information wants to be free!! And I'm not out of order! You're out of order! The whole freaking system is out of order! You want the truth? You want the truth! You can't handle the truth! 'Cause when you reach over and put your hand into a pile of goo that used to be your best friend's face, you'll know what to do! Forget it, tjmsquared - it's Chinatown.

    7. Re:XP in a nutshell by Tablizer · · Score: 1

      [Two keyboards for one computer] Did your code look like this: int int mamainin voidvoid) {{ pprintrintff((...

      I suppose I should keep my Siamese twins jokes to myself.

    8. Re:XP in a nutshell by Anonymous Coward · · Score: 0

      That's a good description, but not perfect. An even better description of XP in a nutshell would be "Ouch, ouch, ouch, oh fuck, ohmigod make it stop, holy shit it's eating my spleen. Please kill me! Shoot me in the face, set me on fire, I don't care, just make it STOP!"

    9. Re:XP in a nutshell by achacha · · Score: 1

      Obviously you are not a programmer... One person would have done a way better job, but MS uses tons of resources, most of whom are clueless and thus you have the monstrocity they call Windows XP and in no way related to XP in this thread.

  5. buzzword phenomena by stonebeat.org · · Score: 4, Insightful

    I think extreme programming has been always there in form or another (just like evil). It is just the buzzord (i.e. XtremePrograming) that is creating all the hype.

    1. Re:buzzword phenomena by _Sharp'r_ · · Score: 2, Insightful


      Yeah, lazy (which isn't always a bad thing, some kinds of laziness are good for efficiency) programmers who fly by the seat of their pants trying not to get too close to the sun (ok, a couple cliches and puns there...) have always existed, but now they get to call themselves XtremeProgramming specialists on their resume.

      The resume they'll need badly once they manage to almost fully implement XP...

      --
      The party of stupid and the party of evil get together and do something both stupid and evil, then call it bipartisan.
    2. Re:buzzword phenomena by bay43270 · · Score: 1

      That's like saying cars existed 200 years ago simply because all the basic technologies in a car existed. Just because you worked side by side with someone on a program doesn't mean you were doing XP.

    3. Re:buzzword phenomena by Anonymous Coward · · Score: 0

      I think your missing the point. "car" in this context is a buzzword, in reality it just the most popular and marginally efficient means of transportation. Its alot easier to say Car. or Wagon. Or Boat. It all depends on the time frame.

      XtremeProgramming is just a term for efficiently programming.. supposedly.. IANAP

    4. Re:buzzword phenomena by Anonymous Coward · · Score: 0

      you are quite right. if you examine any of the concepts of the extreme programming you will realize that you do practise those things urself when you develop maybe you call it something else.

    5. Re:buzzword phenomena by bay43270 · · Score: 1

      XP is not just a term for efficently programming. Its a process with very well defined steps. Skip one and your no longer doing XP.

    6. Re:buzzword phenomena by Anonymous Coward · · Score: 0

      I think "Extreme Programming" should henceforth be known as "The Sport Of Jackasses".

    7. Re:buzzword phenomena by jrb3pasadena · · Score: 1

      Yes, indeed. Elsewhere, Kent Beck describes that the basic ideas behind XP were drawn from what he learned from his father (an assembly-language programmer) about making maintainable software.

      --
      ---- Joseph Beckenbach lead XP tester, Eidogen Inc.
  6. Parent is plagiarised. Mod down. by Anonymous Coward · · Score: 5, Informative

    The parent was copied from here. Mod it down for plagiarism.

    1. Re:Parent is plagiarised. Mod down. by Anonymous Coward · · Score: 0

      Actually subsribers are allowed to see the story before it is posted, giving them enough time to formulate a well thought out response even before the article is published.

      So. Actually not obvious in that sense.

    2. Re:Parent is plagiarised. Mod down. by Uber+Banker · · Score: 1

      Not insightful but +5 informative.

    3. Re:Parent is plagiarised. Mod down. by Anonymous Coward · · Score: 0

      >>It should have been pretty obvious to mods
      >
      >yes, it *should* have been, but it was not.

      That's what meta-moderation is for. Luckily for me I meta-moderated today and guess which post came up! Say bye-bye to one of those bad up-mods. No instant karma for you...

    4. Re:Parent is plagiarised. Mod down. by Chuck+Bucket · · Score: 0, Offtopic

      I found this book to be much more interesting than the parent poster. It reveals far more about XP's refactoring than I knew about. Also, yep, the end ranking never matters, it's how long it's in the four to five range that counts; that's when you get replies and such. it's silly, but fun to do at work.

      so don't just go by one review.

      CB

    5. Re:Parent is plagiarised. Mod down. by Anonymous Coward · · Score: 0
      The front page says:

      Have you Meta Moderated recently? Regular Meta Moderators are more likely to get mod points

      That's why I routinely metamod all negative moderation as "unfair". I should be swimming in mod points for that!!!

  7. Dang by AviLazar · · Score: 5, Funny

    Who needs to buy the book, i read the whole thing in the article :)

    -A

    --

    I mod down so you can mod up. Your welcome.
    1. Re:Dang by Anonymous Coward · · Score: 5, Funny

      Who needs to buy the book, i read the whole thing in the article :)

      No, I think the article is a little longer.

    2. Re:Dang by Bronster · · Score: 1

      Who needs to buy the book, i read the whole thing in the article :)

      No, you just read the executive summary. Off to the golf course with you.

  8. eXtreme! by thebra · · Score: 3, Funny

    The word "eXtreme" makes me feel like I'm doing some thing atheletic.

    1. Re:eXtreme! by strictnein · · Score: 0, Offtopic

      does that scare you?

      The outside is nice... and warm.. high of 65 today!

  9. My experience with XP by Anonymous Coward · · Score: 5, Funny

    I was involved in several programming projects which used XP. The problem is that the IT industry is filled with overweight dorks with hygiene problems and who lack social skills. So every time I was paired with another programmer, I was subjected to his body odors, immature comments (constant Microsoft bashing, etc.), and the constant crunch of Doritos. It drove me up the fucking wall. I am now a welder and I couldn't be happier. Mod this down if you want, but this is the honest-to-God truth.

    1. Re:My experience with XP by serano · · Score: 5, Funny

      Congratulations on your move to a profession known for its maturity and exemplary hygene.

    2. Re:My experience with XP by kin_korn_karn · · Score: 1, Funny

      hey, jennifer beales doesn't smell bad

    3. Re:My experience with XP by yerfatma · · Score: 4, Funny

      On the plus side, you could spearhead eXtreme welding. Unless those fit, sweaty men get distracting too. Or you have a disagreement about a weld that ends badly.

    4. Re:My experience with XP by Anonymous Coward · · Score: 0

      You're on to something, AC. Every company has some sloppy suckers. Fat-ass retards that think cut-n-pasting a several-hundred line function a bunch of times to change one freaking constant on one line of the function is productive, that think the more lines the better, that spend half their day on instant messenger and then get burned by something you changed a month ago that you specifically told them about, wrote a detailed CVS log entry, and commented both in the code and in the documentation. I'm not making this up or exaggerating.

      XP makes you work close enough to these people that instead of just getting pissed off and then depressed you actually have to do something about it (have them transfered to another team or fired). Pair programming, lack of blueprints, shared code ownership, testing -- everything is designed to spotlight these bottom feeders that suck the life out of any project.

    5. Re:My experience with XP by Anonymous Coward · · Score: 0

      On the plus side, you could spearhead eXtreme welding. Unless those fit, sweaty men get distracting too.

      Hate to disappoint you, but construction workers are rarely fit. Sweaty, unshaven, yes. Fit, no.

    6. Re:My experience with XP by scratchor · · Score: 1

      xp != pair programming

      --
      -- debian linux - vim powered
  10. wait, what? by happyfrogcow · · Score: 4, Interesting

    Kent Beck was brought in, and he brought in the others. The project was canceled in Feb 2000, when it was apparent that it was still nowhere near done and the mainframes were still working after the drop-dead date.

    So you're telling me that the basis of extreme programming is a failed and cancelled project? live and learn i guess.

    1. Re:wait, what? by Pathetic+Coward · · Score: 2, Insightful

      Well, not exactly a "failure". It appears to have been a project that was never necessary in the first place. Once management saw that nothing happened on January 1, 2000, they started wondering exactly what they had been spending all their money on - especially when they still didn't have a working system that would have solved the alleged "problem". It's a wonder that it took them as long as a month to cut their losses and stop the ongoing waste.

    2. Re:wait, what? by Anonymous Coward · · Score: 0

      Bear in mind this project had a hard completion date which *could not be missed*. And they missed it... that is a failure by any standards apart from those applied to XP.

      Projects generally fail by delivering too little, too late. XP is the abdication of design or planning, a guaranteed way to deliver late and/or incomplete software. XP is all about blame shifting whilst maintaining the pretence of continuous frantic effort.

      Its a programmers solution to a management problem - the correct solution is to hire a good manager.

    3. Re:wait, what? by Choc+Ice · · Score: 1

      But also bear in mind that code had already been delivered to the customer, and parts of the system were already in use when the project was cancelled, and parts are still in use, and are successful.

      They may not have created a whole new payroll system, but they successfully broke it down into constituant parts and delivered real working code to the customer of a high standard. Other methodologies may have failed at doing this, others may have succeeded - but who's to say?

    4. Re:wait, what? by BlackHawk-666 · · Score: 3, Funny

      Wow, it looks like all my previous projects are successes after all! Thank you XP for teaching me that success is whatever you want it to be and need not be measured by the hard taskmaster of goal completion.

      --
      All those moments will be lost in time, like tears in rain.
    5. Re:wait, what? by jrb3pasadena · · Score: 1

      Yes, that's what he's telling you. At least, that's what the authors of the book are telling folks. I do not know how correct that statement is, however, since my impression is that C3 was killed for political reasons unconnected with the project's progress. My impression of the authors, on other materials they have published, is not favorable either. The basis of Extreme Programming, however, is reliably delivering software of value to your team's customer.

      --
      ---- Joseph Beckenbach lead XP tester, Eidogen Inc.
  11. NO silver bullet! by IO+ERROR · · Score: 4, Informative

    Sorry folks, but there is NO one right methodology that you can just take out of the box and apply to any project, small or large. And the relative importance of such things as design, unit testing, documentation etc., do vary. Of course coders don't like anything other than coding, but that doesn't make the other stuff any less necessary. The project requirements might, though.

    --
    How am I supposed to fit a pithy, relevant quote into 120 characters?
    1. Re:NO silver bullet! by truthsearch · · Score: 1

      I would just like to add there's not always only one right methodology for a project, either. Sometimes 2 or 3 methods might work equally well.

    2. Re:NO silver bullet! by NSash · · Score: 1

      No, there IS one correct methodology: the meta-methodology that allows you to select the best methodology for a given situation.

    3. Re:NO silver bullet! by ctr2sprt · · Score: 1
      Of course coders don't like anything other than coding, but that doesn't make the other stuff any less necessary.
      What are you talking about? I love writing documentation. It's like an outline or rough draft. I write out how I want my code to work and what it's supposed to do, which usually really helps me clarify in my own mind what I need to work on. Analytical writing skills also translate quite well to code analysis, so if you think about your project from that perspective you'll usually find some important stuff to think about. And finally, it gives me (or anyone else who reads it) the "big picture" since as coders we sometimes lose sight of the forest for all the stupid termite-filled trees we work with every day. It lets you focus on high-level ideas, which is where the real fun is - most programming is repetitive and dull.

      (I know, programmers suck at documentation. But this is documentation written for other programmers, so it doesn't matter how technical it gets.)

    4. Re:NO silver bullet! by BrianMarshall · · Score: 1
      I love to program and I love to design databases. The part I like the best is designing the high-level set of classes/entities. My talent is in abstraction - deciding what to make into an object/entity and defining the fundamental relationships.

      I want to get a good feel for what is required in a general way and then design classes/entities that will support what is required. I try to build the simplest set of classes/entities that will do what the user is generally asking for. If this is done well, whatever the user needs at the detail level will be easy to implement in the classes/entities.

      So...

      • get a general idea of what is required plus a detailed idea of what the initial version of the system should do
      • develop classes/entities that will handle (or can be easily extended to handle) anything the user might reasonably ask for
      • build the minimal initial system (which should be clean and sound) and hopefully get user buy-in to take the development further

      But the most important step is deciding which classes/entities are going to be initially built and which are going to be allowed-for (not built but would be simple to add).

      I like the idea of moderately frequent releases. But the most important thing is for a good person (or a good small team) to do a good job at initially laying out the fundamental architecture - expressed as a well documented set of classes or entities.

      --
      "When the going gets weird, the weird turn pro" -- HST
    5. Re:NO silver bullet! by shiftless · · Score: 1

      Actually, there is.

    6. Re:NO silver bullet! by Anonymous Coward · · Score: 0

      I believe there is a single best methodology for programming... and when I work it out exactly, I'll write a program to do it for me!

    7. Re:NO silver bullet! by void* · · Score: 1

      Well, there's only one correct meta-methodology - the meta-meta-methadology that allows you to select the best meta-methadology for selecting the best methodology for a given situation ..

      --


      Code or be coded.
    8. Re:NO silver bullet! by alex_tibbles · · Score: 1

      Part of the point of XP is to accept this, but to try to invent a discipline that it is likely that the coders will stick to. 'Heavyweight' disciplines don't get followed because they are contrary to the instincts of the programmers. XP aims to be followed by the programmers (and therefore the project gets some of the benefits) because it's what the programmers want to do: code, and code well, and code under sane conditions. (Not, eg. "you need to implement this feature by Tuesday").
      The biggest thing that I took away from reading eXtreme Programming Explained was that, like all human interaction, especially in business, specifation is a negotiation.

      I want this.
      That will take 2 years.
      That's too long.
      I can do that in 2 months.
      Hmm. That's not quite what I want. But I'm willing to pay for more than 2 months. How about adding something to that?
      6 months.
      Good.

      And it's a continuous process - 2 months in you can re-negotiate, always trying to find the best trade-off between cost and return.

      I thought that the reviewers feelings came out rather strongly towards the end (dislike of XP). Reading XPE made me think about risk a lot. The point of XP is better risk-management. So a lot of the reviewer's points were overstated, to say the least.

  12. XP, Windows XP by lightknight · · Score: 3, Funny

    The two have a lot in common. They both look nice from a distance, but once you start using them, inexplicable thoughts of violence race through your mind...

    Having said that, Windows has come a long way from the 9x series.

    --
    I am John Hurt.
    1. Re:XP, Windows XP by osu-neko · · Score: 1
      Having said that, Windows has come a long way from the 9x series.

      Yes, a great distance has been covered, but was the incline mostly up or down?

      --
      "Convictions are more dangerous enemies of truth than lies."
    2. Re:XP, Windows XP by BiggsTheCat · · Score: 1

      You felt the Windows XP bloodlust too? Interesting... At one point whilst using Windows XP I had the sudden urge to hurl my monitor across the room and stomp on the PC tower. But then I switched back to the plain gray look, and felt better. What's up with that?

      --

      Time is an illusion. Lunchtime doubly so. --Ford Prefect

    3. Re:XP, Windows XP by cynicalmoose · · Score: 1

      Especially the bit about dropping customer feedback cards.

      Oh yes, and for acceptance tests, read somebody releasing a virus that clogs up the net for a couple of weeks.

      --
      Exercise your right not to vote. thinkoutside.org
  13. Customer responsibility by sphealey · · Score: 4, Interesting
    An incredible burden is shifted to the 'customer' in eXtreme Programming. The customer (representative), in the room at all times, is responsible for expressing all the requirements in the form of short use stories (which can be jotted down on a card) and in the form of code, as acceptance tests. The customer is now responsible for everything, and if anything doesn't work, it's the customer's fault for not making their tests stringent enough.
    Well, that's pretty much how all other professional disciplines work (except architecture, which tends to have the same problems as software development for some strange reason). If you give a set of specs for a bridge to a civil enginering design/build firm, and those specs don't call for the bridge deck to actually meet in the middle, you have no one to blame except yourself when the completed bridge doesn't bridge anything (unless you were smart enough to write a "professional responsibility" clause into the contract).

    But for some reason, business units think they can toss some poorly written requirements at a software team, "dedicate" a junior supervisor or even a junior secretary (seen it happen) at less than 25% of full time as the project representative, and expect to get a usable product back. Of course, when they don't it is the "techies" fault for having "poor communication skills".

    So while I am not a big fan of the total XP package, this one is actually right on the money. If the customer can't do the acceptance test, who can?

    sPh

    1. Re:Customer responsibility by Angst+Badger · · Score: 5, Insightful

      So while I am not a big fan of the total XP package, this one is actually right on the money. If the customer can't do the acceptance test, who can?

      To a large extent, as a developer, I can, and do. Sure, the customer's approval is itself the final acceptance test, but the customer is not going to appreciate missing and mis-features because they weren't explicitly spelled out. AFAIC, it's the developer's responsibility to figure out what the customer actually wants, by active questioning and other methods, because only the developer knows enough about software development to fully appreciate the engineering issues, and pragmatically, a doofus customer is going to be a doofus customer whether you play passive-aggressive head games with him or not.

      All of this buck-passing misses the point in two ways. First of all, it's everyone's responsibility to serve the needs of the organization to the best of their ability -- be it a company, a university, a government agency, or an open source project. Sure, there will be people who won't, both in management and in development, but the impact of slackers isn't ameliorated by retaliating with more slacking. And secondly, from a purely self-interested cover-your-ass point of view, when a project fails, the hammer will fall on you before it falls on your idiot manager, if ever.

      Anyone who thinks this is going to change is probably also wondering why they no longer get recess and nap time. Dealing with incompetent and clueless coworkers, poor organization, and unreasonable expectations is just part of life. You can either deal with it constructively as best you can -- which might or might not mean seeking another job -- or you can turn it into an adversarial and ultimately self-destructive situation.

      --
      Proud member of the Weirdo-American community.
    2. Re:Customer responsibility by arkanes · · Score: 3, Insightful

      This is a perfect example of what the reviewer was talking about, which is taking a good idea and turning it upo to 11. You're totally correct that it's unreasonable for the customer to not support the developlment, and they have to take responsibility. Everyone who's ever worked in that sort of development knows the kind of mental anguish that last second or conflicting requirements causes. However, totally pushing that reponsability to the customer isn't correct behaviour either. There's ground in the middle that needs to be met. That, by the way, is how other professional industries work - the people you're contracting with are supposed to bring expertise to the table that you don't have (thats why you hired them, after all).

    3. Re:Customer responsibility by Anonymous Coward · · Score: 0

      >If you give a set of specs for a bridge to a civil enginering design/build firm, and those specs don't call for the bridge deck to actually meet in the middle, you have no one to blame except yourself when the completed bridge doesn't bridge anything

      Yes but... you aren't expected to be a civil engineer yourself. Whereas a full acceptance test suite supposes that the customer has a fair number of skilled programmers on hand. The problem isn't
      expecting customers to provide a spec. it's expecting them to write large amounts of code. If they were happy to do that themselves why would they be customers?

    4. Re:Customer responsibility by chromatic · · Score: 1

      Perhaps a better approach is to talk to the customer (whoever that is; usually a representative of who needs the software or who's paying for the software) regularly, balancing what the customer really wants with when and how the developers can produce it.

      (Disclaimer: I wrote a book about that.)

    5. Re:Customer responsibility by lscoughlin · · Score: 1

      Yes, but you are no longer practicing XP -- Thus, your project will, infact, fail -- because you were not following The Rules.

      Wheee

      --
      Old truckers never die, they just get a new peterbilt
    6. Re:Customer responsibility by jc42 · · Score: 4, Interesting

      If the customer can't do the acceptance test, who can?

      I've found myself on the developer side of this on numerous projects. The other side was either the QA people or actual customers. What I've done that works pretty well is: I code up tests for everything I can think of. I stick them in a directory called "test", and run everything there (in alphabetical order ;-) as a regression test after a change seems to be working.

      When the QA or customer rep makes the usual complaints about how complex and poorly defined their job is, I introduce them to my test suite. They are usually overjoyed that I've done their job for them. Then I tell them that I don't think I've done their job. My test suite is almost certainly incomplete. I give them a list of the things that I have tests for, and tell them to go off and think about it. I expect them to make suggestions for new tests.

      Their suggestions are sometimes good. Other times they are vague and unprogrammable. So I try to get them to clarify. And so on. It's somewhat random, but usually a lot of useful ideas come out of it.

      Eventually they have not just a "product", but a set of validation tests that show what it can do. And the contents of the test directory constitute a HOWTO for their own programmers stuck with the task of using the stuff.

      The one major problem with this is that it's difficult to program tests for features that require user interaction. Simulating a human is not easy. If that human is hidden behind a WIMP interface, it's nearly impossible, no matter what people will tell you when they don't have to do it themselves.

      --
      Those who do study history are doomed to stand helplessly by while everyone else repeats it.
    7. Re:Customer responsibility by dubl-u · · Score: 1
      If the customer can't do the acceptance test, who can?
      To a large extent, as a developer, I can, and do.

      You can, but you won't do as good a job as a professional product manager will. Most good product managers could also sit down and pound out a little code, but that doesn't mean they should.

      And even if you could, you shouldn't. On an XP team, the product managers get to say what to build, but developers get to say how long it takes. This is a delicate balance of power. Allowing one person to make both business and technical decisions is akin to letting the military choose their own budget.

      AFAIC, it's the developer's responsibility to figure out what the customer actually wants, by active questioning and other methods, because only the developer knows enough about software development to fully appreciate the engineering issues[...]

      True! I work on an XP project, and I help them with stuff like this every day. XP says that the product manager has the power to decide, but everybody should give (and gracefully receive) advice.

      and pragmatically, a doofus customer is going to be a doofus customer whether you play passive-aggressive head games with him or not.

      No methodology can save you from a doofus customer. But even that case I'd take XP, as weekly iterations help doofuses and their managers see just how dumb they are. (And sometimes, they help arrogant developers see that the customer's aren't so stupid after all.)

      But "passive-aggressive head games" is wide of the mark. Next time you're in San Francisco, drop me a line and you can come by and see a good XP shop in action.
    8. Re:Customer responsibility by dubl-u · · Score: 1

      However, totally pushing that reponsability to the customer isn't correct behaviour either. There's ground in the middle that needs to be met. That, by the way, is how other professional industries work - the people you're contracting with are supposed to bring expertise to the table that you don't have (thats why you hired them, after all).

      Giving the customer (aka product manager) complete power to decide what gets built does not mean that developers stop advising. It just means that the customer gets the final say.

    9. Re:Customer responsibility by Anonymous Coward · · Score: 0

      You know, its nice to blame poorly written requirements, but the fact of the matter is that programmers are like reporters. They write about stuff that they know nothing about, and it shows.

      A customer can write requirements until his hand falls off, but without commonsense experience, a programmer will invariably find a way to get it wrong. They are like compilers that way.

    10. Re:Customer responsibility by Antos700 · · Score: 1

      "Well, that's pretty much how all other professional disciplines work (except architecture, which tends to have the same problems as software development for some strange reason)."

      Not so strange, both suffer from the same problem, the client changing the intentions or functionality. In fact, given there is usually a lot more emotional buy in for things like houses, so I'd actually imagine it would be even worse.

  14. Extreme Programming Debunk by Anonymous Coward · · Score: 0

    Extreme Programming is 1 step Up or Down, depnding on your view, from adhoc programming.

  15. most tired buzzword ever... by handsome+devil · · Score: 3, Funny


    i have actually read up on the subject and do agree with some of the tenets of XP. however, i just can't bring myself to use the term "extreme" in regards to programming.

    To me, it conjures up visions of fluorescent spandex, hang-gliding, and the superfluous use of the prefix "bungy."

  16. Re:I have this book... by dracocat · · Score: 1

    It is always amazing to me how great the divide is between XP advocates and XP Cynics. The desparity between your post and the review is amazing, and in fact I get a similar separation of extreme opinions when reading any message board, articles, or even books for that matter.

    What is it that is keeping programmers from reaching a consensus on this. Was Object Oriented design as controversial as XP is?

  17. Stupid X acronyms.. by CharAznable · · Score: 4, Funny

    Is there anything more pointy-haired? eXtreme Programming.. eXtensible Markup Language.. Every time I see an X in an acronym my Buzzword warning goes off, unless it is something like Xylophonic Postamble or Xenophobic Mutant Litigation

    --
    The perfect sig is a lot like silence, only louder
    1. Re:Stupid X acronyms.. by dom1234 · · Score: 2, Interesting

      In Quebec, and probably in many other places in the world, it's quite popular to sell products that are X-treme (note the flashy absence of the first e, and the emphasis on the letter X). We see ads of X-treme shoes, X-treme sport accessories, etc.

      A radio station in Quebec city, named "Radio X", popular mostly to people aged 16-25, even invented a new concept named "the X attitude". They always ask people "have you got the X attitude ?" and the worst is everyone answers the french equilalent of something like "YEEEAH man I do !!", but no one has ever defined what this means. This is as much ridiculous as it is a PURE buzzword... meaning simply nothing !

      What is it about the X letter ? It's just a letter !

    2. Re:Stupid X acronyms.. by CharAznable · · Score: 2, Funny

      I suppose that when Generation Y starts to age a bit and get more purchasing power, we will have ExtrYm ProgrammYng Yntegrated Development Environment Windows YP (and Office YP) Mac OS Y and it will be very cool to write compilers using Yacc.

      --
      The perfect sig is a lot like silence, only louder
    3. Re:Stupid X acronyms.. by nicophonica · · Score: 1

      The letter x has at least 3 things that make it seXy. 1) It is a relatively rare letter, especially at the beginning of words. This gives it a specialness. 2) Its primary use is to transliterate Greek words into English. Since Greek words and morphemes are borowed heavily in science and technology (and to a lesser extent religious) terminology, 'X' has been conspicuously associated with words and ideas in these fields. 3) It is the most famous of variable names and therefore is associated with mathamatics and abstract reasoning.

    4. Re:Stupid X acronyms.. by osu-neko · · Score: 1
      Every time I see an X in an acronym my Buzzword warning goes off

      U R ! 133t.

      I, for one, welcome our new beowulf cluster of insensitive clods to Soviet Russia!

      Sorry, I take that back. ;)

      --
      "Convictions are more dangerous enemies of truth than lies."
    5. Re:Stupid X acronyms.. by PedanticSpellingTrol · · Score: 1

      In Soviet Russia, beowulf cluster of insensitive clods welcomes YOU!

    6. Re:Stupid X acronyms.. by pmjordan · · Score: 1

      I heard they're going to make a mobile version of the XBox: the YBoy.

    7. Re:Stupid X acronyms.. by Anonymous Coward · · Score: 0

      Can you tell us how that goes in French - or rather in Quebecquoi (?)... Must be hilarious...

      Thanks

  18. my personal take.......... by MisanthropicProgram · · Score: 2, Funny
    When I was eXtreme programming, the two of us just sat there and talked about chicks! One of us coded and the other talked about about the chicks we wanted to fuck. That's it in a nutshell. Sorry! We never looked over the other's [sic] shoulder when we were programming.

    yeah, yeah, check my spelling!

    1. Re:my personal take.......... by Kenja · · Score: 4, Insightful
      "When I was eXtreme programming, the two of us just sat there and talked about chicks! One of us coded and the other talked about about the chicks we wanted to fuck. That's it in a nutshell. Sorry! We never looked over the other's [sic] shoulder when we were programming."

      So in other words, you where not extreme programming. You where just wasting time and CALLING it extreme programming. This is like saying that driving a car to work dosn't work becuase you just sat in your driveway drinking beer.

      --

      "Have you ever thought about just turning off the TV, sitting down with your kids, and hitting them?"
    2. Re:my personal take.......... by Frizzle+Fry · · Score: 4, Insightful

      But I think the point is that this always happens. No one who tries to follow XP is able to fully follow its tenets, and then their failure is blamed on not following XP, just like you're doing.

      --
      I'd rather be lucky than good.
    3. Re:my personal take.......... by fastdecade · · Score: 1

      the two of us just sat there and talked about chicks!

      Bzzzzt. "the two of us"???? Yes you program in pairs, but under XP, you're also supposed to exercise collective ownership. That means rotating frequently, so everyone pairs with everyone else. Ideas in the code spread that way.

      Now, if there were only two of you on the project, and both of you couldn't be bothered programming, then no methodology's going to fix that.

      It *has* been said that two cowboys sitting next to each other will still be more productive than apart, because they will still be able to pick up all the problems that only one of them would have spotted. Not to mention being able to talk to each other might actually teach them something, other than about which chicks they dig.

    4. Re:my personal take.......... by ClosedSource · · Score: 1

      That's like saying you aren't using traditional programming because you didn't get all the requirements written down correctly before coding began.

      The question of how easy or difficult it is to get people to follow the rules of a methodology is a legimate measure of that methodology's effectiveness.

      Pair programming itself is based on the idea that an individual programmer can be a bit lazy and thus not double-check their work. Well, when you pair to lazy people together there's no guarentee that they will be more diligent together then they were apart.

    5. Re:my personal take.......... by MechaStreisand · · Score: 1
      The question of how easy or difficult it is to get people to follow the rules of a methodology is a legimate measure of that methodology's effectiveness.
      Not if the people involved are complete fucktards. Sitting there, talking about chicks, not caring that you're paid to sit on your ass and doing nothing productive... Fire these assholes. If you're going to test a methodology by seeing how easy or hard its rules are to follow, then at least test it on people who take their job seriously.
      --
      Disclaimer: IANAL. This post is, however, legal advice, and creates an attorney-client relationship.
    6. Re:my personal take.......... by cpu_fusion · · Score: 1
      This is like saying that driving a car to work dosn't work becuase you just sat in your driveway drinking beer.

      Take a car, put two programmers in it, load it up with cases of an intoxicating beverage of their choice. Then tell them to drive to work. What happens?

      Such is pair programming.

      My take on the grandparent post was simply pointing out that when you put two people side by side and tell them to share one keyboard to program, you're probably going to get a lot of chatter and crap that you wouldn't necessarily get if they were out of speaking distance with each other.

      It's just basic social behavior. I'd be more worried if two people pair-programming did NOT end up distracted a lot of the time; they must be zombies.

      I can create a methodology that has as a rule that programmers must not waste time reading Slashdot, and then I'll insist, as you have, that when they break that rule they didn't follow my methodology to the letter and that's why the project failed/was-terminated/was-late/is-a-mess.

      I'll call it the "NO SlasHdot In Teams" methodology; it just needs a catchy acronym like XP... hmm...

    7. Re:my personal take.......... by Anonymous Coward · · Score: 0

      And good luck finding them. Grow up and get your head out of your ass, you might find 10 hours a day of grinding boredom fun, but most of us have a life.

    8. Re:my personal take.......... by Downside · · Score: 1
      So if I offer a smoking cure, I can take the credit where people give up, and simply dismiss those that don't (they obviously didn't follow the system)?

  19. I would like to see a study. by BoomerSooner · · Score: 4, Interesting

    Take a problem, and two teams of similarly formed people, give them the same project, and see what happens. You make one team go XP and one go traditional.

    I bet traditional would do better in this test because you'd need defined docuements to code. Now if you took those same two teams and gave them my boss (feature creep, no dev schedule, sells a feature before it's developed, etc), the XP team would live and the traditional programmers would be bald from pulling their hair out.

    In development I've found you just go with the flow and try to keep your sanity.

    1. Re:I would like to see a study. by Frizzle+Fry · · Score: 1

      I don't think this would be too helpful. The question in my mind is mainly how feasible XP is for large, long-term projects, since that's where lack of documentation, etc., will really bite you in the ass. Unless this study is going to employ two teams of programmers full time for a few years, it won't accurately be ableto show that.

      --
      I'd rather be lucky than good.
    2. Re:I would like to see a study. by Uber+Banker · · Score: 1

      Take a problem, and two teams of similarly formed people, give them the same project, and see what happens.

      To be statistically significant you'd need to do this several times over with several pairs of programmers. Your programmers would have to be a representative sample of programmers in your hypothesis, and the problem (or better several problems) would have to be representative of real life problems.

      Slashdot is proof that a reasonable opinion can be instantly improved upon!

    3. Re:I would like to see a study. by geekoid · · Score: 1

      so XP is better in the real world.

      --
      The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
    4. Re:I would like to see a study. by osu-neko · · Score: 1
      In development I've found you just go with the flow and try to keep your sanity.

      Screw that. Go insane. Apparently I'm insane. But I'm one of the happy kinds. ;)

      --
      "Convictions are more dangerous enemies of truth than lies."
    5. Re:I would like to see a study. by AndrewHowe · · Score: 1

      Right, but there's no fundamental barrier to such a study, and I'm sure one could come up with a significant result.
      I'm a bit disappointed by much of the pessimism in this area. It seems as if people have been infected by the "No Silver Bullet" meme such that they think incremental improvements in methodology are worthless.

    6. Re:I would like to see a study. by EsbenMoseHansen · · Score: 1
      [...] large, long-term projects, since that's where lack of documentation, etc., will really bite you in the ass [..]

      I have been programing for a few years by now. Never have "documentation" figured largely in those projects. And the documentation that does get written is never actually read in my experience, except by the few who could easily do without.

      Of course, that was in a non-XP environment, and thus doesn't really count. My methology says: write the documentation in the code. The rest will be obsolete by the time anyone wants to read it. In any case, people will complain that the documentation was missing. (Whether the documentation was actually written and announced is immaterial).

      I am, however, a great fan of documented procedures. Those save a lot of pain.

      --
      Religion is regarded by the common people as true, by the wise as false, and by rulers as useful.
    7. Re:I would like to see a study. by Uber+Banker · · Score: 1

      Incremenal improvements can be just as statistically significant as revolutionary developments.

    8. Re:I would like to see a study. by AndrewHowe · · Score: 1

      I agree. I don't think I said otherwise?

    9. Re:I would like to see a study. by dgatwood · · Score: 1
      It needs to be five years or longer, and it needs to factor in a 5% headcount turnover per year. That's where lack of documentation bites you in the backside.

      Ever take a look at a huge jumbled mass of almost completely undocumented code that had no governing design principles? Now imagine that's your first day on the job.

      Better make that a 15% turnover.... :-)

      --

      Check out my sci-fi/humor trilogy at PatriotsBooks.

    10. Re:I would like to see a study. by Frizzle+Fry · · Score: 1
      Ever take a look at a huge jumbled mass of almost completely undocumented code that had no governing design principles? Now imagine that's your first day on the job.

      Not sure if that question was directed at me, but yes I have. And yes, it was at a new job (I may not have litterally seen any code on my first day). Change that 15% turnover to 100% as everyone who had written the program had been hired en masse to another company (to write a suspiciously similar program; these were internal tools for the respective companys, not commercial products).

      And the code had no documentation, either externally or as comments. And the program was all in perl (it was a "web application" to be used within the company). And the coding style was lousy (compounded by the fact that I was still fairly new to perl, although I still think using something like "(a==b) && a=3;" rather than an if statement is unnecessary, even if the language would make you use curly braces on your if). And we didn't have any form of source control set up, so frequently two people would have the same file open for edit and would clobber each other's changes. Actually, I guess we did have source control in the form of "hey, is anyone using this file?".

      In its own way, this kind of programming was pretty "eXtreme".
      --
      I'd rather be lucky than good.
    11. Re:I would like to see a study. by Trillan · · Score: 1

      Now if you took those same two teams and gave them my boss (feature creep, no dev schedule, sells a feature before it's developed, etc), the XP team would live and the traditional programmers would be bald from pulling their hair out.

      They'd live, but I bet they'd end up unemployed before the project was finished.

    12. Re:I would like to see a study. by Etcetera · · Score: 1


      And the coding style was lousy (compounded by the fact that I was still fairly new to perl, although I still think using something like "(a==b) && a=3;" rather than an if statement is unnecessary...

      Someone wasn't writing idiomatically (or came from a shell-scripting background). The generally-accepted most Perl-ish way of doing that is:

      $a=3 if $a == $b;

      No curlies for one-liners when if/unless/while/for/foreach is used in a postfix manner like this.

    13. Re:I would like to see a study. by Frizzle+Fry · · Score: 1

      There are some who would say that you should only be using the postfix form if you want to draw attention to the 'then' part of the statement, as in "die 'errormsg' if something-bad-happens;". Personally, I don't think it should be used just to avoid using curly braces (although I'm the kind of person who always uses braces in C as well). Your point is still a good one though, and what you're suggesting is certainly miles ahead of abusing shortcircuit evaluation.

      --
      I'd rather be lucky than good.
  20. Why not "EP" instead of "XP"? by MooseByte · · Score: 4, Interesting


    Why can't the Extreme Programming crowd just call it Extreme Programming (or even 'EP') and not 'XP'?

    Otherwise even ignoring the obvious confusion with WinXP, it makes it seem like the concept is being marketed by some lame-ass over-hyped sports drink company.

    "It's programming... Xtreeeeeeeeeem!"

    Here's one for them:

    "Extreme Programming - It's slightly better... TO THE MAX!"

    1. Re:Why not "EP" instead of "XP"? by geekoid · · Score: 1

      Well, eXtreme Programming was out before XP, so maybe MS should change the name to Cross Point.

      That said, I hate when they Capitaloze the wrong letter and then use it for an intial.
      It is so stooopid.

      --
      The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
    2. Re:Why not "EP" instead of "XP"? by fm6 · · Score: 1

      But they don't care what Language Nazis think?

    3. Re:Why not "EP" instead of "XP"? by dubl-u · · Score: 1

      Why can't the Extreme Programming crowd just call it Extreme Programming (or even 'EP') and not 'XP'?

      I used to hate this myself. But honestly, how many of the other agile development methods can you name? The reason that everybody heard about XP is that it has a polarizing name.

      So now when I explain it to clients, I say that I consult on agile development methods. I may never even mention XP, but I usually end up introducing a lot of the practices. "XP? You're soaking in it!"

    4. Re:Why not "EP" instead of "XP"? by Dahamma · · Score: 1

      I think I'm going to skip "Extreme Programming Refactored" and wait for the sequels:

      "Extreme Programming: Reloaded"
      and
      "Extreme Programming: Revolutions"

  21. Huh? by No.+24601 · · Score: 0
    It was used to develop XP?

    Nuff said!

  22. What will the 2nd edition be titled? by Chromodromic · · Score: 3, Funny

    "Extreme Programming Refactored Refactored"?

    3rd Edition: "Extreme Programming Refactored Refactored Extremely Refactored"?

    --
    Chr0m0Dr0m!C
    1. Re:What will the 2nd edition be titled? by rsborg · · Score: 1
      Extreme Programming Refactored Refactored

      I think the third one will be:

      • Extreme Programming Revolutions
      As in when the programmers revolt and stage a cyber-coup.

      Seriously, I did some test-led development, and that really helped out in defining issues early on... not sure if pair-programming or use-stories would work (we extensively use UML use cases at the requirements stage).

      --
      Make sure everyone's vote counts: Verified Voting
    2. Re:What will the 2nd edition be titled? by Piquan · · Score: 1
      Makes me think of the Scheme standard.

      The first, in '75, was the Report on the Algorithmic Language Scheme. Then the Revised Report on Scheme. Then RRRS, the Revised Revised Report..., and so on. We're now on the Revised^5 Report on the Algorithmic Language Scheme, usually written R5RS.

  23. Rational Unified Process by dustinbarbour · · Score: 1, Flamebait

    IMHO, the best overall programming methodology. Again, just an opinion.

    1. Re:Rational Unified Process by Mr.+Piddle · · Score: 2, Informative


      Yes, finally we have a process, where the training program has been officially accredited and takes 2.5 years to complete. The resulting Ph.D. is very highly valued in industry, and many people exiting the program get hired on in the best bureaucracies around! The best part is that no programming is necessary at all!

      --
      Vote in November. You won't regret it.
    2. Re:Rational Unified Process by janbjurstrom · · Score: 4, Informative

      Robert C (Uncle Bob) Martin and others (even the RUP people - nowadays part of IBM, Rational - themselves) have argued that XP can be seen as a (lightweight) subset of RUP.

      Martin wrote about XP vs RUP in 1998 (gg PDF-as-HTML). Martin calls/~ed it "dX" ("dX: A minimal RUP process"). Gary Pollice, former Rational 'Evangelist', have also explored RUP and XP common ground (gg PDF-as-HTML). Google for more.

      --
      668.5
    3. Re:Rational Unified Process by Follow+the+White+Rab · · Score: 1

      You are right, RUP is overdone and too complicated and in the end a little meaningless (though you do get that nice Ph.D. certificate to hang on the wall of your cubicle). But I'm a little surprised that I have read any comments on MDA. It is a RUP-like process (you can even use Rational Rose), but it is not necessarily as complicated as RUP. You can do a core MDA training in less than a week. Not to mention, MDA projects scale much better than XP projects. Furthermore, proper MDA does take into account many of the XP concepts just not so XTREME.

    4. Re:Rational Unified Process by sploxx · · Score: 1

      > [...] calls/~ed it "dX" ("dX: A minimal RUP process").

      And we all know that dX is only an infinitesimal step in a space coordinate (i.e. forward).
      No wonder why no projects get done with XP ;)

  24. Coming soon... by slycer9 · · Score: 1

    on MTV.

    eXtreme Programming, followed by...the Osbournes.

    Seriously tho'...what had me scratching my head about this the most was the fact that they actually used the word 'fecundity' in a /. article.

    *walks away shaking head*

    --
    Don't park drunk, accidents cause people.
  25. There's only one thing I can think of saying by Anonymous Coward · · Score: 0

    Too many notes.

  26. XP by Thanatopsis · · Score: 5, Interesting

    Our former CTO was in love with XP. Why? Because it freed him from responsibility from things like designing with scalability in mind. XP works best in an institional setting where individuals are duplicating (or refactoring) an existing application or single purpose applications (say in a Fortune 1000 company). I would never use it for a new software product.

    We retained a couple aspects of XP (namely unit tests) but chucked many aspects of the methodology. Velocity was one of those concepts used by our CTO to explain why he didn't have to work more than 4 hours per day. Our board of directors got pretty tired of that after a while.

    He no longer works here.

    1. Re:XP by GoofyBoy · · Score: 4, Funny

      >Velocity was one of those concepts used by our CTO to explain why he didn't have to work more than 4 hours per day.
      >He no longer works here.

      No, he just got so good at it he doesn't have to work more than 0 hours per day.

      Proof by example.

      --
      The surprise isn't how often we make bad choices; the surprise is how seldom they defeat us.
    2. Re:XP by gkAndy · · Score: 1

      Funnily enough, we are in exactly that situation you have described. We have an existing application, which we are re-implementing with a new architecture and in a different language. Our project sponsor is an XP evangelist, and has been making us use XP throughout.

      So far, I have found pair programming takes the 'fun' out of it for me, making me irritable, bored, and frustrated. Test-first is marvellous, and I really like that bit. The XP lack-of-design stuff is really what's killing us though, as we do not know what is required of us - simply 'duplicate what is there already' is not feasilbe when the requirements are unknown - duplicate which bits? When? How? What exactly do they do?? And so on.

      --


      --
      Andy
    3. Re:XP by Anonymous Coward · · Score: 0
      XP works best in an institional setting where individuals are duplicating (or refactoring) an existing application or single purpose applications (say in a Fortune 1000 company).
      I found that it worked well at a startup where the business plan changed almost daily. Since the design was constantly changing and consisted essentially of user stories from the CEO, it seemed like a good fit. The customer was our own marketing department, so having a rep on the premises was no problem. Pair programming sucks, and we used code reviews instead.

      But we did try to design things carefully whenever possible, and I have to say that this aspect of XP is the most irritating. I find that good interface design is not really any harder/slower than bad, so why not Just Do It? Now that we have a business plan that seems to work, we are trying to extricate ourselves from the unplanned/XP origins, I am glad that we have a few solid places to stand.
    4. Re:XP by Thanatopsis · · Score: 1

      Well there goes that use of XP. Given that most legacy applications are poorly documented, it makes sense that you would have a difficult time of it. So really the only important part of XP is acceptance tests.

    5. Re:XP by adamy · · Score: 1

      What you are describing here is the Customer problem described above. The answer to you questions should be , "This story" or this portion of the design. If no one is writing stories, then no one will know what to do. Unless you have some huge design document....

      --
      Open Source Identity Management: FreeIPA.org
    6. Re:XP by dubl-u · · Score: 2, Insightful

      Our former CTO was in love with XP. [...]Velocity was one of those concepts used by our CTO to explain why he didn't have to work more than 4 hours per day.

      People who like to spew bullshit will use whatever the hot topic is. That's not the fault of the hot topic.

      Because it freed him from responsibility from things like designing with scalability in mind.

      The way to do this in XP is to write "1000 people use the system simulateously" on a story card and then let the product manager decide when to pay for that.

      When it comes up, it's just like any other story card. The product manager and the developers get together and make the acceptance tests, and then the developers do the thing until the tests pass.

      If developers are scared that they don't know how to design for scalability, then they can ask the product manager to put that card in early on.

      I would never use it for a new software product.

      Which is, of course, your choice. But I've used it successfully for three new products. I think that's the best time to use it; getting an existing code base up to XP quality standards can be a long slog.

  27. General Principle by ReciprocityProject · · Score: 3, Insightful

    In any field, you have a set of "best practices" that describe how best to go about solving problems in that field. Intelligent people don't argue so much about these best practices, or at least don't fight over them zealously, because each principle is either obviously flawed, obviously correct to the best of our knowledge, or obviously has some measure of merit. An intelligent, honest, and experienced person can consistently separate each practice into one of those categories.

    The fact that XP needs to make up a new word, "eXtreme Programming", complete with a capitalization error as though written by some half-d00d half-suit hybrid, and the fact that XP has to package a bunch of practices into one should tell you, before you have examined the practices, that the people behind it aren't interested in an intelligent, full and honest understanding of the best practices for computer programming.

    My humble proposal is that we ignore these people.

    1. Re:General Principle by dubl-u · · Score: 1

      Intelligent people don't argue so much about these best practices, or at least don't fight over them zealously,

      Actually, the best practices in our field change much more quickly than in others, so there is indeed a lot of room for reasonable people to differ. But even if there were, as you suggest, one set of obviously best practice, the problem is that practically nobody does them.

      Say what you will about XP, but it has created a lot of buzz around testing, something that was a "best practice" in my dad's day, and even now most of the people I interview don't have any experience with. The ones I see who do unit testing regularly have all been influenced by XP.

      the people behind it aren't interested in an intelligent, full and honest understanding of the best practices for computer programming

      Having met some of them, I'd say you're wrong. But they did see exactly how much dust the books on best practices were gathering, and decided to do something different. Given that it keeps coming up here on Slashdot, clearly they did something right.

  28. Was that the whole book? And.. by Gr8Apes · · Score: 1

    Wow was that ever long-winded.

    IMO, Some of the facets of Extreme Programming are great, but only as applied to organized process oriented programming. I strongly support working towards acceptance tests, however, I also strongly support up front design, so you know what you're supposed to code to. (The acceptance tests test the results, the design is the target). As for two people working together, only if one is a mentor, otherwise it's usually a major waste of resources.

    --
    The cesspool just got a check and balance.
    1. Re:Was that the whole book? And.. by Anonymous Coward · · Score: 0
      Wow was that ever long-winded.
      IMO, Some of the facets of Extreme Programming are great, but ... [paragraph on XP]

      I'll take the reviewer's "long-winded" review over your one paragraph opinion any day!

  29. Frankly speaking by Anonymous Coward · · Score: 0

    The people that can program well will continue to program well. The people that need 'methodologies' and other tricks to detract from the fact that they write half ass code will continue to rely on anything that elludes to giving the impression that they can write anything other then half ass code.

    If someone can program, they can program. they don't need any 'methodology'. If they can't program, they need to get out of the business. We don't need you. Go get into real estate or something. It's not our fault you wasted all that time trying to become a programmer. Get a grip on reality and give it up. It's that simple.

    It's not hard to tell who these people are. Usually, they are the religous zealots who will argue methods til they are blue in the face. the minute you don't immediateley understand some minute detail above their obviously flawed 'methodology' they deam you stupid.

    They say things like "you don't even understand what such and such is. how do you know it's failed?" well, that's about the weakest argument ever and I despise people that use it. I might as well go argue with muslim extremeists.

    Anyways, extreme programming sucks, and I don't need to read a 15+ chapter book to know that. The paired programming concept, while not a new approach, is beneficial in only some circumstances. An actual circumstance is when some dork head programmer decided to use some object oriented derivitive 'methodology' and wrote 5000 line of code that only two well focused software engineers with a huge whiteboard could figure out after the dork head programmer got shit-canned.

  30. Reasons for XP by telbij · · Score: 4, Insightful

    The more I program, the more perfectionistic I get. When I was younger I would just start coding willy nilly because I didn't know what to avoid. I would just write and debug until something worked for me in the obvious cases. Nowadays I find myself thinking and thinking about every possible tangential issue I have ever encountered in an effort to avoid any possible future mistakes. Sure I write way better code, but it also takes me a lot longer.

    I think XP is partially inspired by a desire to recapture that youthful productivity (ignorant though it may be). Sometimes overthinking a problem can become paralyzing, and it actually is more efficient just to code it the first way that comes to mind then fix it later. So even though I have no real interest in XP per se, I definitely see the justification for a lot of the concepts.

    1. Re:Reasons for XP by robslimo · · Score: 5, Insightful

      I've seen the same progression in my 18 or so years of coding experience, but to this

      Sure I write way better code, but it also takes me a lot longer.

      my experience disagrees. In my earlier career, I'd often blast out something that showed good signs of progress but had to have major redesign/recoding before the product could fulfill the requirements. I think my overall productivity is now much improved through forethought and consideration of design (though obviously some of the improvements come from the brute force of experience).

      I think XP is partially inspired by a desire to recapture that youthful productivity

      You may have something there. My disipline is the result of years at the 'school of hard knocks' and when you're busy getting 'hard knocks' you're not being used as efficiently right now as you could be. Some students never graduate from that school, so I think all coders can benefit from a structured methodology, the lesser experienced most of all. I just feel uncomfortable with what I see as an overzealous streak in this burdensome system (XP).

    2. Re:Reasons for XP by chromatic · · Score: 3, Insightful

      I think it's rather that overdesigning and overgeneralizing (or in XP terms, writing code you don't need) is a waste of developer time and customer money better spent solving the customer's most important problem. Increasing programmer joy of programming is a nice side benefit.

    3. Re:Reasons for XP by robslimo · · Score: 1

      I contend that if you've planned your design reasonably well, you will know what is necessary and what's not. Furthermore, after weighing the costs and potential benefits, you can successfully decide what 'overgeneralization', if any, is acceptable or desirable and limit the costs to something not too painful.

      And sometimes you can go fishing... I'm working on a project right now (er, when I'm not posting on /.) where we're using an instrument that provides a canned measurement that meets the customer's requirements. We saw a way we could integrate that device deeply into our system and, with high speed data acquisition and signal analysis, we could squeeze data out of it that no one has utilized to date. We did this and wrote enough code to demonstrate the possibilities to our customer (real paying customer, not an XP 'customer'). We showed them our preliminary system today and they were impressed. If they can budget to expand this aspect of the project, they will do it.

      That is an example of good use of planning and design. Know what you're willing to lose for a potential gain. I'm not a design nazi, but I firmly believe in having a very good plan and at least a skeleton design before you start coding more than the lightest demo.

    4. Re:Reasons for XP by Anonymous Coward · · Score: 0

      "or in XP terms, writing code you don't need"

      You mean like writing unit tests for code you know isn't complete and may completely change?

    5. Re:Reasons for XP by Freedom+Bug · · Score: 1

      and then, a few years later, you'll realize that over engineering is often just as bad as under engineering and you'll find the happy medium.

    6. Re:Reasons for XP by jc42 · · Score: 2, Insightful

      This reminds me of a comment that I read some years ago about programmer productivity. Whoever it was (I've forgotten) remarked that older programmers usually take just as long to build something as novice programmers. The difference was that the experienced programmers produced much better software, that handled more than the obvious cases and didn't crash when handed bizarre input.

      Part of this was the observation that if you could walk through a company's software development areas, you could quickly get a good idea of the quality of their software without talking to anyone. Just look at the ages of the programmers. Lots of young people meant software that didn't run well in your (bizarre, unusual) situation. Lots of older programmers meant software that ran well, though it might not be up to current commercial glitz standards. Best was a wide range of ages, so their attitudes and experience could rub off on each other.

      Myself, I was a bit skeptical. I've generally found that age itself doesn't mean that much. There are plenty of 20-year-old fuddy-duddies, and there are plenty of radical, innovative 65-year-olds. But it was something to think about.

      --
      Those who do study history are doomed to stand helplessly by while everyone else repeats it.
    7. Re:Reasons for XP by chromatic · · Score: 1

      Laying aside the question of why I'd be writing code that's not complete (what does that even mean?), I'm very much not interested in writing code that I can't prove actually meets my customer's needs.

      With that in mind, I cannot see how proving that my code works by writing and running automated tests is a waste. Even further, if I do need to change the code later, because I have automated tests, I can anchor both ends of any refactoring with those tests.

      Now it's reasonable to talk about writing good tests and not wasting time on bad tests, but that's a different argument altogether.

    8. Re:Reasons for XP by mr_luc · · Score: 2, Interesting

      Ironically, I find what you're saying is true.

      I'm only 20 years old, but I'm a very fast learner, and I am very conscientious about the quality of my code. Moreover, since I work on a very small team, I end up contributing to every single step in the process, from db/schema design to semi-advanced SQL coding (nested sets for hierarchies instead of recursion-based methods, for example) to object model planning and data/business/presentation separation planning -- and, of course, every phase of the actual programming, core business objects out to GUI code, in a variety of languages.

      And at every step, I have done my best to continue learning, to continue bettering my understanding of what is and is not good code, of the underlying principles of programming and their application -- I've learned the Mathematica programming language and Lisp/Scheme and the whole functional programming paradigm in general, which was my most recent mindjob. In fact, I learned object-oriented programming when I was 15, at a very capable little technical college, and over time have come to realize that it is a poor fit for certain types of problems. I make extensive use of MIT's Open Courseware program (http://ocw.mit.edu/), and actually went so far as to back up the contents of their CS offerings on my hard drive.

      Meanwhile, not everyone on our small team is as passionate about programming, or even as motivated to learn -- some members of the team did not choose programming as a profession, and I regularly get yelled at for using words like "abstraction". Or "object-oriented" -- one team member, senior to me, had never heard of OOP, had no idea what it was. Or even "object".

      Still -- I never want to be a manager. I never want to be a team lead. I just want to program, ideally for more money and eventually part-time, making enough money to support a family I hope to have. That's my goal for my whole life; I have more important things to do than chase position my whole life. So I can work under any conditions that let me code.

      My code is of increasingly higher quality, and as the team is small I have a lot of "stuff" to get done. I have a lot of features I have to implement, and one of the benefits of this small team is that everyone on the team knows the requirements of the system better than the customer; each of us understands their business better than any of them do. So we are all charged with covering a lot of ground, we have a structure in place that lets us work relatively independently on the areas we have to work on -- and I am finally able to produce high-quality code in a new environment, making no concessions to a horribly flawed preexisting framework.

      And I am paying the same price you mention!

      The other coders, the ones that don't even care about programming, the ones who are coding because it's a job and they'd rather be doing pure design work -- they code without regard to good practice, apparently with blinders on! I recently started on a new section, and in 4 days I had a beautiful object model, beautifully abstracted.

      The project requires that I work under .NET, which I had a couple of weeks to train myself on -- no sleep! -- and I am pushing it to its limits. Each and every object contains a representation of its schema and can be populated from XML (in fact, I can populate the entire object hierarchy with a single XML string) -- this is implemented cleanly, and without relying on the (slow) XML serialization methods that most people normally associate with .NET. I can populate the entire object hierarchy in a single pass through a single XML string, fully or partially or at any level; the xml is ultra-simple and objects can publish their schema for runtime use/discovery if necessary. All of the objects provide implementations for ALL of the .NET binding interfaces, so I have "Presentation" abstraction that allows for rapid GUI development; I have extremely clean data abstraction through xml and some helper c

    9. Re:Reasons for XP by Anonymous Coward · · Score: 0

      How do you do an ASCII "flipping-the-bird"?

      You paste a really long rant to slashdot that doesn't say anything more than "I am a 20 year old programmer".

      Yeah, I know, you're among the best, and no-one else on your team can code for shit, because YOU love it, and they just want to feed their families. Damn them and their "get the work done" attitude.

    10. Re:Reasons for XP by JimStoner · · Score: 0

      ...which I feel is the Middle Way in Buddhism. (For anyone who may not know or be able to work it out, Middle Way is simply to take a path between 2 extremes).

    11. Re:Reasons for XP by mr_luc · · Score: 1

      AC posts rule.

      Everyone needs to eat. And I sympathize with the pressures and responsibilities that a family must bring with it.

      But I'm just trying to do a good job, and not even asking for outspoken appreciation by any means -- and I'm getting shit like this AC post -- in fact, remarkably like this AC post -- telling me that, in effect, anything I do that other people on the team don't appreciate, understand or approve of is entirely wasted effort. I work long hours, so I've been switched to a flat '40 hours per week' on my timecard, essentially salaried -- for $18k a year before taxes. My actual hourly wage is somewhere around $6.80 before taxes. I work weekends and on my spare time to learn.

      I'm gonna go out on a limb and say that even OFFSHORE FUCKING OUTOURCING can't provide a better value than me. And all I ask in return is that I be ALLOWED to code, ALLOWED to write good code that won't break down on me tomorrow -- for shit on the scale we're working, that means you had better damned well be applying abstraction, OOP etc. Or else be a functional structures genius like the guys behind Orbitz . . .

      Anyone want to explain to this AC why, for instance, OOP and abstraction are more than useless concepts and buzzwords that get in the way of 'real work'?

    12. Re:Reasons for XP by Anonymous Coward · · Score: 0

      Don't put words in my mouth, kid. I never said OOP was a waste of time.

      The fact is, every 20 year old programmer thinks exactly the same way you do. They're the hottest shit since sliced bagels, and no-one else on their team can hold a candle to their abilities, despite the fact that your four days of work didn't produce anything of use, while the other guys (while they may have been less structurally pure) have been getting the work done that they were paid for.

    13. Re:Reasons for XP by smallfries · · Score: 1

      I think that this is a process that turns full circle after you've been doing it for long enough. (I'm mentally slapping myself at this point for thinking of myself of an 'old man' of programming at the age of 25!) When you start doing it you throw things together because getting it to work at all is such a challenge. Then as time goes on you start to learn the things that bit you on the ass before and you slowly start becoming more and more perfectionist to try and avoid having to go through them again.

      Finally, you realise that you're actually spending more time trying to avoid the problems than it would take to fix them, then you return to a process of throwing it together smartly; some bits are worth doing right once, others are worth just doing because you're going to change it later. The exact balance between the two just comes down to experience.

      I think that quite a few of the passages in the 'Tao of Programming' explain this better. And its worth a read if you haven't before because it is very funny.

      --
      Slashdot: where don knuth is an idiot because he cant grasp the awesome power of php
    14. Re:Reasons for XP by robj · · Score: 1

      Dude, I'm 34, and I can relate. We are having a hell of a time right now finding young sharp kids who stay on top of the state of the art and who want to write good stuff in the right way. (Are you in the San Francisco area? Want a better job?)

      We are using agile (not XP -- lightweight but with hopefully just the right amount of planning) techniques here at work, and we are staying current with technology. Hibernate, Junit, continuous integration, green builds, Checkstyle, story-based planning. But also actual story plan documents, installation documentation, enforced javadoc, careful attention to architectural ratholes (frequent spikes and lots of mentoring of the developers).

      You say you don't want to be a team lead, but the God's honest truth is that you do, eventually. People who think about and care about process make the best team leads, because they are the ones who best optimize the whole team's productivity. You can still get a lot of work done if you are the team lead -- the only difference is that you get to set the standards and help everyone else come up to that level, rather than just being a voice in the wilderness. I know, because that's exactly the spot I'm in now -- a team lead who's looked up to, rather than looked down on.

      The other thing to be careful of in your frenzy of abstraction is YAGNI. Are you really going to need all this documentation? Who is it for? Be extra careful that your definition of The Right Way isn't just The Most Fun Way For You. Ultimately you are just as accountable for getting the job done as the other grunt coders at your job. The only way your upfront work will pay off is if you can leverage it a few weeks from now to write 10 screens in the time it takes them to write 2, and if you can sustain that productivity increase. If you can't, then is it really worth it? (And your whole create-the-whole-object-structure-with-XML... cool, sure, but do you REALLY need it???)

      Don't overwork yourself so much that it magnifies your resentment. And don't lose hope -- yes, there ARE people over 20 who care about good clean code that does the job in the right way!
      Cheers!
      Rob

    15. Re:Reasons for XP by jethroT · · Score: 1
      You are right and wrong. Your design might be the best way to do it, with OOP, abstraction, whatever. But what use are your OOP principles when only one programmer in the team, i.e. you, understands it?

      These programmers you are working with seem to be horribly outdated. As long as you work with them you have to adapt to them. That's the crux of wanting to stay lowly programmer, you are not steering the boat, you are sitting in it.

      As I see it you have these alternatives:

      1) Stay in this team. Then it is 'When in Egypt do as the Egyptians do'. You can use your design principles somewhat in your own code, but the projects won't ever be designed like you think it is best.

      2) Leave this job and look for a job where the team is more up to date. But I guarantee you, you still will have to compromise. 3) Leave the job and take a job as a single programmer. No team is no compromises. But you won't learn from the experience of others. And you will have to do everything, from coding to designing to talking to the customer.

      4) Stay and become team leader. Then it's your say, but you still have to consider what the rest of the team knows. And, since code quality is not immediately measurable to share holders and company execs, you will still have to sacrifice code quality for fast development.

    16. Re:Reasons for XP by mr_luc · · Score: 1

      Putting words in your mouth?

      This is just silly, it's been days after the story was posted -- but I'm gonna' respond anyway.

      Nobody said anything about being "the hottest shit since sliced bagels". I don't care whether I'm better, worse, smarter or stupider than the other people on a team.

      But when the work that I do -- which, as a conscientious student of computer programming and the development processes behind its real-world application, I KNOW to be of very high quality -- is disregarded or dismissed, I get pissed.

      When the very things that make the work I do powerful (and difficult to explain to uninitiated) are used as weapons against me at every opportunity, to try and demonstrate that "see, he's doing crazy, over-complicated, non-real-world shit, instead of actual work!", I get pissed.

      When other programmers use Fear, Uncertainty, Doubt tactics as a tool to make me look foolish, for whatever their own personal agendas are -- I try not to think about that, because it feels very Dilbert -- when ALL I WANT TO DO is to do my job well, I get pissed.

      I don't need some anonymous fucker trying to spoil my rant here. :) The bottom line is that I'm getting paid $10 per hour to code at a higher level than anyone on the team, I'm OK WITH THAT, and that I object to people trying to fuck with my ability to do my work (by attacking the NECESSARY abstraction in my code, and thus making my job incredibly stressful because it undermines management's confidence in my ability to get work done) to make themselves look better, look more necessary, look more authoritative, or FEEL better.

      I don't need to back down on a god-damned thing. I don't care about whatever dick-measuring contests the AC obviously does. All I care about is that I be allowed to do my work -- which I happen to love, but that's a side point.

      I mean, holy shit. It's not easy to find people that love their jobs -- for MULTIPLES of my current salary. I know damned well that I'm a good value, and that gives me the ability to flip this bird at the people that try to piss in my Cheerios(tm)

    17. Re:Reasons for XP by Anonymous Coward · · Score: 0

      This is just silly, it's been days after the story was posted

      I don't know what it is you think is just silly - I suggest learning to write English as well as you think you write code.

      Nobody said anything about being "the hottest shit since sliced bagels".

      No-one needed to - your attitude is apparent through your words and your tone.

      I don't need some anonymous fucker trying to spoil my rant here.

      Well, "Mr Luc" (how nicely non-anonymous that is - try thinking about that before you attack my AC status again), your rant stands as you posted it regardless of what "some anonymous fucker" said.

      I don't care about whatever dick-measuring contests the AC obviously does.

      Umm, yeah, obviously I'm starting a dick measuring contest, or some shit. I'm not just trying to help you wake up out of your childish dreams of this being a perfect world. But if this is just a dick measuring contest, why are you still responding?

      I am a programmer, and I love my job - but I've woken up to the idea that others aren't as stupid as I thought just because they think in a different way, or do things a different way.

  31. Why it's not taking off... by geekoid · · Score: 1

    ...It puts the burdon of decision on the customer( usually managment).

    Show of hands: How man people have worked with a manger that would take responibility for decisions about every step of the program? hhmmm I see 1..oh wait he was just stretching.

    --
    The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
    1. Re:Why it's not taking off... by bay43270 · · Score: 1

      the customer is actually supposed to be an end user... so no, not "usually management". XP also requires management buy in. If your manager is fighting your move to XP, don't even bother trying.

  32. There is no silver bullet.. by CharAznable · · Score: 3, Funny

    As Fred "Morpheus" Brooks said, "Don't try to find the silver bullet that will deliver bug free code on schedule and on budget.. instead try to realize the truth, there is no silver spoon!"

    --
    The perfect sig is a lot like silence, only louder
  33. It's nice to see... by Cranx · · Score: 1

    It's nice to see XP taken to task like this. Nice slap back at all the sophomoric zealots I've had to argue with about it.

  34. XP Refactored by herwin · · Score: 5, Insightful

    I read that book first, and nodded my head. Then I started checking out some of the practices, and discovered that XP is actually pretty good. For example, pair programming seems to be able to produce the same results in about 55% of the time that one programmer would take, -->but with about 40% less software faults--. Not only does it get past the "9 women to produce a full-term baby in one month" problem, but with significant quality improvement. Just don't go overboard.

    1. Re:XP Refactored by Fringe · · Score: 1
      Then I started checking out some of the practices, and discovered that XP is actually pretty good. For example, pair programming seems to be able to produce the same results in about 55% of the time that one programmer would take, -->but with about 40% less software faults--.
      Ummm... yeah... but only because the terms "schedule", "late", "success", "bug" and "software faults" have been redefined so substantially. When the results are held to the same standards (i.e. on the originally-desired schedule, with the originally-anticipated feature set, delivered in a form the end-user finds actually usable), I have yet to see XP work. It only works by redefining the goal to being the joy of programming rather than the delivery of product.

      And isn't that a Microsoft trait? It's not a bug, it's an undocumented feature!

    2. Re:XP Refactored by cpu_fusion · · Score: 3, Funny
      pair programming seems to be able to produce the same results in about 55% of the time that one programmer would take, but with about 40% less software faults

      When I see someone slinging around unattributed percentages like that, the credability drops to 7.5% and my attention span drops to 0%.

    3. Re:XP Refactored by Anonymous Coward · · Score: 0
      ... Not only does it get past the "9 women to produce a full-term baby in one month" problem, ...

      Yes I'll have to try that one.

      "Excuse me ladies, I have an experiment to try. Don't be afraid, it is in the name of computer science..."
    4. Re:XP Refactored by Oloryn · · Score: 1
      I read that book first, and nodded my head. Then I started checking out some of the practices, and discovered that XP is actually pretty good. For example, pair programming seems to be able to produce the same results in about 55% of the time that one programmer would take, -->but with about 40% less software faults--. Not only does it get past the "9 women to produce a full-term baby in one month" problem, but with significant quality improvement. Just don't go overboard

      Exactly. The problem with XP isn't that it's bad, it's that it's overdone. We use pair programming to a some degree in the small custom-development shop I'm part of, typically when we come up on a tough problem. For that, it's quite effective. The fact that you have have to think through the problem enough to explain it to someone else helps, plus bouncing it across someone with a different perspective has benefits. And we definitely at times produce code better than either one of us would write. But not all code needs a pair to program it.

    5. Re:XP Refactored by herwin · · Score: 1

      I'd have to dig out the references, but it was a recent article by Barry Boehm.

    6. Re:XP Refactored by blancolioni · · Score: 1

      We use pair programming to a some degree in the small custom-development shop I'm part of, typically when we come up on a tough problem.

      So whar you're saying is that when you come up against a tough problem, you talk it over with a colleague? Go through the code together, maybe discuss an implementation that fixes it?

      I think that the problem with XP is that they take practices that everybody does anyway, give them fancy names, and insist that you do it all the time.

    7. Re:XP Refactored by sinserve · · Score: 1

      The only Boehm I respect is Hans Boehm.

  35. I'm Cynical... by Greyfox · · Score: 4, Insightful
    XP is just another way of designing software. If you have good programmers and managers it will work well. If you don't, it won't.

    I'm cynical of the people who see it as a silver bullet that will solve all their problems. These are the same people who saw C++, Java and XML as silver bullets that would solve all their problems. Yes, I'll just wave my magical fairy wand and this technology will somehow make softare design easy and yet allow you to retain your six digit salary. This will happen shortly after the monkeys fly out of my butt.

    --

    I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

    1. Re:I'm Cynical... by e-Motion · · Score: 1

      XP is just another way of designing software. If you have good programmers and managers it will work well. If you don't, it won't.

      Some who argue against XP say that the above is true for any methodology.

    2. Re:I'm Cynical... by Anonymous Coward · · Score: 0
      This will happen shortly after the monkeys fly out of my butt.
      You have monkeys flying out of your butt ??
  36. Windows XP by MonkeyCookie · · Score: 1

    Am I the only one who kept thinking of Windows XP when they were talking about "XP"? Windows "Extreme Programming".

    I thought that was a decent review: definitely more informative that most of the book reviews they have here on Slashdot.

  37. Excellent Review by duplicate-nickname · · Score: 4, Insightful

    I may not be a programmer nor care much about eXtreme programming, but this was still one of the best written book reviews I've seen on Slashdot.

    Other people submitting book reviews should read this one first. Thanks Sarusa!

    --

    ÕÕ

    1. Re:Excellent Review by Anonymous Coward · · Score: 0

      I agree.

      Article Writer made sure to be subjective and clarify all his points without bias.

      Overall a lucid article for me to refer to in order to find the ammunition required for squashing this "XP" bullshit should it come up.

  38. XP Refactored - for europe by gr8_phk · · Score: 1

    Wouldn't "XP Refactored" be the comming release of Windows for europe?

  39. Re:I have this book... by Surt · · Score: 1

    The problem is that XP works.

    Well, in some situations anyway.

    Not all situations, really.

    Ok, only in some very specific environments, with specific types of programmers.

    And XP has been proven by experience not to work in many many environments, and has a legion of programmers who have had bad experiences with it.

    OO on the other hand was mostly only controversial because people cared about the performance hit. Most people thought it was a good idea, but not practical. Then the compilers caught up, and the hardware got fast enough, and the benefits of OO outweighed the penalties.

    XP has flaws that are permanent and unfixable for many programming projects/environments.

    --
    "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
  40. You can't do that, because by Anonymous Coward · · Score: 0

    It's a book about buzzwords. It's virtually impossible to discuss this without using them.

  41. Just like socialism? by Anonymous Coward · · Score: 1, Insightful

    The mention of XP "pureness" reminds me of what socialists used to (or may still for all I know) say about the collapse(s) of communism - "they failed because they weren't practicing 'pure socialism'."

    1. Re:Just like socialism? by boomgopher · · Score: 1

      I agree - and, like socialism, what I dislike about XP is the quivering excitement of it's proponents to throw away tried and true methods, all in the name of "REVOLUTION!"

      --
      Your hybrid is not saving the environment. Its purpose is to make you feel good about buying something.
  42. Funny.. by Kwil · · Score: 2, Interesting

    ..Alistair Crowley wrote the same thing about Magic(k)

    So long as you perform it exactly right, it will always work perfectly. If it doesn't work, you didn't do it right, that's all.

    Sorry, I don't have time for things that either work perfectly or not at all. If I get something 99% right, I want something that works 99% of the time, thanks.

    --

    That Jesus Christ guy is getting some terrible lag... it took him 3 days to respawn! -NJ CoolBreeze

  43. eXtreme Programming by StateOfTheUnion · · Score: 0, Offtopic
    This thing is sooo long, if it doesn't have anything to do with mutated humans in tights saving the world from utter destruction . . .please let me know so I don't waste my time.

    And Lasers . . . its gotta have lasers. . .

  44. One incredibly useful part of XP... by CommieLib · · Score: 2, Interesting

    I looked at the XP stuff, semi-digested it and rejected it as marketing hype. But one portion of the process I've really embraced is the automated testing. Called Test-Driven Development, the idea is that rather than writing a test to test the code you've just written (like you have to do regardless) and then throwing it away, you keep it, and also place it in an organized framework where it can be run again and again.

    The upshot of it is that you're much les vulnerable to regression, or more precisely, that you can more readily see the effects. TDD is actually much more complicated than I've outlined here, but just search on JUnit (for Java developers) or NUnit (for Microsoft developers). Most of the big leaps forward are just formalizations of things good programmers already do, and I think that this qualifies.

    --
    If your bitterest enemies are people who hack the heads off civilians, then I would say you're doing something right.
    1. Re:One incredibly useful part of XP... by Abcd1234 · · Score: 2, Insightful

      Bah, this is called regression testing, and it was described in one book called "The Art of Software Testing" by Glenford J. Myers, which was published in 1978. *1978*! And that's probably not the first place it's shown up. The point is: Regression Testing ain't a new idea, so don't go crediting XP with it.

      Frankly, I think you misunderstand TDD. My understanding is that TDD also dictates that you write your test cases *before* you write your code. In this way, the tests are supposed to act as a formalized specification. Of course, one has to ask if this practice is really feasible, but I'll leave that for another post. :)

    2. Re:One incredibly useful part of XP... by Anonymous Coward · · Score: 0


      Damn, I wish I had some points for you

  45. NEW eXtreme Programming Refactored, Take 2 by H8X55 · · Score: 1

    NEW eXtreme Programming Refactored, Take 2 Now with a side dose of Ritalin for those times when even you cannot control your code slinging madness. Take 2 and try again in four to six hours.

  46. Re:I have this book... by iamriley · · Score: 2, Insightful

    A side effect of using XP is that its flexibility makes it impossible to blame the methodology when a project fails; that is, it always comes down to bad choices made by the team members, and all team members share the blame equally. Less competent programmers are afraid of this responsibility. They like the job security of being able to blame a rigid, outdated process or a single team leader when a project fails. If I was not confident in the my own ability or the ability of my team members, I would disparage XP as well.

    --

    If you can read this, then I forgot to check "Post Anonymously".

  47. Dropping customer requirements by Julian+Morrison · · Score: 3, Insightful

    There is a specific type of "customer requirement" which is daft, trivial, probably useless to them from any "business use-case" perspective, and damaging to the overall project. These are often the result of whimsy inserted into requirements docs drawn up by the nontechnical, and followed with unreasoning precision when drawing together the spec.

    Silently dropping these in the trash is often the best way to test if the customer really wants them.

    1. Re:Dropping customer requirements by chromatic · · Score: 1

      I'd rather tell the customer what such stories would cost and let him decide if they're really necessary. If your project requires such sneakiness, you may have larger problems than stupid customer requests.

    2. Re:Dropping customer requirements by Anonymous Coward · · Score: 0
      1. Silently dropping these in the trash is often the best way to test if the customer really wants them.

      I agree with you *if* and *only if* you are a programmer who knows how to determine the difference between a useless wishlist item and something that is needed.

      I'd keep the other programmers away from this kind of thinking as it has driven me to rant and cuss loudly over much of the last year (and I'm a calm person normally!).

      One of the programmers I'm training now keeps coming back with comments on how she's going to ignore some parts of the specs or reinterpret them to mean something easy to do.

      She's also interested in changing data types and ignoring validation. For example: A filed with an alpha numeric reference in the specs while the same specs make it impossible to enter anything but a number for each character in the field. She wants to allow spaces and letters, though the specs say otherwise. Second example: 3 alpha numeric fields, padded with spaces, and right hand justification. She wants to check all 3 fields as one block (it's a flat file) for non alpha numeric values and skip checking the space padding and proper justification.

    3. Re:Dropping customer requirements by Piquan · · Score: 1
      At one point in my career, I came across this situation to an absurd degree.

      One program lets a user select a list of machines. These may either be selected by listing the machines you need ("foo:bar:baz"), or by listing the machines you don't need with a ! ("!quux"). Since the program had a list of all machines, these were equivalent.

      I got a customer request to handle "foo:bar:!baz". Cutting through any management, I asked the customer directly what this should mean. I mean, clearly foo and bar are allowed, and baz isn't, but what about quux? What was the intent here?

      The customer hesitated, and promptly withdrew the request. He had no semantics in mind; he just wanted the syntax.

  48. As indigo montoya might say by ClosedSource · · Score: 1

    "You keep using this word "customer". I don't think it means, what you think it means".

    The golden rule applies. You know: "The one with the gold makes the rules".

    It's not fair, but if you tell your customer or manager that he has the responsibility because you're using eXtreme Programming, you won't be using it very much longer (assuming you still have a job).

  49. My issues with XP by mnemotronic · · Score: 1
    I'm trying to learn about XP by reading the O'Reily XP Pocket guide, and "Agile & Iterative Development" by Craig Larman. My first takes are certainly not as critical as the "Refactored" book, but some of the points made seem reasonable to me.

    My problems with XP are:

    • The XP references to test development skip over a huge can of worms. Where I work (a disk drive company), the product firmware engineers don't write, or even know, the test system languages, and we use more than a few. In addition , many of the tests are canned, or beyond our control, like WinBench. IMHO, test software needs it's own team. It is unreasonable to say the product firmware engineers will just "code up" a test to verify a new feature. The test code could involve as much work as the product feature.
    • Working in teams. We have a couple of asian engineers who don't seem to have a firm grasp of, how can I put this delicately, "personal hygiene". I would not like to be the "partner" of either one. We couldn't pair them together because they work in different disciplines. And most of the engineers here are code cowboys who would strongly rebel at having someone peer over their shoulder full time. Personally, I would have to troll slashdot from home, and how much fun is that?
    I'm sure I could come up with more, but my pesky manager wants a 1x1 meeting now. Damn.
    --
    The Russians have won. They have made the world a cesspool of distrust, greed, fear and hate.
    1. Re:My issues with XP by Anonymous Coward · · Score: 0
      We have a couple of asian engineers who don't seem to have a firm grasp of, how can I put this delicately, "personal hygiene".
      This is offensive, keep race out of it.
    2. Re:My issues with XP by mnemotronic · · Score: 1
      This is offensive, keep race out of it.

      Ok. Would it be better to say "A couple engineers from XXX" where XXX is China or Australia or Malasia or Canada or Japan or France or Lousiana? Or perhaps not mention origin at all? Or, in the interest of political correctness, drop the entire item? I don't want to offend anyone.

      --
      The Russians have won. They have made the world a cesspool of distrust, greed, fear and hate.
  50. Teamwork by Anonymous Coward · · Score: 0

    "A few harmless flakes working together can unleash an avalanche of destruction" -www.despair.com

  51. As always, mainstream exposure causes corruption. by Nygard · · Score: 5, Insightful

    So many of the nuances of XP have gotten lost here, it's very disheartening. Any methodology applied blindly will fail. Period.

    Early work on XP emphasized the human element of introspection. The review sets up a strawman argument about the rigidity of XP that may be supported by the newcomers like "Uncle Bob", but was not there in the original form.

    Originally, XP placed a lot of weight on continually asking yourself "Am I delivering value to my customer?" Followed by elimination of activities where the answer was "no". In other words, do more of the things that deliver value and less of the things that do not.

    Another nuance that has been lost is the idea that there are projects and teams that should not use XP. Kent's first book had a whole chapter on when not to use it.

    I've used XP in partial form, and it worked. I've used XP in full form, and it worked. The common denominator is that I had a team of creative, engaged, disciplined professionals working together. Such a team does not need a huge process to force them to do the right thing. It needs a set of common disciplines to unite them. This is what XP provides.

    --
    "Genius may have its limitations, but stupidity is not thus handicapped." --Elbert Hubbard (1856-1915)
  52. XXX-P Programming by bobej1977 · · Score: 1

    Made ya look. In my experience there is only one programming methodology that works every time:

    1. Gather a team of people who are talented problem solvers and who work well together.
    2. Give them a manager who is tough but fair and has a big-ass bucket of common sense.
    3. Give them time/caffeine/fair-compensation.
    4. Fold gently.

    If you're going to spend energy to make your programming life better, then spend them on the list above.

    --
    The meek shall inherit the earth, in 3 by 6 plots. - Lazerus Long
  53. Mental Image of XP by cpu_fusion · · Score: 1
    Programmers jumping out of planes, parachuting in tandem, sharing a laptop and chugging mountain dew.

    Programmer 1: Dude! We're EXTREME programming! This is so cool!
    Programmer 2: OMG my 'chute didn't open! aaaaah!
    Programmer 1: We don't need 'chutes! We're frickin' EXTREME! We'll refactor the corpses!

    Hats off to you if you've made this methodology work, but to me -- the name says it all.

  54. My extreme programming by ShecoDu · · Score: 1

    Back on the day, we did our extreme programming while climbing on a cliff, we used one hand to grab a rope and the other to type on our uber fast 8086... and there were alligators waiting on the bottom... and we liked it.

    those were the days

  55. MOD THIS UP by Anonymous Coward · · Score: 0

    +5 FUNNY.

  56. Cue lame "Windows XP" jokes by bonch · · Score: 1

    Because everyone's a friggin' "comedian."

  57. follow the squaresoft lead by Anonymous Coward · · Score: 0

    Final Refactoring XII

  58. XP is an excuse for laziness by Anonymous Coward · · Score: 0

    I have been doing embedded firmware design for the better part of 30 years. From what I've read about XP, I find:
    1. everything that XP advocates sounds like the reasons behind every failed project I ever worked on.
    2. What XP denigrates and pronounces useless sounds like the reasons behind every successful project I ever worked on.

    It makes me mistrust XP right from the beginning.

    I am not a big one for rigid design methodology, but I found over the years that the follwoing rules work pretty well:
    1. Design from the top down and implement from the bottom up. This just about guarantees that you don't start coding until the design is done and that you have a pretty clear idea where you are headed when you do start coding. A well-documented design effort is not adverse to change; in fact, it makes clear exactly what impact changes will have on the existing work. How in the hell can XP predict what kind of impact a change will have when you don't know what you were going to do in the first place?
    2. The most successful projects I ever worked on started by developing the user documentation first! The end-user then had to review and sign off on it before the design started. This caught many, many miscommunications before design ever even started. Instead of being an afterthought tacked onto the end of the project (like most engineering efforts), the user docs provided direction and reference for the duration of the project.
    3. The only place to adequately document code is in the code itself. I read once of a company that used APL in a production environment (APL has frequently been described as "write-only" code - no one could read and understand it). They forced each routine to include commnets sufficient to rewrite the entire routine. If a problem was found in a routine and it couldn't be fixed in an hour, the code was stripped and the comments used to rewrite it. This is to be strived for and elminates the need for programmer pairs in XP.

    There are many more, I could go on and on (and probably already have). The biggest problem I have with XP is that it tends to throw out everything that isn't "fun" and substitutes any kind of rigor with chaos! Well, damnit, fun is being able to meet deadlines and functional goals, NOT to code constantly, willy-nilly, and never produce a product. And, most certainly, it is NOT 'inexplicable termination' of a horribly late project that has failed in its very reason for existence!

  59. Re:As always, mainstream exposure causes corruptio by dpbsmith · · Score: 1

    Huh. If you have "a team of creative, engaged, disciplined professionals working together" you will get good results no matter what methodology is alleged to be in use.

    Get good people who can work together and let them work, and you'll get good results.

  60. Extreme Programming - last decade's fad. by Pathetic+Coward · · Score: 1

    It's been replaced by the new methodology: "Offshore Programming" :

    (a) None of this "customer user story" crap that has management need to have regular contact with the development staff. Instead you give them the specs and they do the work without talking back to you. Management's time is valuable and can't be wasted on petty programming implementation details.
    (b) Wasting time on testing is foolish. You pay people to do the work, so they should do it right the first time. If not there are plenty of others to replace them.
    (c) Pair programming doesn't go far enough. If you can put two people in a cube, why not more? And reduce the space, too. But having a person looking over a cube-mate's shoulder is wasteful. Everyone should be busy producing code.

    The new methodology also has these advantages:
    (d) You don't have to see the developers. Having a group of geeks in your office detracts from the image you want to present to clients: those people can never be part of your social group.
    (e) You save money by hiring people that work cheap.

    Extreme Programming - so nineties. We're in a new decade now.

  61. Re:I have this book... by Anonymous Coward · · Score: 0

    The problem is that OOP doesn't work. OOP doesn't reduce complexity, it just moves it, replacing complicated code structure with complicated class heirarchies. Totally useless.

  62. Methodologies considered harmful by Anonymous Coward · · Score: 0

    How many successful software companies follow any programming methodology at all? Microsoft doesn't and most successful open source projects don't either.

    Why? Because methodologies are never flexible enough to be suitable for all projects and all developers. Is someone like John Carmack going to benefit from pair programming? Is design-as-you-go going to work for something as complex as a CAD application or a new programming language?

    I don't know any experience developer that advocates the full adoption of any methodology for all projects - it's a recipe for disaster. There are some good ideas in XP but they don't apply to all situations. Use your common sense and use what's right for the situation.

  63. "Uncle Bob"? by Pathetic+Coward · · Score: 1

    I'd never hire anyone that used "Uncle Bob" as part of his professional name. What in the world is this guy thinking? That companies want childish behavior?

  64. That's My Point by Greyfox · · Score: 3, Interesting
    Management would have us believe that we can start using XP and this will somehow make up for deficiencies in the quality of our programmers or managers. I'm not buying it.

    XP can be a useful method of developing software, but it's no more the be-all and end-all of software design than the Object Oriented stuff that came before it (That everyone hailed as the be-all and end-all of software design.)

    If your management is easily distracted by shiny objects and is not capable of making informed decisions based on the strengths and weaknesses of the teams they manage and the unique requirements of the various projects, perhaps you should be worried. Or perhaps your customers should be.

    --

    I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

    1. Re:That's My Point by Anonymous Coward · · Score: 1, Insightful

      XP is NOT about making up for deficiencies in the quality of your staff.

      It IS about leveraging your talented staff.

      If you have no talented staff, then you are hosed wether you use XP or not.

  65. Pair programming by gidds · · Score: 1
    Has anyone used pair programming per se on a project? What was it like? Did you get any benefits? Were there times when it got in your way?

    I haven't, but I'm working on an open source hobby project with one other author. We tend to thrash out the high- and low-level design issues by email, sometimes at great length, and then one of us does the actual coding. This seems to work extremely well for us: we both understand all of the project well, and so can do maintenance as needed; we rein in the other's ambition or enthusiasm where needed, but we also prompt each other's imagination too. And the discipline of explaining it all to someone else helps get the design focused and clear.

    I've often thought that something like this would be handy at work, too. In most of my programming jobs I've been left largely alone -- there may have been approval for specs and design documents, and brief code reviews after the fact, but the actual creative stuff has almost always been a solo job; and I think this is wrong. Of course, you'd have to get on with the person in question. And -- even more important -- you'd have to have roughly the same vision of where you want to go. But with those assumptions, I'd expect it to work well.

    Actual low-level coding is IMO a one-person job (too many cooks, &c), though reviews are always a good idea -- but you shouldn't need to be doing any real design work then, because it should have been done already. And that's where I think pair programming would really help. Maybe it should be renamed 'pair designing'! Anyone else agree?

    --

    Ceterum censeo subscriptionem esse delendam.

    1. Re:Pair programming by Anonymous Coward · · Score: 0

      I've done some paired programming. We worked at the same desk for the good part of a month.

      Before we started, I absolutely despised the thought of it. I'm still not entirely sure why, but I was violently opposed. Even after we started, I hated it.

      However, after some time (and especially after the project finished), I realised that I had been completely converted, and was now seeking paired-programming.

      First, it's hard work. This was back when I was working long hours, and we couldn't handle any more than 9 to 5. During that time, however, we WORKED ... there's no screwing around when someone is watching you and engaging you with their code.

      Second, the code we produced is absolutely beautiful. There were some arguments along the way, but we worked through them, and the code represents the best of our combined intellects.

      Finally, we were also very aware that the code written while pairing was substantially more robust (and we both felt more confident with it).

      My suggestion to anyone who's interested in XP would be to do one small to medium sized project (around a month would be a good time frame) following the XP principles as religiously as possible. Write your tests first, don't write ANY superflous code, and constantly refactor.

      This will give you a good taste of what works, and you'll know where to set the volume nob. For example, I set my XP volume to about 8.5 -- most of it is really good, but I'm getting old, and I'm not nearly as eXtreme as I once was.

    2. Re:Pair programming by Maelikai · · Score: 1

      there's an argument that programming is a design activity:

      http://martinfowler.com/articles/newMethodology. ht ml#N40008A

  66. more XP favourites by goon · · Score: 1
    "If you lose a card, and if the customer does not detect that loss, then the card wasn't very important. If, however, at an interaction planning meeting, the customer says: 'Hay [sic], where's that card about blah, blah, blah,' you'll find it easy to recreate."

    I remember going through XP programming or Planning XP and finding a beauty... (paraphrased)

    • ... if you need some testing infrastructure, database, web interface etc and have trouble justifing it to the client
    • just re-word a story so it has to be completed within the current itteration. ...
    XP is full of such pragmatic sidesteps that are against the rules, but required to get things done. sometimes the client needs to be told what is required and not the other way around.

    for this reason developers who strictly adhere to it's rules are forever going to be caught off balance.

    My biggest gripe with XP is customers writing stories that define their own problems. It just does not happen with shrink wrap applications. I suspect that this only works with certain types of application development say internal products.

    --
    peterrenshaw ~ Another Scrappy Startup
  67. Childish by SuperKendall · · Score: 1

    I find that approach really childish and not at all professional. It may take a little time but I'd rather point out the reasons it's silly a few different ways and compare it to other featurews of the system, to make the user reconsider a silly requirement.

    I look at it this way - if a requirement is really silly, then it should be easy to talk just about any user out of it. At the end you come out with a much healthier relationship between you and the client.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re:Childish by jasonjacks0n · · Score: 1
      I look at it this way - if a requirement is really silly, then it should be easy to talk just about any user out of it. At the end you come out with a much healthier relationship between you and the client.

      I so wish this was true. I'm a classic techie type in mentality, where I really expect clear reasoning and truthful, straightforward explanations to have some effect on people's opinions. Unfortunately, real-world experience has shown again and again (and again..) that this is not the case outside of tech-land. (And even there it can be iffy, like if you're dealing with a zealot.)

      Customers will give contradictory requirements on different days, double your workload with a whimsical "requirement" that they'll forget about in a week, take constructive advice as criticism of everything they and their product stand for, etc. Why? Because they're people, and people can be that way, especially when they're dealing with things they don't quite understand. I know a lot of women who are automatically suspicious of anything an automotive repair person tells them .. and I suspect that a lot of the interactions I've had with customers are the result of some similar feelings.

      I'm professional enough that I (almost) always try to assist my customers as best I can, even if they've pissed me off (or vice-versa). I'd like to see my customers succeed. And sometimes, although it may sound wrong, "losing" a requirement or two is actually a better way to help them succeed than either (1) slavishly implementing every stupid idea they have, or (2) talking them out of each stupid idea.

      My experience is that selectively second-guessing a customer, if done thoughtfully and with good intentions, will also generally result in better relations with them than arguing each poorly-designed requirement with them will.

      And then -- if they do bring it up again, well, then you know it really is important to them, and then you can slavishly implement/argue the merits with them.

      --
      This space intentionally left blank.
  68. Re:As always, mainstream exposure causes corruptio by grungeKid · · Score: 1

    While a small team of good people almost always produce good output, I think XP will give much better results than a heavyweight methodology like RUP.

    Conversely, a team of average or mediocre people using RUP will probably produce acceptable result, but if the same team uses XP (or another light-weight metodology) the project may very well crash and burn.

  69. Like CMM and Emperor's New Clothes by ClosedSource · · Score: 1

    For your consideration the following passages:

    Paraphrased XP from the book/review:
    "XP is obsessed with Fear and Courage -- you must have Courage to do XP, and if you oppose it, it's because you're Afraid of it. "

    CMMI tutorial:
    "Adopter Types:
    Innovators
    Early Adopters
    Early Majority
    Late Majority
    Laggards"

    The Innovators will be the first to embrace CMMI and the Laggards will be the last.

    The The Emperor's New Clothes:
    "Their colours and patterns, they said, were not only exceptionally beautiful, but the clothes made of their material possessed the wonderful quality of being invisible to any man who was unfit for his office or unpardonably stupid."

    Do you see a pattern here?

  70. XP - another fad by jxa00++ · · Score: 1

    Apologies to the previous Slashdot poster who originally posted the below text, but I though it was so on the mark that I copied and kept it. It bears repeating:

    I've seen SO many of these come and go. You can never question them while they're in the ascendancy.

    Stage 1 consists of proof by repeated assertion, and "case studies" that actually describe only how projects using the Methodology were _started_. Lots of detail on how managers and workers were organized and brought on board, etc. Anecdotal success stories where you cannot tell whether the success actually had anything to do with the use of the Methodology or whether they just had a good team that would have succeeded anyway, or whether it was just Hawthorne Effect. No clear evidence that _other things being equal_ using the Methodology instead of some other process actually has a beneficial effect.

    Stage 2 occurs when a Methodology has been used in enough real projects by a real-world variety of programmers, then you start to see the articles that say "in order for it to work, you MUST have conditions a, b, c, d, and e." One of the conditions is usually the enthusiastic involvement of upper management. But, hey, if you have the enthusiastic involvement of upper management you can probably get ANY project to succeed. Another is usually the adoption of the entire methodology, no "piecemeal" approaches. Another is usually the provision of adequate training. No real-world project ever meets all these conditions, therefore no failed project using the Methodology is deemed to disprove its efficacy.

    Stage 3 occurs when people start to notice that the Methodology doesn't particularly work. Well, actually, it's never phrased that way. Nobody ever _admits_ that the Methodology was a fad which has now been abandoned. Instead, they simply say they are adopting the _new_ Methodology, which it is said, DOES work. Or at any rate WILL work. Provided, of course, that you adopt all of it, have the enthusiastic backing of upper management, and adequate training.

  71. Radio station?!? by A+nonymous+Coward · · Score: 1

    I heard it, I heard it, I heard it on the X ... ZZ Top

    Used to listen to Wolfman Jack when I was a kid in Northern California, and only much later found out it was probably his extra powerful station just across the border in Mexico.

  72. I've done XP and everything else too it seems by clintp · · Score: 1

    20 year programming veteran, from embedded systems, drivers, OS's, up to application and systems management code with everything in between. I'll give an unsolicitied Voice of Experience (as the author calls it) about an unsuccessful attempt at XP:

    When XP showed up in our shop it was at a suggestion from the new CTO. Should we do it? Why not? We talked to some consultants about it -- and that's where the wariness set in.

    The programmers embraced it for the first year or so. We had good reason to, as it was the only way we could cajole customers (internal personnel) into giving us good problem descriptions. Any methodology was better than no methodology.

    The customers complained that the coach was getting in the way of getting problems solved (and he was). The methodology itself was seriously getting in the way of things getting done.

    We went from Quarterly development cycles to Bi-weekly. The customers howled in pain, even though the bug count was dropping significantly.

    Unit tests never really happened (and yes, the XP-heads will point and scream "THAT'S WHY XP FAILED!" I'm sure). We were working on adding features and bug fixes to a 20-year-old product that strongly resists any attempts at automation or limited unit tests -- caution, experience, and good source control saves our bacon daily.

    Pairing... We had 6 programmers, so pairing all-day every day became tiring. So we cut back on the pairing hours. And it was still tiring. And after a couple of rotations, we stumbled on lots of pairings that just didn't work. So with programmers C, W, B, K, P, A the only pairs that worked were CW, CB, CP, WB, WA, BA, and KA. Most of our pairings were expert-expert pairings as far as programming abilities, but in subject matter they ranged from expert to novice.

    A lot of knowledge transfer happened during pairing, but a lot of productivity was lost. And the complaints about not being able to tinker and study code to learn from it abounded.

    Myself, I thought the whole experience was worth a try. What doesn't kill us can only make us stronger, right? The CTO is gone now and with it most of the methodology.

    What we've ditched: * Pair programming, except as a knowledge transfer tool on new code. * The Coach. * Replaced the "stories" with a good bug tracking system.

    What we kept: * Somewhat shorter development & release cycles * The dream of good unit tests * 100lbs of books on XP. * Large workstation screens.

    --
    Get off my lawn.
    1. Re:I've done XP and everything else too it seems by Anonymous Coward · · Score: 0

      Unit tests never really happened (and yes, the XP-heads will point and scream "THAT'S WHY XP FAILED!" I'm sure).

      If you have solid unit tests, it completely changes the way you program. I hate to say it but yes, without unit tests you are setting yourself up for disappointment.

      If you can't refactor your code into unit-testable objects, then either 1) it is *really* a mess, or 2) it is embedded code or something similar which is difficult to unit-test..XP doesn't apply to those kinds of systems.

      Even if you ditch XP, keep working on those unit tests, they pay off BIG TIME. You can "tinker" all you want with the code and you won't be afraid of breaking anything. I have gone into year-old projects and noticed a complicated bit of code, refactored it to something better in an hour or two, tests pass, move on.. I would *never* do that with a system that didn't have tests.

  73. XP is worth studying.. by Anonymous Coward · · Score: 0

    Good review! Though I doubt I will read this book (or any of the XP books). All I need to know about XP was answered by Chromatic's little O'Reilly book on the subject (which is a book every programmer should own I think). The pros and cons are pretty clear to an intelligent experienced programmer.

    I use a lot of XP's practices, because they literally changed programming for me from a boring, tedious "egg-juggling" problem, with overly complex untouchable code and confused customers ("what is that checkbox for, I didn't ask for that") to a slow and steady but FUN process, with working software at every stage, and nice 8-hour days where I could choose almost any point to stop.

    Some reasons why I like XP, or rather, why I've bought into some of what the XP'ers say:

    TerminationCanBeSuccess

    Yes, it can. I have personal experience with a large, badly-written, sprawling project that I was afraid to touch. The usual thing you've all probably worked with as programmers.

    So I took this project and "redesigned" it from the ground up, using diagrams, layered design, the works. Then I began to rewrite the entire thing. After a couple weeks I was nearly drowning in my own code (and my own stink from 10-hour days). It was just way too complex to keep in my head. I began to doubt myself, I used to be able to keep an entire program in my head and visual the design.. was I getting old?

    No, my brain now simply had too much stuff in it to keep in short-term memory all at once, and the programs I work on get longer and more complex. I shouldn't limit myself based on the size of my short-term memory.

    I had been reading the XP book mentioned above and decided that "you aren't gonna need it" and "test-first development" where really good ideas. I began writing tests and refactoring the existing code, and after about a year the code is now nearly perfect, and with high test coverage (and it was in use the entire time, so I didn't have to maintain two code bases). I am still amazed at how easy it was to write tests, refactor in small steps, etc.. it seemed insurmountable but eventually it was done and that was a great feeling.

    In that case termination *was* success.

    But to use an XP example from the book, if you're working on an program that will need to work with objects on several different systems (local disk, database, web, ftp) but right now you're only got the disk based story card (user stories being broken up into small tasks) you hard code everything in your program to go right to the disk. Even though you know that you will need web support, because the customer insists on it, you are not allowed to plan for that whatsoever by adding a layer of abstraction between your code and the abstracted 'object holder'.

    The review confuses me here.. if "the customer insists on it", then it's part of the requirements, and you should at least *allow* for the eventual possibility. If this is XP then I'm not using XP properly I guess.

    But generally this is good advice. DO NOT CODE AHEAD OF THE REQUIREMENTS. I have examples from nearly *EVERY* project I've worked on where I thought the customer would request a feature, but never did. So like an idiot I have to maintain code that nobody wanted. So even if you think it is "obvious" and you did the exact thing on a project last year, blah blah, DO NOT CODE AHEAD OF THE REQUIREMENTS.

    There is an important thing you have to do though. You have to make it clear to the customer that they are an active participant, and they need to give you CONSTANT feedback. I'm working with a customer right now who seems to expect that I will magically "guess" what he wants and he gets upset when the program isn't completely finished like something shrink-wrapped. This is a highly domain-specific app and that's just not possible. He'll get the message eventually, most customers do.. they need to not be afraid of asking for even the smallest little thing. They need to think of us as a voice-driven prog

  74. Extreme Programming - the last man standing? by TekGoNos · · Score: 1

    As the parent pointed out, pure Extreme Programming cannot be offshored. (Unless you also offshore the client)

    That's why some people think that XP (and other very customer involving methods) will be the only ones used in North America in the near future, as all projects using more classic methods (with documented requirements) will be offshored.

    I guess that some classical projects will remain, but in general I agree with this thinking.

    So like it or not, you may be forced to use XP, move to India or change your job.

    --
    I have discovered a truly remarkable proof for my post which this sig is too small to contain.
  75. Finding criticism of fads by Tablizer · · Score: 0, Offtopic

    Well, it's not often as profitable to write a book on the downside of a hot trend

    I have noticed this also. I could not find much on criticism about OOP when everybody and their dog kept talking about it as if it was the greatest thing since structured programming. So I eventually started my own website on the topic. It is now the most popular OO criticism site on the web (brag brag). I wish there was money in it so that I could spend the time to reorganize it, clean it up, hire proof-readers, etc. But it is what it is.

    My point is that one is more likely to find criticism of a new technology or technique on the web rather than in books.

  76. Re:As always, mainstream exposure causes corruptio by sceptre1067 · · Score: 1

    The one thing people seem to miss, imo, is that methodologies like XP require a high degree of discipline/maturity in the team.

    A panel I went to on methodologies (OOPSL '00) mentioned this... that light methodologies work well with people who have a good degree of experience and good discipline. In teams like this heavy methodologies (e.g. look at PMI sometime, or RUP) tend to bog the team down. This sort of team tends to have a good degree of knowledge of the domain, and tend to be experts in the tools they use.

    On the flip side... a relativly young and/or non-diciplined team can benefit from a heave methodology because it will force them to look at a variety of variables. They might not have good knowledge of the problem domain or a full understanding of the tools avaialable to them. In that case the heavier planning can help them.

    I've been in both situations over the years... In the begining I liked the heavier methodologies, more for project managment, because things had to be documented. Now I know more, and do a lot of this automtically. So I've become a convert to things like Scrum which allow me to track empirical evidence, but don't get in the way of my job.

    just another $.02

  77. Pair Programming Considered Harmful by Ars-Fartsica · · Score: 1
    Please treat us like human beings. Is that too much to ask?

    Are you required to have someone sitting next to you watching everything you do?

    Are you prohibited from scratching your ass, picking your nose, or phoning your spouse as pair programmers are?

    Pair programming is a dead-end.No seasoned coder is going to put up with someone hanging on their shoulder - at best this technique brings together two weak programmers who may at best catch the odd bug when they aren't shooting the breeze.

    1. Re:Pair Programming Considered Harmful by Anonymous Coward · · Score: 0

      your pair is a partner, not a KGB minder - ever considered using the phrase "hey, lets take a break"?

      I am a very 'seasoned' coder, and I love pairing.
      I think that those who won't 'put up' with it are
      likely worried that it will show they aren't as 'seasoned' as they make out.

    2. Re:Pair Programming Considered Harmful by Choc+Ice · · Score: 1

      Oops, you forgot to find out what pair programming is before replying. Better luck next time.

  78. Amen by Anonymous Coward · · Score: 0

    Nothing beats experience. Pair programming at best is simply a tool to use peer pressure to keep people from cruising porn at work.

  79. Parent is actually more or less on topic... by BrianMarshall · · Score: 1
    In order to avoid an off-topic mod-down for my comment (this comment's parent), I should have prefaced it with:

    I hate XP because it tries to eliminate the part of systems design that I consider most important...

    --
    "When the going gets weird, the weird turn pro" -- HST
  80. XP at my new job by roman_mir · · Score: 2, Informative

    My new company has adopted XP ways before I came on board. For the past 3 weeks I have been working in pairs with other programmers, I do not have my own station, we constantly exchange pairs. There is no high level architecture, there are design sessions. There is Swiki to keep whatever documentation we produce as we work on tasks. There is XPlanner to keep track of our time spent on tasks. XPlanner is also used as an integration token (when you want to integrate, you grab a token in it and only then you are allowed to check stuff into CVS.) Before you check into CVS all your code must have JUnit tests written (for every method) and the code must not only compile but also pass all the JUnit tests.

    Do I like XP? No, I don't. I think there is a major problem with not having a strong architectural design upfront (especially in our app., which is a back-end J2SE only data parsing - loading - networking system, with strict SLA time lines.) Pair programming? - I don't really care, if the company is paying for it, it is not my business. Of-course I hate the fact that I don't have my own station. JUnit testing everything, every method? I think that it is a great idea if you have the time. I find that it helps flushing out the bugs early on. Of-course it is the most time consuming portion of the coding exercise, especially if you have to mock all the database stuff before running your DAO tests. SWiki is a good idea, I think, but it is not a substitute for a high level design document. It is descriptive of the tasks but it lucks the perspective.

    Design sessions with all coders at once? A horible idea, but how are you going to share info when there is no documentation? Basically in XP you either do all of these things or your project will really go to hell. I don't like it. If all developers were to leave at once, another group could not find enough documentation on the business requirements of the project to continue working. XP blows in my mind, but it is a job for now.

  81. I miss pair programming by Anonymous Coward · · Score: 0

    I paired programmed on two projects in a row. One project a resounding success (you can see it yourself running in the stores of a major US retailer). One project yet to be determined, but probably a resounding failure. Like all the detractors would predict me to say, the probable failure had little to do with Paired Programming.

    I miss pair programming. I think we got way more done, way faster, than on projects where I've single programmed. Partly because in pair programming there was way less time spent fixing somebody else's code since it tended to be done right the first time. Partly because there was way less time chasing after someone just to figure out how some piece of code was supposed to work - because there was a high probability your pair had worked on it or seen it. Partly because, yeah, you're way less likely to sit around picking your nose, checking /., checking your email, etc. when you have a pair.

    I also think all the programmers on the team got up to speed on the technologies, architecture and practises way faster. I'm now on a non-pairing team. The other folks have been coding together on various projects for a couple years - but always on their own code. A couple of them are taking for ever to get going on good practices or even technologies - cause the only way they get the knowledge is through ordained "knowledge transfer" sessions. Yeah, I get as much knowledge out of those as when playing Warcraft.

    I also think we had supremely effective code review in pair programming. Do we have code review now? Yeah, once every quarter we get together because it is required to fill out some code review paperwork. We look at a class or two. We comment on some variable names and indentation. Nothing gets changed of course, because the code has already been system tested and deployed to production by that time. So we get about 2 percent code review, which results in zero percent code quality improvement.

    Now, in my current team, maintenance tasks and new feature tasks queue up behind the programmer familiar with that code. Oh, he's out sick or on vacation? Or just working on something else? Then you'll have to wait. Meanwhile, someone over here is working on some low priority task - they could do the work, but they'd probably mess it up or just take forever to figure it out and try to tread lightly through it, since it will look completely different from everybody else's and their own code. Meanwhile, they start re-inventing some stupid little wheel like an email validator or a phone number validator (please accept these for the examples they are and don't go off on a harangue about them) because they don't know if someone else has done one yet. So then you end up with five or six different implementations of the same darn thing. Some stupid little thing, the kind of thing that isn't dictated by your architecture and brought up in your team meetings. The kind of thing you don't blab about over your cube wall. Little consistencies in the code that would make future development that much smoother and faster don't get into place. Little consistencies that DO get implemented when you pair program all the time.

    That said, on the successful project I mentioned above, we reduced pair programming near the end. We still worked together in a lab, without cube walls, which helped maintain communication like, "Hey, I need an email validator. Have we got one?" But since everybody was experienced on the project and everybody was knowledgeable about the architecture, the technologies and the practises, and the indentation fetishes, 100% pair programming wasn't necessary.

    Furthermore, coming off the (as yet to be determined) failed project - it was a [expletive] relief to get out of paired programming, since that project had been a constant death march, which is way more depleting when you are pairing all the time. It was (is) a nice luxury to sit in my high walled cube and code away all day. But I miss the learning curve, the sense of confidence that I understand the code from end to end instead of my own little cogs. I miss having to break from the flow of development to go find another developer to bounce ideas off of.

  82. I haven't read the book, but... by smithmc · · Score: 1


    ...I think it's worth pointing out that one of the authors, Doug Rosenberg, has his own consulting company which supports his own software development methodology. <shrug>

    --
    Downmodding is the refuge of the weak. Don't downmod, make a better argument!
  83. Ahh Extreme Programming... by Lorean · · Score: 2, Funny

    We did *that* in my first CS term. As I remember it went a little something like this: one guy does all the work while the other sits back and jerks off.

  84. Xtreme Programming! by BiggerIsBetter · · Score: 1

    Because Geeks can't snowboard.

    --
    Forget thrust, drag, lift and weight. Airplanes fly because of money.
  85. Early pair programming. Remote, no less by Animats · · Score: 2, Informative
    Bob Boyer and Jay Moore, of theorem prover and string search fame, used pair programming back in the 1970s and 1980s. They even had it working remotely. They were both using remote mainframe terminals into a DEC mainframe, and they had their screens slaved together. They also had headsets, so they could talk.

    Attempts to do this with PCs have been less successful, because synchronizing the displays tends to require huge bandwidth.

  86. Extreme Programmig worked on my team by eVarmint · · Score: 2, Interesting

    We just finished a two-month experiment with Extreme Programming on my team of six. We really made a strong effort to do it right, because we saw an advantage in going the whole nine yards, and because we also saw the instability of a partial implementation. We spent a couple of weeks up front reading the books (pro and con), debating the issues, and coming up with a plan, then we did four 2-week iterations. The result was an unqualified success. Productivity shot way up, morale improved, and we are much happier with the quality of the code. Now we are laying down plans to continue this way indefinitely. We had a few skeptics at the start of the process, especially on the topic of pair programming, but now they are strong advocates. Upper management is very happy and wants to expand the practice.

    If you are interested in XP, you must understand that it takes a lot of discipline to do it right. You will need a lot of up front time to talk about and change your habits, and some patience while you work through a new process. If you have people on your team who don't like to roll up their sleeves, or who aren't competent, XP will not fix them. If your senior people have no desire to slow down enough to mentor less experienced members of the team, XP won't work there either. The process requires a certain amount of intelligence, cooperation, and altruism. If your team is lacking in any of those areas, be prepared for failure. If your team has those qualities, hang on and enjoy the ride!

    This is the third time that I've been in an XP implementation, and each time has been a fantastic experience. It's nice that XP really works, but the best part of all is that it is just plain fun.

  87. Wow, a good review on Slashdot! by LarsWestergren · · Score: 1

    I just wanted to thank the author of the review for one of the first good reviews I have read on Slashdot. Too often reviewers are basically just listing the table of contents and adding "and I liked it" at the end.

    Here for once we have someone who goes a bit more in depth and tries to evaluate impartially the things the book discuss. Amazing!

    --

    Being bitter is drinking poison and hoping someone else will die

  88. The UML methodology by Choc+Ice · · Score: 1

    I stopped reading the review after the author described UML as a software design methodology. I'll have another go at reading it in a bit, but I've got a feeling I'm not going to agree with it.

  89. Excellent - just not a review by alex_tibbles · · Score: 1

    I'd have to disagree. I'm not saying that the review wasn't well written, it's just it's misleading to call it a book review. It's a summary of the book, and exposition of its main arguments. The reviewer agrees with the book's main thesis and has helpfully summarized it for us. The reviewer has told us very little about how good a book the book is (which is what a book review should do).

  90. Two sides to the argument by Choc+Ice · · Score: 2, Insightful

    ...if you're working on an program that will need to work with objects on several different systems (local disk, database, web, ftp) but right now you're only got the disk based story card (user stories being broken up into small tasks) you hard code everything in your program to go right to the disk. Even though you know that you will need web support, because the customer insists on it, you are not allowed to plan for that whatsoever by adding a layer of abstraction between your code and the abstracted 'object holder'. Rather, when someone needs to add web support, they will just code it right in, maybe at least out in a separate web class. It will have a slightly different interface than the disk class, since there's almost no design, no planning, and different people coding it. Then later on you will refactor the code and merge these three or four different systems, make them behave the same, and clean up the code.

    Okay, now I've used XP, and this overview seems to be both completely inaccurate and insightful at the same time.
    It's inaccurate because if you're writing something to work on all those different systems it'll be part of the system metaphor (an explicit XP practice), so wouldn't be hardcoded as described by any sane programmer - but the comment is insightful as it shows how blindly following one particular tenet (YAGNI) of XP can lead to a contradiction with another (System Metaphor).

    XP does not advocate no design, it advocates minimal design. It's a contradictory design methodology in this respect, as different people will tell you different things. If you don't like the idea of of not doing any upfront design, you can produce a system metaphor that acts as a design to keep you on course. What XP says is that you don't spend any significant time creating this design, and that there's no need for this to be a deliverable for the project.

    The thing the customer should be asking themselves in the above situation is: "How important is this disk based requirement?" If it's the most inmportant thing as the example seems to suggest, what's wrong with the programming team putting in all of their effort into getting this requirement finished first, so that the customer will have a usable system in the minimum amount of time? Or should they add interfaces for all of the other stuff they're not programming yet, which may or may not be correct when (or if) they get around to programming those other parts?

  91. The Tao of XP? by AigariusDebian · · Score: 1

    I think that all good and idealistic ideas must be viewed from the same point as the idealistic and perfectionalistic martial arts of the East. The best example coming to my mind is Aikido.
    While an experienced teacher can explain the movement of your fists like "the fall of a dry leaf stopped by a mountain spring" and you must understand it before you can do the move correctly, an inexperinced teacher will try to explain the principles in phisical, concrete examples, direct words - and these words will not be a precise description of the move making you fail to accomplish it without you acctually understanding why.
    I think that XP is an art of programming, that just had no good teacher to explain the fundamentals of the process precisely enough.
    When you learn Aikido, you go trough three phases:
    1. You learn what Aikido is and try to repeat it
    2. You find new moves that organically follow from the ones in Aikido
    3. Every move you do is Aikido whenever you want it or not.
    Only masters that have reached the third level can understand the principles of the art, but only those in the second level can teach it.
    What I see in XP is the lack of a house of 3rd level masters surrounded by 2nd level masters that could pick up and distribute their knowledge in a form pure enough for people to see the art behind XP and simple nough for them to understand.

  92. After using XP I prefer by MHewis · · Score: 1

    Scrum - http://www.controlchaos.com/

    Take the good bits out of XP
    * Rapid Development
    * Fast releases
    * Customer input
    * Clear workload for developers

    And removes some of the bad
    * Obsession with daily releases
    * Little chance for developers to put own issues or structure into product
    * Pair programming

    1. Re:After using XP I prefer by jrb3pasadena · · Score: 1

      Actually, the "planning game" practices of XP were inspired directly by Scrum. Scrum's concentration is on the project as a whole; XP's concentration is on the software team and making delivery of software reliable. I'd take issue with you about whether your first "bad" point is bad. XP sets up so that you can (not must) deliver working software at any time. Having at least one new releasable build of software every day is an excellent means to that end. (By way of example, my team at Eidogen regularly creates between three and twelve distinct releasable builds each working day.) I also would note that your second "bad" point that this is an incorrect characterization of XP. Developers are to be communicating all the time with the Customer, talking about what might affect functionality and estimates. If an issue doesn't have any effect visible to the Customer, then it's solely the developers' province. Some folks prefer the "solo" form of flow. That's fine. XP teams work in a different form of flow, meant to produce visibly meaningful results with few or no defects several times a day. Pair programming is excellent within the cluster of practices for this purpose, in my experience with several teams (XP and non-XP alike).

      --
      ---- Joseph Beckenbach lead XP tester, Eidogen Inc.
  93. Remembering Brooks Laws by BubbaJonBoy · · Score: 1

    XP, UML, Patterns and all the other cultish methodolgies cannot hope to usurp Fred Brooks' fundamental law:
    "There ain't no such thing as a silver bullet".
    BubbaJon

  94. The bigger picture by Anonymous Coward · · Score: 0

    "That brings the unique capability of the Internet to connect people with shared interests, together with the ability to perform some kind of action in the face-to-face world."

    Like the German cannibal who met and ate a willing victim he found on the net?

  95. Re:As always, mainstream exposure causes corruptio by Nygard · · Score: 1

    Absolutely agreed. That's the point I was making.

    The lower your expectations of your people, the more you fear bad results, the more process you put in place.

    Don't but bad drivers in Formula-1 cars.

    Conversely, if you have a high caliber team, the you can get by with less process, instead focusing on aligning their programming disciplines.

    Don't put champion racers in a Ford Festiva.

    Now, when you really get into trouble is when you try to take the same disciplines that let talented professionals at the right-hand tail of the bell curve go really fast and apply them to the center (or left-hand) of the bell curve.

    --
    "Genius may have its limitations, but stupidity is not thus handicapped." --Elbert Hubbard (1856-1915)
  96. Re:As always, mainstream exposure causes corruptio by Nygard · · Score: 1

    sceptre1067, you must be brilliant because I agree 100% with what you just said!

    --
    "Genius may have its limitations, but stupidity is not thus handicapped." --Elbert Hubbard (1856-1915)
  97. Re:I have this book... by Anonymous Coward · · Score: 0

    As my teacher used to say...
    Thats RONG wrong. I was strongly under the same opinion as you until I got OOP working for me. I was always of the opinion that it was a lot of extra work that didnt really pan out into useful stuff. This on top of the obvious performance hit, made me think that OO design was just stupid. After writing a few signifigant projects in it, Ill never go back. (I know Im proselytizing but I do love it.) It really speeds development in the long run simply because of the gains in maintainace of everything. If I know that no matter where I want to hit the Contacts table in a huge database app, it all goes through the objects.Contact class, its a beautiful thing. The best part is that I know everytime any of the other 5 programmers on the project want to hit the contacts table. All their interaction is also in the same class. Meaning I can change the whole programs interaction with contacts in a single place.

  98. Pair Debugging by wallyK · · Score: 1

    I have my doubts about merits of Pair Programming as described in the freely available chapter of the reviewed book.

    However, I would strongly advocate 'Pair Debugging', once the code builds and passes unit tests but does not work when integrated into the system.

    First, there is an issue of tools, say, debugging an FPGA on a board in a system. Quite few people can individually operate and effectively evaluate results of source code debuggers, Verilog simulators, ICE, logic state analyzers and scopes. So, this necessitates the obvious and often unavoidable pairing of a software and hardware engineer.

    More frequently, though, for any system that's large and old enough, one person can hardly span interaction of various components under diverse inputs, and having two or more people observing and analyzing steps leading to a failure is very productive.

    So, in conclusion, I think using 'Pair' methods is justified if knowledge and skills of the two engineers are complimentary.

  99. Synergy by boy_afraid · · Score: 1

    Yep, with all these buzzwords like: Synergy, proactive, paradigm.

    Obligatory Simpsons Quote:
    "The Itchy & Scratchy & Poochie Show"

    Myers: I have figured out how to rejuvenate the show. It's so simple,
    you egghead writers would've never thought of it! What we need
    is... a new character! One that today's kids can relate to!
    [writers look at each other, uncertain]
    Oakley: Are you absolutely sure that's wise, sir? I mean, I don't want
    to sound pretentious here, but Itchy and Scratchy comprise a
    dramaturgical dyad.
    Krusty: Hey, this ain't art -- it's business!
    -- That's the spirit!, "The Itchy & Scratchy & Poochie Show"

    Krusty: Whaddya got in mind? Sexy broad? Gangster octopus?
    Myers: No, no. The animal chain of command goes mouse, cat, dog.
    [to the writers] D-O-G.
    Weinstein: Uh, a dog? Isn't that a tad predictable?
    Lady: In your dreams. We're talking the original dog from hell.
    Oakley: You mean Cerberus?
    -- Does he drive a `Persephone'? "The Itchy & Scratchy & Poochie Show"

    Lady: We at the network want a dog with attitude. He's edgy, he's "in
    your face." You've heard the expression "let's get busy"?
    Well, this is a dog who gets "biz-zay!" Consistently and
    thoroughly.
    Krusty: So he's proactive, huh?
    Lady: Oh, God, yes. We're talking about a totally outrageous
    paradigm.
    Meyer: Excuse me, but "proactive" and "paradigm"? Aren't these just
    buzzwords that dumb people use to sound important?
    [backpedaling] Not that I'm accusing you of anything like that.
    [pause] I'm fired, aren't I?
    Myers: Oh, yes.
    -- Is that what happened to Jon Vitti?,
    "The Itchy & Scratchy & Poochie Show"

    Meyer: The rest of you start writers thinking up a name for this funky
    dog; I dunno, something along the line of say... Poochie, only
    more proactive.
    Krusty: Yeah!
    [Myers, Krusty and the lady leave]
    Oakley: So, Poochie okay with everybody?
    All: [reclining in their chairs] Yeah...

  100. Re:As always, mainstream exposure causes corruptio by jethroT · · Score: 1
    Originally, XP placed a lot of weight on continually asking yourself "Am I delivering value to my customer?" Followed by elimination of activities where the answer was "no". In other words, do more of the things that deliver value and less of the things that do not.The rest of your post is very insightful, but this sentence might have been spoken by a motivational guru on QVC. With that principle you can construct any design methodology you like. By the way, the second design principle of XP was 'Stay true to yourself' ;-).

    Sorry if that sounded too harsh, but maybe because of things like this XP is regarded by some as a religion and not a viable design method

  101. Re:As always, mainstream exposure causes corruptio by Nygard · · Score: 1

    jethroT, I understand what you mean. It does sound that way when phrased so baldly. It's almost a politician's statement -- unarguable, because no one would ever attempt to justify doing things that have no value.

    It can actually be useful, though. Consider a typical large corporation. They tend to be bloated, slow, and rigid. Why? Because people do a lot of things that are unrelated to their project.

    At a corporation I consulted for, in one week, I saw a Red Cross blood drive, a foodshare program, a concert for the employees, and an "all-hands" meeting that discussed a change in management 4 layers above all the people in the room. These took an average of 6 hours from each of the team members. None of that was delivering value to the customer, but not one of the developers on the team felt they could say "No, that doesn't advance my project". (You can definitely make a case for delivering value to other stakeholders: employees, shareholders, the community, etc. XP doesn't say that these are inherently bad, it just says they don't get the project done.)

    In a more directly connected vein (pun intended), most development project are encumbered by various enterprise initiatives that don't help the project: archaic coding standards, enterprise version control groups, enterprise data architecture groups, etc. Each of these crosscutting functions is, in theory, present to create an efficient enterprise through skills focus and specialization. But, when you combine a heavily matrixed organization with an extreme focus on efficiency, the result is ever-increasing lead times to get on that groups calendar.

    Does an enterprise data architecture group accelerate projects? It certainly can. Does it accelerate projects if you have to wait 3 weeks to get a schema reviewed, followed by 2 weeks to get the schema created? I think not.

    The wait time delivers no value to the customer. XP says to eliminate it by using a tightly integrated team, instead of a matrixed structure. That's one (windy) example.

    I would say that you could construct almost any development discipline from that premise--except that most of the ones out there weren't built that way. Further, I would say that if you constructed a development discipline around that premise, it would look a lot like one of the agile methods. Not necessarily XP, but XP's not the only agile method around any more, either.

    --
    "Genius may have its limitations, but stupidity is not thus handicapped." --Elbert Hubbard (1856-1915)
  102. Re:As always, mainstream exposure causes corruptio by jethroT · · Score: 1
    Your example actually drives my point. Unnecessary distractions like that all-hands meeting are good examples of bad management. But they are universal. No design methodolgy in existence says "Have a meeting every day where you talk about things unrelevant to everyone'.
    To put that as an achievement of XP is like saying Windows invented the GUI.

    Incidentally some of the methods of XP violate the principle (TDD for example, does a test case benefit the customer?) first to have an end result that does benefit the customer. But thats true for every other design methodology in existence.
    In the end every design method wants to benefit the customer. That a corporation has a big bureaucracy that works contrary to these goals is just the effect of reality on a theory.

    You are completely right with your critique of the schema reviews and bloated structures, but when these design principles where thought out, I'm sure everyone thought it would ultimately benefit the customer. One could argue that the principle behind XP is 'Smallest possible organisation' or something similar (don't pin me on that, I don't have the time to think of something better), but 'Do only what benefits the customer' is a catch-all for any good design principle.

  103. Unclear about which is whose opinion by jrb3pasadena · · Score: 1
    Thanks for the review. On first reading, I quit about a quarter of the way through, at the third substantive error in fact, which the authors had been informed of in reviews and feedback from earlier material over the last few years.

    A second reading shows that I might have been too hasty in turning off -- the long summary of the book might have been a simple paraphrase, reflecting only the authors' opinions and not those of the reviewer. By the end of the second reading, I'm still not sure which way to read it, so I'll give benefit of the doubt.

    My second reading also revealed several other wilful misreadings and misrepresentations that the authors had published in earlier material, and had been called on. For instance, that "XP is risky": each of the practices in fact manages, in part or whole, at least one risk which prevents software teams from delivering software. Or that "XP is good only for maintaining software": in a sense that's true, but only because the first releasable build happens immediately and it's all maintainance upgrade from there!

    Overall, I hope that the reviewer will have an opportunity to examine "Extreme Programming" further sometime later in his career. At the very least, that the negative spin by the authors on XP will not keep him from looking at other "agile" methods and practices which can benefit his team and his organization.

    --
    ---- Joseph Beckenbach lead XP tester, Eidogen Inc.
  104. traditional? what's that? by Anonymous Coward · · Score: 0

    traditional? what's that?
    A guy who works alone
    (i drink alone too).

  105. review of the review of the refactoring by dreadway · · Score: 1

    I've used XP (pieces, not the full ball of wax) in two very big, important projects and we've been successful. We didn't use all of XP because the managers, project sponsors, and some of the techs weren't comfortable moving to full-on XP. Both systems are in production.

    I haven't read the book and have no interest in reading the book. I think the book's authors and the reviewer are likely nice guys however I was put off by the 'attack mode' which rings of (1) character assassination and (2) someone else's methodology (Not Invented Here).

    Yes, in the real world of programming projects some head tech/manager dude usually is laying down the law about methodologies, technological direction, design techniques, etc. Yes, I'd trust the luminary/author who came up with those pop-Zen sayings to design and implement a 10000 tps system, shocking as that might seem after this review. Yes, getting buy-in from management to do anything in a project is extremely important.

    "Foisting" XP or anything else on unwilling or incredulous managers/workers won't succeed. That seems reasonable enough. Assuming it's all bad because some goof tells you so seems kind of overboard as well.