Slashdot Mirror


Questioning Extreme Programming

David Kennedy writes with the following review of Pete McBreen's new Addison-Wesley title, Questioning Extreme Programming. It's one of the few books which casts a questioning look at the buzzwords and concepts of Extreme Programming; read on to see how well XP fares under McBreen's examination. Questioning Extreme Programming author Pete McBreen pages 186 publisher Addison-Wesley rating 9 reviewer David Kennedy ISBN 0201844575 summary A critical but fair re-examination of all of XP.

In short:

This is bound to a controversial and widely read title -- it is a critical but fair re-examination of all of XP's assumptions and core practices. It provides a much needed comparison of XP with other, less popular, methodologies. Overall, XP emerges favourably, with one serious caveat -- the author concludes that XP is only suitable for a very narrow range of projects, and those that can fulfill all requirements probably stand a significant chance of succeeding using any of the similar methodologies. As with programming languages, there is no silver bullet -- put XP in your methodology toolbox, know when it is appropriate and only use it then.

A couple of interesting specifics:

  • The author specifically argues, and I agree, that what the XP literature badly needs is a DSDM 'suitability filter' to advise project leaders as to whether XP is for them.
  • In the preface, Kent Beck describes the On-Site Customer role as a team, and not an individual role.
Overall, this is an intriguing and well-argued book. It's based on solid, reasoned arguments, with conservative conclusions drawn based on the evidence. It's a must-read for those interested in XP and other Agile methodologies. The Extreme Programming Series

This is the 8th title in The Extreme Programming (XP) Series from Addison-Wesley, surely the most widely read series on a software methodology ever! (If that isn't achievement enough, XP also made testing sexy again. I hear that accountancy firms are looking for Kent Beck to do Public Relations work ...) For those of you who have been living under a rock for the past couple of years the previous titles are:

  • Extreme Programming Explained (Beck)
  • Planning Extreme Programming (Beck & Fowler)
  • Extreme Programming Installed (Jeffries et al)
  • Extreme Programming Examined (Succi & Marchesi)
  • Extreme Programming in Practice (Newkirk & Martin)
  • Extreme Programming Explored (Wake)
  • Extreme Programming Applied (Auer & Miller)

This new addition to the XP library feature a foreword by Kent Beck. This is important as many of the reactionary XP fan-club will not like this book -- it challenges XP, and I am delighted to see this title as part of the series. Beck admits he doesn't agree with McBreen's conclusions, but asks you to read the book and decide for yourself, conceding that the arguments are fair and reasoned. I come from a scientific background and distrust anything except wide open debate, a position many who welcome XP will surely agree with. A book challenging XP can only help persuade people to give it a go, by addressing their fears and explaining how to manage any real risk.

Check your sources

Pete McBreen is the author of the excellent Software Craftmanship: The new imperative, a 2002 title from Addison-Wesley. In it he outlines an alternative to the software factory model behind much of traditional software engineering thinking. He proposes a collaborative model with small teams, where the software coder is seen as a craftsman in constant dialogue with the customer. Sound familiar? It should, this is a cross between a methodology and book of advice for career programmers, and fits squarely within the values proposed by the Agile Alliance, and arguably popularised most by XP.

I highly recommend Software Craftmanship, and can think of few authors who are as well positioned to give an analysis of XP as it currently stands.

What is the book about?

Questioning Extreme Programming does just that -- it's the first title in the series to take a skeptical look at the rise of this popular methodology and question some of the key assumptions. Arguably there was material like this buried in Extreme Programming Examined, but it suffered from a fragmented, detailed view, due to it being a bound set of conference papers.

The author tackles XP in a fair way -- he's extremely excited by the methodology, and it's clearly in accord with his own preferred approach. What he does is tackle each of the XP tenets in turn, questioning their validity, and then moves on the compare XP to other Agile methodologies and asks how XP stacks up against the competition. He also has a look at the common mis-conceptions (from both sides) about XP, and tackles the key arguments against its adoption in the same way.

Let's have a look at the contents to give you an idea of the structure:

  • Introduction.
    XP: Hype or HyperProductive?
  • What is a methodology?
    • What do methodologies optimise?
    • What are XP projects scared of?
    • What do other methodologies consider important?
    • What is important for your projects?
  • Questioning the Core XP Practices
    • Planning incremental development
    • Truly incremental development
    • Are we done yet?
    • Working at this intensity is hard
    • Is that all there is to XP?
  • Questioning XP concepts
    • The source code is the design
    • Test first development
    • Large-scale XP
    • Is the cost of change really low?
    • Setting the dials on ten
    • Requirements: Documentation or a conversation?
    • Is oral documentation enough?
    • Playing to win?
  • Understanding the XP community
    • ReallyStrangeSayings
    • Feel the hostility; experience the joy
    • Transitioning away from XP
  • Your choice
    • Is XP for you?
    • Do you have a suitable first project?
What's good?

The whole thing. Let's start with the basics, the high standards of the XP series are maintained, with flawless editing and layout. Moving on, the author's position is admirably neutral -- he is knowledgeable about the field, and although he wants to be converted, he argues only from first principles, and only from the evidence. Similarly, at no point did I think he set up a straw man, or tackled the opposing issues in a different manner. I particularly admired the way he avoided polarising issues -- "All models are lies." -- dismissing them as unhelpful in his current investigation. (He points out that much of the fire in the XP debate has resulted from the use of deliberately polarised opinions as a unambiguous goad to further debate within the XP community. Fine within the gang, inflammatory outside.)

The structuring of the book is of particular interest -- the argument could easily sprawl, but is restrained into very short sub-sections, with each section sporting a clear list of summary bullets. As much as is practical, each challenge to a tenet or practice of XP is discussed independently. (This comes across as simple and straight-forward and you may wonder why I even mention it, but I think it's a fine piece of editing and worthy of praise.)

The sections of the book that I enjoyed most were those dealing with the SmallTalk culture that XP grew out of -- he presents an interesting analysis of why XP works within that environment but discusses how that environment is NOT typical of most development. I have some bias here due to my own experience, see below, but had to agree strongly with his contention that XP is weakest when it comes to team resourcing, and the on-site customer. In particular, he argues that while XP restores dignity and human rights to the programming team, it does so at the expense of the poor frazzled customer. Similarly, he argues that the pre-conditions for XP, in terms of the programming staff, are so high that almost any methodology could be made to succeed with that team.

Don't get the impression that this is a negative work -- it's not. Most of XP emerges intact, and I felt that the author genuinely wanted only to restrain people from adopting XP in inappropriate situations -- not to persuade people to avoid XP. In doing so, he actually protects XP from bad press due to teams failing when trying to adopt XP, them blaming XP itself, rather than their own inappropriate circumstances.

What's bad?

Er, not much. He sort of pulls in some material re Open Source early on, but fails to particularly build on that comparison, moving instead to a comparison of Agile methods in closed source circumstances. This is a feeble objection -- but really, it's all I've got this time!

Anything to declare?

I should probably give a quick sketch of my background before I finish as I am slightly biased -- most of my work has been in the telecommunications sector, where I either worked with a large code-base (legacy) or a large, distributed team (new development). In no way was I working in the XP style, although I became test-infected easily I found it difficult to even imagine how to apply some of the XP practices to my workplace.

XP changed the way I code and work, for the better, but in a large environment, with no contracting customer, and few experts on a complex domain involving simultaneous hardware development I couldn't see any way to do XP. I'm not saying what we did was good, I'll be the first to admit it was broken (hmm, and I'm unemployed now, time to go and think about cause and effect!). The key assumptions of pure XP just didn't fit the industry I've seen most of. (To be fair, McBreen would have called these projects "systems engineering" and placed them outside of the discussion.) Now that I'm seeking employment again, I'm a lot more aware of methodologies and am much keener to work within an Agile framework, as I believe that all of the methodologies, XP included, offer a much better way of developing software. However, the key point remains -- XP cannot be applied everywhere.

Lastly, I should make it clear that I received a review copy of this title from the publisher and did not pay for it. I paid for my own copy of Software Craftsmanship.

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

482 comments

  1. ESPN's Extreme programming by Anonymous Coward · · Score: 1, Funny

    I'm not a big fan of the ESPN Extreme Programming. I much prefer things like ESPN Classic or SportsCenter.

    1. Re:ESPN's Extreme programming by Anonymous Coward · · Score: 2, Funny

      Wow, a sports joke on slashdot. Now I *have* seen everything.

    2. Re:ESPN's Extreme programming by tealover · · Score: 1, Funny

      actually, what's more amazing is a sports reference that was recognized on slashdot. 95% of the people here probably throw like girls.

      --
      -- You see, there would be these conclusions that you could jump to
    3. Re:ESPN's Extreme programming by Meefan · · Score: 2, Funny

      .. and I suspect 95% of the people here are dumb enough to make a sexist remark like that in front of said girls.

      --

      ------
      http://cooltech.org
      If it ain't cool, it ain't coolt
    4. Re:ESPN's Extreme programming by Rolker · · Score: 1

      Hey! I don't throw like a girl!

      Girls throw better than me...

    5. Re:ESPN's Extreme programming by Anonymous Coward · · Score: 1, Funny

      .. and I suspect 95% of the people here are dumb enough to make a sexist remark like that in front of said girls.


      The other 5% think comments like this will allow them to meet their soulmate on Slashdot.

    6. Re:ESPN's Extreme programming by Anonymous Coward · · Score: 0

      Actually, there is a poster by the name of Ben Coates, and another by the name of Bill Romanowski.

      Slashdot might actually be able to field a decent football team :)

      Then again, there is a poster with the name of John Booty (a lousy DB with the Jets and Eagles in the 90's - one of Rich Kotite's boys).

    7. Re:ESPN's Extreme programming by Anonymous Coward · · Score: 0
      .. and I suspect 95% of the people here are dumb enough to make a sexist remark like that in front of said girls.

      And fortunately, most of them won't have the opportunity to, as they don't know any girls.

    8. Re:ESPN's Extreme programming by togofspookware · · Score: 1

      Then again, there is a poster with the name of John Booty (a lousy DB with the Jets and Eagles in the 90's - one of Rich Kotite's boys).

      What do the Jets and Eagles use databases for?
      --
      Duct tape, XML, democracy: Not doing the job? Use more.
    9. Re:ESPN's Extreme programming by kingkade · · Score: 2, Funny

      You know, that's a generalization and an insult.

      I'll have you know that I throw like a fairy.

    10. Re:ESPN's Extreme programming by psychalgia · · Score: 1

      you are a sad man indeed :)

      --

      ________________________________________________

    11. Re:ESPN's Extreme programming by Pinky · · Score: 1

      I throw like a Llama..

    12. Re:ESPN's Extreme programming by Anonymous Coward · · Score: 0

      I don't throw like a little girl, I don't throw at alll, in fact there is a throw; in my header file

    13. Re:ESPN's Extreme programming by TeraCo · · Score: 1

      And the girl from georgia played the other 5% weak.

      --
      Not Meta-modding due to apathy.
  2. sacrificial lamb by Anonymous Coward · · Score: 5, Funny

    OK, I'll take the fall here: am I the only one out there who's never heard of eXtreme Programming? Judging from the name, it sounds like hacking code on a laptop, nude in the snow. WTF?

    1. Re:sacrificial lamb by Anonymous Coward · · Score: 0

      Obviously, as an Anonymous Coward, you are taking a huge risk by asking this question.

    2. Re:sacrificial lamb by El+Pollo+Loco · · Score: 5, Funny

      man, you are not leet! My clan programs naked, in the snow, while snowboarding down the mountain with explosions going off behind us Triple X style! This we do on a daily basis. And the worst part? To get our pants back, we have to lick a metal pole! But we roXor all!

    3. Re:sacrificial lamb by dildatron · · Score: 1, Offtopic

      hah! we 0\/\//\/ j0u! w3 ar3 s0 l33t th4t we typ3 4ll 0ur c0de |/\/ l33t sp33k 4nd tr4nsl4t3 |t int0 m4ch|/\/3 c0d3 0urs3lv3s w|th n- c0mpil3r!

      --


      If you had nuts on your chin, would they be chin nuts?
    4. Re:sacrificial lamb by sg_oneill · · Score: 4, Funny

      Hey Homebake? Think youz can XP? Bah that's nuffin! Why yesterday I tweaked a 720degree Stalefish function overload with a kickflip.. ANd just the day before that I baked a varial McTwist class definition.
      Tonight L337 1nd33d!

      --
      Excuse the Unicode crap in my posts. That's an apostrophe, and slashdot is busted.
    5. Re:sacrificial lamb by Anonymous Coward · · Score: 0

      How the FUCK is this a troll? He's never heard of XP, so shoot him?

      Besides, it's a funny post. A funny way to phrase a serious question.

      Moderator assholes. Burn in M2.

    6. Re:sacrificial lamb by Anonymous Coward · · Score: 0

      Why do you post anonymously? That was the funniest post I've read in ages. I need -1s like you on my friends list.

    7. Re:sacrificial lamb by Anonymous Coward · · Score: 1, Interesting

      Is this Google elite enough for you?

    8. Re:sacrificial lamb by Anonymous Coward · · Score: 0
      OK, I'll take the fall here: am I the only one out there who's never heard of eXtreme Programming?

      It's on ESPN2, right between Drawbridge Eating from Reykjavik and Tearing Down a Wall With Your Damn Bare Hands.

    9. Re:sacrificial lamb by robbo · · Score: 2, Insightful

      Why does this post get mod'ed as Funny? And everyone replies to the question with a joke? Apparently, I have been living under a rock because I for one haven't heard of XP and I'm in the 5th year of a comp sci PhD. Have I acquired an immunity to software engineering flavors of the month?

      --
      So long, and thanks for all the Phish
    10. Re:sacrificial lamb by bns_robson · · Score: 1

      It sounds as though it might be related to Extreme Ironing

    11. Re:sacrificial lamb by almeida · · Score: 5, Informative

      I've never heard of it either. Google found this for me. You might be interested in going straight to the What is Extreme Programming page. Based on my quick look through their pages, it seems like just another buzz word for something that isn't really exciting (ooooh, listening to customers and testing throughout the development cycle!? How revolutionary!)

    12. Re:sacrificial lamb by an_mo · · Score: 1, Offtopic

      If anything, this is another proof that /. moderation system doesn't work. A post/thread with an explanation of what XP is should have been on top of the moderation raknking but I have yet to find one message or link

    13. Re:sacrificial lamb by Anonymous Coward · · Score: 0

      If you type "What is extreme programming?" into Google, the very first hit is a detailed explanation. A mediocre redundant one here would be a waste of time. Jeez, we're all looking at the world's biggest information resource, use it!

    14. Re:sacrificial lamb by burkedrane · · Score: 2, Informative

      Extreme Programming has little to do with computer science, so there is no reason why anyone in academia would find it all that interesting. It is, however, eXtremely pertinent to the science of software development, so those of us engineering in extreme environments, like games where the design and requirements change on a weekly basis, find its essential ideas and lexicon pretty cool. But not as cool as Adaptive or Agile development.

    15. Re:sacrificial lamb by Killall+-9+Bash · · Score: 1, Offtopic

      It probably has something to do with snorting a few lines, running around on stage screaming like a WWF reject, then chanting arcane mind-control mantras before a crowd of thousands of professionals trapped in a satanic IT cult.

      DEVELOPERS, DEVELOPERS, DEVELOPERS, DEVELOPERS........

      --
      "Prediction: within 10 years, Windows will be a Linux distribution." Me, 7-6-2016
    16. Re:sacrificial lamb by BitGeek · · Score: 3, Insightful


      Don't feel bad. You're not the only one-- probably less than %1 of the slashdot crowd has heard of extreme programming. After all, perl hackers and other non-programmers have no need for it.

      Slashdot is not a technology or programming site-- it is a linux fan site. Unfortunately, a surprisingly small number of linux fans are programmers.

      If you do decide to start programming (And that kid who's in his 5th year of CS had better get up to speed!) then XP is something very much worth learning, even if you put none of it into practice.

      --
      Yeah, and you guys panned the ipod too: http://apple.slashdot.org/article.pl?sid=01/10/23/ 1816257
    17. Re:sacrificial lamb by BitGeek · · Score: 1


      Meaning that computer science teaches you nothing about computer science?

      Anybody graduating college these days with a BS in CS who has not at least read one XP book as part of a class, has wasted his money and should demand a refund.

      Whether you use XP on the job or not, XP is one of the things you have to learn before you can call yourself a CS graduate-- otherwise college degrees have no value. (I believe college degrees have no value because those who teach them and set up the curriculum have never developed software in a real environment, and fancy themselves "Above" actually teaching the skills necessary to be a productive software developer. Which is why we get all these kids with BSCSs who can't engineer worth a damn!

      --
      Yeah, and you guys panned the ipod too: http://apple.slashdot.org/article.pl?sid=01/10/23/ 1816257
    18. Re:sacrificial lamb by customiser · · Score: 3, Informative

      You might find Pair Programming, 40-hour week and continuous integration a little more exciting. I'm not saying that it works or even that you should have heard of it, but a "quick look" is definitely not a good reason for rejecting it.

      Personally I find that some of its suggested methods are right on the spot while others a bit on the idealistic side. Still, I would like to try it and see first-hand how it works in a proper business environment.

    19. Re:sacrificial lamb by chromatic · · Score: 1
      After all, perl hackers and other non-programmers have no need for it.

      Pardon me? I think this is a grotesque overgeneralization.

    20. Re:sacrificial lamb by Grendel+Drago · · Score: 3, Informative

      This is an actual explanation of the rules and practices of XP, not just a page full of buzzwords. It seems to center around extensive testing and customer feedback.

      --grendel drago

      --
      Laws do not persuade just because they threaten. --Seneca
    21. Re:sacrificial lamb by CurlyG · · Score: 2

      Dude, come on - check the guy's sig - it's just another sad, starving troll. Don't feed it.

      --
      You know they call 'em fingers but I've never seen 'em fing. Oh, there they go.
    22. Re:sacrificial lamb by Anonymous Coward · · Score: 0

      If computer scientists wanted to engineer, they would have taken --

      --wait for it--

      COMPUTER ENGINERRING!

      Oh, by the way, the Rational Unified Process is XP without the stupid parts (except that 40-hour week...)

    23. Re:sacrificial lamb by ENOENT · · Score: 1

      ...XP is something very much worth learning, even if you put none of it into practice.

      ESPECIALLY if you put none of it into practice!

      That's not really fair, though. Some of the suggestions are very worthwhile. It's just that the touchstone of XP (pair programming) is a stupid idea.

      --
      That's "Mr. Soulless Automaton" to you, Bub.
    24. Re:sacrificial lamb by Anonymous Coward · · Score: 0

      It's definitely not only a page full of buzzword.

      The significant differences compared to the 'classic/normal' methodology are:
      - at the end, the customer gets what they want most of the time
      - unfortunately the programming quality (source code, etc) won't be the best / most efficient the programmers would have expected

    25. Re:sacrificial lamb by flowerbear · · Score: 1

      extreme programming involves card readers and a cdc 7700.

      richard
      ps forth never went away--just ask UPS (united parcel)

      --
      flowerbear adrift on a sea of confusion since 1958 flowerbear@phreaker.net FORTRAN programers don't eat quiche!!
    26. Re:sacrificial lamb by BitGeek · · Score: 2


      There are two classes of programmers these days. People who write html, perl, etc.

      And people who program with formal languages such as java, c, etc.

      The former never really have to learn how to program.

      --
      Yeah, and you guys panned the ipod too: http://apple.slashdot.org/article.pl?sid=01/10/23/ 1816257
    27. Re:sacrificial lamb by BitGeek · · Score: 2


      Have you ever done pair programming?

      Its not a stupid idea, especially if you put more than just pair programming into practice. It sounded stupid to me before I realized we were already doing it without thinking about it, and when we started doing it more (not all the time) it made more sense. Our group did much better.

      To call it the "touchstone" seems silly, it was only partly done by the last XP shop I worked at-- I'd say there the touchstone was test/code and the extensive use of unit tests.

      --
      Yeah, and you guys panned the ipod too: http://apple.slashdot.org/article.pl?sid=01/10/23/ 1816257
    28. Re:sacrificial lamb by chromatic · · Score: 1

      You have an odd definition of "formal". "Programming" too.

  3. done it, didn't like it by AssFace · · Score: 2, Interesting

    Just like Clinton.

    I personally prefer to be on my own. I could see how managers prefer it because it forces more work to be done and yeah, it prevents a lot of errors, from my experience.
    But I hate it - I hate working right with someone else.
    I personally would rather to just be near someone and ask them questions about code if need be, but I hate the XP experience personally.

    --

    There are some odd things afoot now, in the Villa Straylight.
    1. Re:done it, didn't like it by Anonymous Coward · · Score: 0

      I personally prefer to be on my own. I could see how managers prefer it because it forces more work to be done and yeah, it prevents a lot of errors, from my experience.

      So you prefer to be unproductive and turn out buggy code? Wow, I'm gonna go out on a limb here and say you must be an OSS advocate!!

    2. Re:done it, didn't like it by ekrout · · Score: 1, Offtopic

      done it, didn't like it
      Just like Clinton.


      He got to you, too? And all along we thought he only fscked interns!

      --

      If you celebrate Xmas, befriend me (538
    3. Re:done it, didn't like it by AssFace · · Score: 2, Interesting

      LOL - actually my code doesn't really have that many bugs. I am pretty diligent about making sure that it doesn't.
      I think instead of XP, it is much more of a benefit to instill some personal desire in your employees for the product to be good and succeed.
      And I don't personally feel that forcing them into the XP environment does anything towards that end, it just adds social stress and discomfort to those that don't like social programming - which is a large portion of the coders I know.

      I like how I got modded to a "Troll" status slashdot style - if you don't agree with something, you aren't allowed to talk about it :)

      --

      There are some odd things afoot now, in the Villa Straylight.
    4. Re:done it, didn't like it by mark_lybarger · · Score: 4, Insightful

      you really Kontradict yourself there. you state that XP makes better code and in less time, but you don't like working with other people "directly". then you say, well my code doesn't have that many bugs.

      in my experience, people who don't work well directly with other people work on software maintenance, not software development. that's where it's easier to not product bugs because there's hopefully slews of regression test suites left over from the guys who put it together.

      i'll admit that working on a team project with lots of people doesn't leave much time for reading /., but are you really missing much? to me the day is much more fulfilling...

      one key thing that i've noticed that is missing lately, and the reviewer mentioned it, is team leadership. team leaders have started jumping on this project management kick, and there's really no leadership for the teams. everyone wants to manage, manage, manage. i'm of the thought that a little leadership and the project will manage itself (though the teamwork).

    5. Re:done it, didn't like it by AssFace · · Score: 2, Interesting

      I suppose it depends on what you are writing.

      on the side I own my own financial analysis company and write all the software for that.

      in terms of where I work day to day, I currently program games and have worked in the telecom industry in the past.

      to say my own code never has bugs in it is out and out lying - everyone's code has bugs in it. but I really don't have that many - I am pretty good about writing it well.

      I find it interesting how people on here get so inflamed when someone states that they don't like something. The article mentions XP, I mention that I'm not a personal fan of it, and then state the reasons why.
      Then people come in and immediately point out that I am obviously an idiot for not thinking the way they do, which is in the way of the main article.

      All I'm saying is that I prefer not to program in the XP environment. I agree that if it is done well, I've seen it reduce the number of bugs, and yes, you can get a lot done in the amount of time allotted to it. So on paper, it looks wonderful to a manager.
      But to a person sitting there programming it, or rather, I should say "to me sitting there programming" it sucks. I HATE working with other people because I end up getting stuck with the brunt of the work, or teaching some newbie how to do it, and then get none of the credit.

      If I'm going to be writing code that is good, I am selfish and want the credit for it.

      Does that mean XP is somehow invalidated because I said that? No - I was just stating that for me, and what I do, I don't like it. I find it too stressful, and I dislike the close interaction that it needs for it to be successful.

      --

      There are some odd things afoot now, in the Villa Straylight.
    6. Re:done it, didn't like it by Dang1ingPtr · · Score: 1

      i agree - the freebsd programming structure is a good example of this

  4. XP doesn't sucks by Anonymous Coward · · Score: 0

    Hey, a like XP ... i use it, it brings results to me.

  5. Working in pairs is a bad idea by Anonymous Coward · · Score: 0, Flamebait

    The time that is used up when the better programmer is slowed down does not get repaid through gains in productivity of the pair. The slower programmer will simply drag the programming pair down.

    Even pairing two good programmers results in no gain in productivity. While they are wasting time coordinating with each other, they could be separately making large programming progress.

    The collaborative process is inherently worse than the distributed process. Look at the quality of Windows vs. Linux. Windows is developed collaboratively with meetings and close contact among the programmers. Linux is developed in a distributed process where anyone with a clue can make significant contributions to the project. One is a steaming pile of horse shit. The other is a robust, stable solution for the computer space.

    1. Re:Working in pairs is a bad idea by crazyphilman · · Score: 4, Interesting

      Didn't this get addressed in the old file "The Tao of Programming"?

      (to paraphrase, since I don't have the original text handy):

      A manager approached a programmer and asked how long it would take to build an important project. The programmer said, "Six months."

      The manager said, "that's too long. What if I assigned two programmers to it?"

      "Then the project will take a year."

      "That's terrible. I'll give you four programmers!"

      "Two years."

      "Aigh! I'll give you a hundred!"

      "Then the program will never be completed."

      Dig?

      --
      Farewell! It's been a fine buncha years!
    2. Re:Working in pairs is a bad idea by thasmudyan · · Score: 5, Interesting

      (I can see why you posted AC, because you would likely have been modded down.) Anyway, your observation matches my experience: at our shop we tried pair programming and it not only resulted in a fair slowdown, there were also other effects that we noticed:
      - the pairs spent a lot of time talking to each other about off-topic things.
      - it lead to the formation of "expertise" domains, where one developer would do a specific task because he was treated as the expert, when the other just sat nearby and stared.
      - the number of bugs was not significantly reduced
      - bad design was not eliminated

      So what we do know is, we build small groups of programmers and give them a modular task. They can do as many meetings and talking and planning as they like, but then they distribute the work amongst themselves and get it done alone. The code is then later reviewed by a "review partner" from the same group. It works nicely!

    3. Re:Working in pairs is a bad idea by Anonymous Coward · · Score: 1

      I was involved in pair-programming for one part of a much larger project a few years back. It worked very well for THAT task on THAT project for THOSE people (I was one of the two).

      The rest of the project was a standard RAD/DSDM build.

      It is one technique of many for reducing bugs and increasing productivity. Don't assume that it will never work in any circumstances or that it will always work for all circumstances.

    4. Re:Working in pairs is a bad idea by jbrownc1 · · Score: 1

      I've always interpreted working in pairs to mean that the programmers do frequent code reviews of each others work. They can be working on different areas, but are constantly getting feedback on their code, more frequently than with a formal code review.

      I don't buy the blanket statement that "the collaborative process is inherently worse that the distributed process". In fact, the distributed process requires significant amounts of collaboration and communication in order to produce a decent result. You equate collaboration with meetings, which is not correct. Collaboration is people working toward a common goal. Badly run meeting or lousy collaboration will produce lousy results, no doubt. However, the world is full of great collaborative projects, many of which are distributed.

    5. Re:Working in pairs is a bad idea by angel'o'sphere · · Score: 2, Interesting

      And how long exactly did you work in pairs?

      I mean, you are very convinced that it does not work: the slower on drags the pair down

      I get it now, you tested it and While they are wasting time coordinating with each other is just becaue one was using the keyboard and one the mouse?

      Did you ever wonder why every commercial aircraft of a certain size has a captain AND a co pilot?

      Because the co pilot might realize an error or a danger the pilot did not realize.

      Same for programming in pairs. One person is more the organizator, planner, black board, defect and error finder while the other one codes.

      How many compiler errors do you usaly correct after a compiler run? How long does it take to get 10 lines changed/eddited/added and compiled successfull?

      How long does it take to get 10 lines into production?

      And furthermore: what is more productive?

      A pair creating 100 lines of code distributed via 3 classes in one day and getting it into production another day or having to single programmers coding 200 lines of code where 50 lines from each one are similar to the other ones code resembling the same concepts expressed by different people?

      Now you have 200 lines to test, to maintane to debug, to refactor to zip compress and install.

      Please stop bashing something you have not at least used/applied for a couple of years, and don't call yourself an expert if you have not used it at least for 10 years.

      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    6. Re:Working in pairs is a bad idea by Anonymous Coward · · Score: 0

      One is a steaming pile of horse shit. The other is a robust, stable solution for the computer space./i?

      What? Are you calling Linux a steaming pile of horse shit?!?? How dare you?!!!

      Incidentally, in developing Win2k they used a good deal of the "distributed" work that you described. Its a little hard to do "collaborative" work when you have 600 developers working on something, as they did with Win2k.

    7. Re:Working in pairs is a bad idea by Anonymous Coward · · Score: 4, Interesting

      The time that is used up when the better programmer is slowed down does not get repaid through gains in productivity of the pair. The slower programmer will simply drag the programming pair down.

      I've been involved with pair programming for about 2 years now, and while we don't do full XP style development, it has been extremely beneficial. We are both expert programmers, but I do all of the typing. The benefits are the ability to have conversations about issues the moment they are encountered. Rather than coding a workaround or the first thing that comes to my mind, we discuss it and the results are spectacularly better. We decide upon a solution and code that, generally much better than what someone would come up with alone. Ideas are questioned and assumptions are challenged.

      He is also able to be giving me a constant just-in-time code review. We catch dumb mistakes that the compiler wouldn't, simply by having more eyes looking at the code. When writing test cases, we both come up with test scenarios that the other hadn't considered... as a result, the test suite is far superior to what it would have been.

      Additionally, working in pairs means that more than one person knows the code. This is good for lowering the "bus count". (That is, how many people can get run over a bus before your project is seriously in jeopardy.) With more people understanding the code, I can go on vacation without worry of a critical bug being discovered, and trying to tell them how to fix it from a phone halfway across the state.

      Yes, it does slow us down a bit, but I wouldn't consider it a waste whatsoever. It's an incredibly bug-free, totally reliable system. That means little to no time wasted trying to figure out crashes. The time is more than made up for when you consider debugging time.

      My experience with non-paired programming does not have as good of results. Even if you threw out everything else about XP, the testing and pair-programming have been the two most valueable ideas it offers.

    8. Re:Working in pairs is a bad idea by Anonymous Coward · · Score: 0
      Don't assume that it will never work in any circumstances or that it will always work for all circumstances.

      So, it MIGHT work and no-one knows why or when.

      A bit like herbal remedies and alternative medicine, eh?

    9. Re:Working in pairs is a bad idea by Anonymous Coward · · Score: 0

      It looks like you have very bad management practices. Maybe you should sort them out before your methodologies.

    10. Re:Working in pairs is a bad idea by codehoser · · Score: 2

      Coding in isolation is a bad idea.

      The problem is that the "better" programmer you're talking about is often not the "better" programmer at all; he just thinks he is.

      The programmers that are actually worth something are the ones that try to spread their knowledge to their teammates to improve everyone's efficiency.

      They're also the ones that recognize pair programming as a way to share that knowledge, and also to get feedback about what they are doing wrong, or could use improvement in.

      The result of all of this should be a team that works well together and uses the best practices to their advantage, rather than getting slowed down (in isolation) by the not so good practices.

      Regardless of whether or not the "best practices" for that team end up being XP practices, I can't believe you'd advocate closed-door isolated programming as a reliable means for the production of high quality code.

    11. Re:Working in pairs is a bad idea by Chris+Burke · · Score: 3, Insightful

      Did you ever wonder why every commercial aircraft of a certain size has a captain AND a co pilot?

      Because the co pilot might realize an error or a danger the pilot did not realize.


      And missing an error in the plane is a tad bit more important than in a program. And it's not like if the copilot could go fly -another- plane instead of co-piloting that the airline would get any benefit. They don't get more money for being able to fly more planes.

      How many compiler errors do you usaly correct after a compiler run? How long does it take to get 10 lines changed/eddited/added and compiled successfull?


      Far, far less than 50% of my time. For each hour I spend coding, only a few minutes will be spent fixing compiler errors.

      Anything less than 50% means that XP is a loss, not a gain.

      A pair creating 100 lines of code distributed via 3 classes in one day and getting it into production another day or having to single programmers coding 200 lines of code where 50 lines from each one are similar to the other ones code resembling the same concepts expressed by different people?


      Forget that lines of code are a horrible method of measuring productivity, and the slanting assumption that 1/2 of each programmers work would be redundant. Actually, don't forget that. If you can't divide work in such a way that your programmers aren't doing more than half non-redundant work, you have problems XP won't solve.

      But anyway -- the question is which is more efficient. While I believe that with XP the two-person programming unit is more efficient than a single-person unit, that isn't enough. If the increase in efficiency isn't more than 100%, then you would be better off having the programmers work separately.

      Please stop bashing something you have not at least used/applied for a couple of years, and don't call yourself an expert if you have not used it at least for 10 years.

      I have a new programming method. I call it Jabbing a Stick into Your Eye. Don't knock it until you've tried it for a few years.

      Thank God the rest of us can recognize a bad idea without doing it for years first.

      --

      The enemies of Democracy are
    12. Re:Working in pairs is a bad idea by Anonymous Coward · · Score: 0

      The time that is used up when the better programmer is slowed down does not get repaid through gains in productivity of the pair. The slower programmer will simply drag the programming pair down.

      You've obviously never worked in a pair programming environment. The business benefits of knowledge-sharing alone outweight any slowdowns. The palpable energy is at a higher level, and it's absolutely exhausting for both because more work does get done in the end.

      You should try it before you theorize about it. I do it a few times a week and love it.

    13. Re:Working in pairs is a bad idea by MikeJ9919 · · Score: 1

      Your analogy is flawed. While you address the difference between Windows and Linux, you fail to see what really makes Linux more reliable than Windows: listening to the users, rather than the bottom line. Code contributions are made and accepted on the basis of their quality and whether they add critical functionality. Windows code contributions seem consistently to be included because they implement the snazziest new feature, regardless of the stability and reliability of the code. A more accurate picture of the value of XP would be in the practices of the NASA through (I believe) the Goddard Space Flight Center Development Team. They produce a complex, but robust and almost flawless piece of software only because they have constant interaction between programmers, and constant feedback communication to which they actually listen.

      Another issue is responsibility. Microsoft has, I am certain, become desensitized to security issues, regardless of their "reliable computing" initiative. Priority is not given to fixing old bugs (except for, apparently, a few months in the entire existence of the company...because we all know it took the OpenBSD team just a few months to vet all that code, right?) In the open-source community, you are judged on the quality of your code. It is similar at Goddard. Competitions are held for the most bug-free code, and teams of programmers fight it out trying to write bug-free code and trying to find and exploit bugs, respectively.

      So, with all due respect, I must disagree with your assessment that distributive is inherently better than collaborative.

      -Mike-

    14. Re:Working in pairs is a bad idea by Sven+Tuerpe · · Score: 4, Insightful
      Did you ever wonder why every commercial aircraft of a certain size has a captain AND a co pilot? Because the co pilot might realize an error or a danger the pilot did not realize.

      I don't think that's a useful comparison. Aviation is quite different from programming. In particular,

      • Flying is a real-time task. There is nothing on the flight deck the pilots could defer until after lunch.
      • An airplane, when airborne, is a closed system. You cannot bring in new staff if you are short on human resources for some reason.
      • Flying is a highly interactive task. The airplane is interactive, the radio is interactive, the airspace is interactive, the airports are. Programming is done in the head, then written down and tested.
      • Flying is pretty complex in some phases of the flight (take-off, landing). Controlling the plane, changing its configuration, navigation, radio, congested airspace, etc., and all in parallel, are just enough work to keep more than one pilot busy.

      So there are more reasons for having two pilots than your simple explanation suggests. Not too long ago, an engineer in addition to the two pilots was standard in commercial jet liners. Perhaps we should introduce triple programming, with one person doing all the typing and the others the actual programming?

      Also don't overestimate the gain of having more than one person involved for safety. There are countless reports of social problems within the flight crew contributing to fatal accidents. Some captains do not listen to their co-pilots, some co-pilots don't dare speaking up against their caiptain even if the captain is wrong, and even a crew of three might forget to check the altimeter while trying to investigate a problem with the landing gear. Not to mention communication problems between crew members, distraction by crew members, etc.

      --
      http://erichsieht.wordpress.com/category/english/
    15. Re:Working in pairs is a bad idea by Anonymous Coward · · Score: 0

      And exactly HOW are those things management-related???

    16. Re:Working in pairs is a bad idea by oliverthered · · Score: 1

      I think you seriously out of context

      --
      thank God the internet isn't a human right.
    17. Re:Working in pairs is a bad idea by brickbat · · Score: 1

      Windows is developed collaboratively with meetings and close contact among the programmers. Linux is developed in a distributed process where anyone with a clue can make significant contributions to the project. One is a steaming pile of horse shit. The other is a robust, stable solution for the computer space.

      And the source for your trenchant analysis of Microsoft's programming methodology is . . . ?

      The truth is, you don't know. Neither do I. But I'm highly amused by your logical leaps and bounds. Your assessment of Windows as "a steaming pile of horse shit" is your sole assertion to conclude that pairs programming must lead to bad product.

      This sort of idiocy is precisely why Linux and open source advocacy fails to convert more developers and end-users. Any methodology is capable of producing bad code; the primary advantage of distributed development is that such code is exposed more quickly and fixed promptly.

      Next time try to apply some reason to your arguments.

    18. Re:Working in pairs is a bad idea by rossifer · · Score: 1

      The SEI (Software Engineering Institude, Carnegie Mellon) TSP (Team Software Process) research numbers indicate that two good people workinmg together will spend 15% less time writing fully tested code than those same two developers working independently. This number does not just count the amount of time spent in the coding phase, but the total time spent getting the code to work.

      The big gain comes with the automatic code review which will dramatically reduce the number of errors introduced during the coding stage (that later have to be removed during compiling, testing, and after deployment) and improves the tests by providing another perspective who will suggest test cases that the other would not have thought of alone. The earlier these things happen the better. With pair programming, they're happening immediately.

      Finally, there's a social aspect to pair programming that keeps the intensity up. If you're allowed to go off to your desk and do your work alone, most people will take lots of mini breaks, read a little slashdot, take care of a few bills, etc. With pair programming, you're forced to respect another person's time and that directly encourages better time management, even from developers who don't have good time management.

      Don't pretend that you can spend all day doing pair programming, it's exhausting. But if you treat it like a series of one-on-one meetings and make time between pair programming sessions to take care of other things that need doing, it works amazingly well.

      Then, you also get cross training issues. The junior codes, the senior sits back and helps them become familiar with the system and getting things done in it.

      Now, there are ways to do pair programming badly. One of the worst is senior develops, junior sits back bored to tears (in Senior/Junior pairings, the Junior developers must be coding most, but not all, of the time). Also, big differences in typing speed can cause hair pulling and destroyed nerves, so anyone can't just pair with anyone on most teams (though this is a good excuse to get typing training for slower team members).

      In the end, however, pair programming is supported by real world numbers. If you have a chance, take a PSP (Personal Software Process) class. During the class, much of what seems like foolishness will become wisdom.

      Regards,
      Ross

    19. Re:Working in pairs is a bad idea by Anonymous Coward · · Score: 0

      Linux IS NOT a total steaming pile of horse-shit, it's mostly a steaming pile of horse-shit.

    20. Re:Working in pairs is a bad idea by Anonymous Coward · · Score: 0

      I'm not clear here. Which one is the steaming pile of horseshit. The one with "many eyes"?

    21. Re:Working in pairs is a bad idea by Coz · · Score: 2, Insightful

      And missing an error in the plane is a tad bit more important than in a program.

      WRONG!

      You have no way of knowing what other people are programming, but buddy, if you miss some types of errors in some types of programs, Bad Things Happen. Many of the moving things in the world are fly-(or drive-) by-wire - what do you think is figuring out "for this input, do that output"? A program.

      Quick example - the first Ariane 5 blew up due to untested software and hardware reuse - they took a piece of equipment that worked fine on the Ariane 4 series, stuck it on the 5, and didn't test it throught the full flight envelope - but a software design decision that worked on the A4 (not to bounds-check certain values) was invalid on the A5 (you COULD get that many bits of the values on that rocket) and when it happened, the software said "It's gotta be bad hardware! Turn it off!" and swapped to the redundant module - which was busy locking up with the same error. Boom.

      Now look at the millions of lines of software in the Boeing 777. The microcontroller in your grandmother's pacemaker. The computer-controlled milling machine that shapes the turbine blades of jet engines.

      And it's not like if the copilot could go fly -another- plane instead of co-piloting that the airline would get any benefit. They don't get more money for being able to fly more planes.

      No, he'd get laid off. That's economics. Airlines don't want spare bodies getting paid salaries - if they could train chimps to fly, and the FAA would approve, they'd do that.

      Lines of code may be a horrible way to measure productivity, but it's very hard to get accountants to believe in "function points".

      I agree that XP isn't as efficient as "normal" programming when both programmers are experienced - what I've seen work in practice is the use of XP (adapted slightly) as a training ground, where inexperienced personnel are combined with experienced personnel to cross-train. It works both ways - you can have a wily old Unix coder sentenced to work on MFC sitting next to a kid who's only done Visual Basic, and both will learn a lot, and be more productive as a team than either or both separately. It's a matter of chemistry as much as management.

      But then, that's just an opinion. It matters little.

      --
      I love vegetarians - some of my favorite foods are vegetarians.
    22. Re:Working in pairs is a bad idea by crazyphilman · · Score: 2, Interesting

      Context? Articles written by convention attendees? ;)

      Ok, ok, seriously. I don't know; the point of the original joke was that one programmer working alone can control his design and work quickly, and that too many cooks spoil the broth, right?

      Well... If I have to work closely with someone in a partnership, then I'll have to compromise with him on every issue in which we differ. Reaching those compromises will take time and result in a mediocre product. Arguing over design philosophy will take additional time. Shouting matches over which widget we're going to use this week will take up more time and annoy others. It would be much easier and cleaner if we were each given our own independent modules to write, with a contract laying out the interface we have to follow, wouldn't it? Instead of teams -- distributed, independent development.

      Sort of like the programmer telling the manager, six months if he works solo, a year if he has a partner, and so on.

      But, you're right; I dropped it in out of context. Still -- you have to admit, it's a killer description of a fundamental truth.

      --
      Farewell! It's been a fine buncha years!
    23. Re:Working in pairs is a bad idea by Chris+Burke · · Score: 2

      You have no way of knowing what other people are programming, but buddy, if you miss some types of errors in some types of programs, Bad Things Happen.

      No shit. But if you're programming that type of thing, you know it, and that's completely separate from the issue of whether XP actually increases programmer productivity.

      No, he'd get laid off. That's economics. Airlines don't want spare bodies getting paid salaries

      That was exactly my point. Pilots aren't programmers, so the doubling-up of pilots in airplanes is irrelevent to the discussion.

      Lines of code may be a horrible way to measure productivity, but it's very hard to get accountants to believe in "function points".

      I've always liked the productivity measurment "accomplishing goals". But I'm old-fashioned like that. :)

      what I've seen work in practice is the use of XP (adapted slightly) as a training ground

      Yes, that makes sense. Actually, some people who work near me did that when one was leaving the job and another was picking it up.

      Which seems to be what the book says -- there are specific cases where XP is good, but it isn't something to use across any (or even many) situations.

      --

      The enemies of Democracy are
    24. Re:Working in pairs is a bad idea by Tablizer · · Score: 1

      Being a geek, I cannot focus on social interaction and development at the same time. IOW, I can't talk and program (well) at the same time. (I think I got the gum thing down, though :-) Talking and social interaction take up too much of my CPU cycles. Therefore I think code reviews of some sort are probably a better thing for many geeks rather than have a distraction sitting next to you. (If she is a sexy little minx on the other hand, then perhaps I won't give a f*ck about productivity but won't care. We need those kinds of perks to motivate us :-)

    25. Re:Working in pairs is a bad idea by jcr · · Score: 2

      Look at the quality of Windows vs. Linux. Windows is developed collaboratively with meetings and close contact among the programmers.

      Sorry, but you're not taking into account the quality of the coders in question.

      -jcr

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    26. Re:Working in pairs is a bad idea by smileyy · · Score: 0, Troll

      How do you figure out what the interface between your modules should be. Nearly all of the time, you're not going to find the correct interface until you're nearly done with the modules. Along the way, you're going to have to do something awful like:

      • Compromise with him on every interface issue on which you differ, taking time, and resulting in a mediocre interface,
      • Argue over interface design philosophy, taking up additional time.
      • Have shouting matches over what the interface contract should be, taking up even more time, and annoying others.

      To be honest, if this is how you work with your other programmers, one or both of you should be fired. No methodology is going to save you.

      --
      pooptruck
    27. Re:Working in pairs is a bad idea by crazyphilman · · Score: 3, Interesting

      Wow, you got nasty fast.

      So, you would like to know how a team should figure out what the interface between functional modules of their system should be?

      Here's what worked for my team (Yes, I was the team lead, and, no, you're wrong, no one was fired, in fact the company took us to Atlantic City and then, dinner, to thank us for the work we did).

      First, the team lead comes up with an overall design. He discusses the overall design with the team in a brainstorming session, and improvements are incorporated in the design. There may be arguments, but they're limited to this initial speccing out session.

      The project is broken up into modules, and each module is broken up into function calls. The parameters and the return values for each function call are then agreed upon. You might say, "function foo will take three strings, fooey, hooey, and spam, and will return a properly formatted URL as a string." The programmers each take the modules they are most interested in. People agree on the overall plumbing, then go their separate ways with their modules, to code them without interference.

      As each module is completed, it is integrated with the greater whole by the team lead. Debugging is done with driver programs and function stubs, and everything is separately unit tested. Programmers are responsible for their chunk of the system, and its interface. They don't have to put up with a lot of baloney like having to justify what they're doing to a partner who's looking over their shoulder. The overall design is handled by the team lead, who keeps an eye on how the individual modules are going together.

      Modules can be built by internal staff, or by outside agencies. They can even be purchased and just integrated in. The point is that everything is modular, and everyone is responsible for his/her chunk, without interference.

      Overall, this results in the least amount of argument, and the fastest overall forward progress because everyone is working in parallel, simultaneously. Projects can be completed very quickly at minimum expense if everyone pulls their weight.

      I think that my point was that whenever programmers have to collaborate on a single stretch of code, they will inevitably disagree on implementation details and algorithms, and that this will lead to unproductive debate that will bog down a project. You missed the point entirely. For any given piece of code, there should be one programmer who writes it as well as he can without interference.

      My joke about the Tao of programming was just a joke. But the basic idea is valid. Too many cooks spoil the broth. So you have one cook doing broth, another doing steak, another doing salad... And, the restaurant owner or head chef determines the menu.

      Respond if you must. But I have said all I wish to say. You're too judgemental for my tastes.

      --
      Farewell! It's been a fine buncha years!
    28. Re:Working in pairs is a bad idea by Anonymous Coward · · Score: 0

      You are obviously a very fluid writer, and not too bad at bragining either. I should imagine that you other skills have suffered because of this, though most mangers wouldn't notice and would probably take you out to lunch.

    29. Re:Working in pairs is a bad idea by aWalrus · · Score: 1
      We decide upon a solution and code that, generally much better than what someone would come up with alone. Ideas are questioned and assumptions are challenged.

      In the place I used to work, we started doing XP and found the mentioned drawbacks soon (one programmer slows down the other one, etc.). After a while, we reverted to programming different areas of the system each. But when we had to program parts of the system that intersected modules by different programmers, we always held developer meetings to determine the best implementations, and often programmed those in pairs (of the affected developers). We found that to be an efficient method, since it allowed for specialization and also provided a good introduction to each module for extraneous developers (when in pair programming, one usually kept asking about the functions and variables the other one was using).

      I think this is something of a hybrid method.

      --
      Overcaffeinated. Angry geeks.
    30. Re:Working in pairs is a bad idea by atomly · · Score: 2, Interesting

      We had the exact opposite happen, actually. I was against the idea of XP when we first started using it at my previous company, but once we got into the swing of it, I grew to love it. It sounds like you guys weren't actually sticking to the XP very well.

      You should have a lot of problems with pairs getting off-topic- that's the reason you have a coach. If your pairs are spending their time talking and going over estimates, somebody should step in. You should be having regular meetings to discuss estimates and figure out what will and won't get done, so I don't see how people can just go over like that.

      You shouldn't grow expertise domains because two people are working on any given thing at once. If you're pairing with somebody and they start doing things that you don't understand without talking to you, you should stop them (and I don't see how non-XP processes would've done any better for you in this situation) and ask to drive so that they have to explain it to you while you code it.

      Our bugs were significantly reduced because we always had more eyes designing, writing and looking over code. It's important that you not let people just go off and write one component over the course of two months or something. You should be focusing on small components done on a short schedule and constantly rotating people so that there's no code ownership.

      Also, were you not doing good unit testing? That alone should bring your bugs down significantly.

      It really sounds like your new system is just XP-lite... If you really stuck to XP I think it would save you a lot of time (no need for scheduling meetings and reviews) and get the same end results.

      Another thing we tried at our old company was "demos" at the end of every phase (phases were two weeks) where we had to show and explain to the rest of the dev team what we coded that phase- this greatly reduced bad design and was akin to your peer reviews, but we just gathered up the whole dev team and spent a morning doing it. It sounded like a waste of time but it significantly helped, because everybody understood how every component of the system worked.

      --
      -- atomly :: atomly(at)atomly(dot)com :: http://www.atomly.com/
    31. Re:Working in pairs is a bad idea by smileyy · · Score: 1
      I think that my point was that whenever programmers have to collaborate on a single stretch of code, they will inevitably disagree on implementation details and algorithms, and that this will lead to unproductive debate that will bog down a project.

      I guess I'm glad I don't work with people like this. To me, those people suck at life, or at least, suck at what I think is an essential part of their job.

      Split-the-functionality-up-into-modules-with-defin ed-interfaces sounds nice, but I've never found it to work in practice. Maybe my co-workers and I suck at our job (I don't think we do). But in my experience with software development, design of that sort that is specified ahead of time will change sufficiently enough that it's not worth putting together in the first place. Collective code ownership and evolving design allow those changes to easily happen.

      --
      pooptruck
    32. Re:Working in pairs is a bad idea by oliverthered · · Score: 1

      Try putting 'and with your management it would take....'

      I havn't read the book, but my ex boss didn't and took that quote as gospal, he was of corse a crap manager.

      100 people on a 6month project and you'd find two of those people have sufficient knowlage and skills you'd get the project done in 4months while the other 98 do nothing.

      So try again,

      How long will the project take?

      6 months,

      And if there are 2 people on the project?

      [with your management] a year.

      And 10 people? [puts hand down trousers and scratches]

      [you don't get it do you?] 4 years..

      --
      thank God the internet isn't a human right.
    33. Re:Working in pairs is a bad idea by crazyphilman · · Score: 2, Interesting

      Clarification of the central paragraph:

      I should have known better. Someone is already judging me based on paragraph II, so I'd like to state more specifically what was meant. Jesus, I should have known better.

      Ok. It's my opinion that a solid design can best be reached by either one person working alone or a team lead who handles the overall design and breaks it up into subtasks for his team to handle.

      It really comes down to what sort of political system you follow. If everyone is equal and there's no one directing the action, the result is anarchy. If there's centralized leadership, and everyone is doing their job and staying out of everyone else's hair, the result is harmony.

      This lines up very neatly with system design.

      A programming team where everyone's working on the same code is going to end up arguing about just about everything. Debugging is going to be a joke; nothing will be accomplished. Similarly, programming in pairs with one person coding and the other mouthing off is going to drive everyone crazy.

      The basic idea I proposed was what has worked for me in the past: a central team lead breaks up the project into component parts, and programmers select the parts they want to complete. The group agrees on the plumbing and then scatters to do their work, everyone working in parallel. As each chunk gets completed, it is provided to the lead for integration. Chunks are unit tested with driver programs and function stubs.

      the IDEA is, programmers end up working independently, following an agreed upon interface, and everyone can be happy and get along. Other benefits include:

      1. Each module has a consistent coding style throughout.

      2. Each programmer is responsible for his/her own module, so over time, they can respond to bug reports and so on.

      3. Programmers can choose the algorithm they think is best, without having to sit around jawboning with their "partner" about whether this or that widget is the best to use. No one gets stressed out, and everyone is happy.

      Anyway, we're getting away from the point. The point was, "too many cooks spoil the broth". So, the head cook has one cook doing broth, one cook doing the roast, another doing salad and so on. And, everyone can relax and just cook, instead of having to argue about whether they should add once pinch of salt or two.

      --
      Farewell! It's been a fine buncha years!
    34. Re:Working in pairs is a bad idea by frank_adrian314159 · · Score: 3, Informative
      The time that is used up when the better programmer is slowed down does not get repaid through gains in productivity of the pair.

      Actually, check out this paper for an experimental that shows that the extra time you spend in pairing will increase the quality of the resulting code. So you have a choice: program alone and get buggier code faster, or pair and get less buggy code a bit more slowly (but the quality gains are larger than the speed loss).

      --
      That is all.
    35. Re:Working in pairs is a bad idea by JasonAsbahr · · Score: 1

      Another thing we tried at our old company was "demos" at the end of every phase (phases were two weeks) where we had to show and explain to the rest of the dev team what we coded that phase- this greatly reduced bad design and was akin to your peer reviews, but we just gathered up the whole dev team and spent a morning doing it. It sounded like a waste of time but it significantly helped, because everybody understood how every component of the system worked.

      Absolutely! This overcomes one of the biggest problems working on big teams, too.

    36. Re:Working in pairs is a bad idea by crazyphilman · · Score: 2, Interesting

      "You are obviously a very fluid writer, and not too bad at bragining either. I should imagine that you other skills have suffered because of this, though most mangers wouldn't notice and would probably take you out to lunch."

      That's very nice of you to say, but I don't think that being a good writer and being able to bargain skillfully automatically means that my other skills suffer. Balance is important to me. I may spend most of my time programming, but on the side I keep up with mathematics, a little physics, literature... It keeps my mind sharp and prevents burnout.

      As for managers taking me to lunch, well, I'm afraid that I'm not a particularly social person. I tend to keep to myself. Besides, I'm somewhat nervous about associating with managers. When managers decide they like you, they generally tend to try and make you into a manager as well. This reminds me a little too much of count dracula. He tried to promote people HE liked, too... So, I generally try to be invisible and avoid managerial notice.

      --
      Farewell! It's been a fine buncha years!
    37. Re:Working in pairs is a bad idea by crazyphilman · · Score: 1

      "I guess I'm glad I don't work with people like this. To me, those people suck at life, or at least, suck at what I think is an essential part of their job." -- Smileyy

      Again, you're being rude. You arrogantly judge others, and look down on them without even knowing them. Your arrogance is startling; you must be very young.

      I won't get too deeply into this conversation other than to point out that your approach to programming (typified by the comment "design of that sort that is specified ahead of time will change sufficiently enough that it's not worth putting together in the first place") reveals a very thin knowledge of the subject matter. You should read a few books and reevaluate your approach.

      --
      Farewell! It's been a fine buncha years!
    38. Re:Working in pairs is a bad idea by smileyy · · Score: 3, Insightful

      Really though...all else being equal, is it better to have a company full of developers who can cooperate, or a company full of developers who can't? You've got to be a goddamn moron to pick the former.

      As for the design part of things...this is just my experience successfully using XP for real business software development: Do you need design? Yes. Do you formal design? No. Do you need to design everything ahead of time? Absolutely not. XP came about in part because enough people found that BigDesignUpFront just doesn't work well enough.

      As for my tone...this is some of the nicer stuff I post on Slashdot. Karma to burn.

      --
      pooptruck
    39. Re:Working in pairs is a bad idea by WallyHartshorn · · Score: 1

      Re: "While they are wasting time coordinating with each other, they could be separately making large programming progress."

      Perhaps you've misunderstood the concept. They don't do any coordinating with each other because they are both working at the same machine, side-by-side. There's no need to coordinate with someone who saw every keystroke you typed (and vice versa).

      The theory is that the two programmers discuss what they are doing as they are doing it, taking (hopefully) the best idea that the two of them came up with for each step of the process. Two sets of eyes should catch stupid errors more easily, and two brains keep them from spending time wandering down entirely the wrong blind alley.

      That's the theory anyway. I've never been involved in an XP project, so I've no idea how well it works.

    40. Re:Working in pairs is a bad idea by olethrosdc · · Score: 2

      Duuuuude, I worked on combination of experimental code and legacy code that we had not written, with still-under-development hardware that I only had a crappy datasheet for and a completely new suite of remote tools with a truckload of documentation. It was all horrrrrilby slow - looking at docs, plugging boards, typing, debugging - Then I managed to pull some guy off a project to come and work with me. Speeeed! One could browse through the docs while the other was still coding then he'd suggest where to go to implement some new functionality... the problem was the system was so large and new to us, there were just too many things for one person to remember at one time. Working in pairs really worked in that occassion.

      Now, if I was doing routine GUI stuff for some lame application, pair-programming would not add anything. Would it?

      --

      I miss my rubber keyboard.(Homepage)

    41. Re:Working in pairs is a bad idea by Anonymous Coward · · Score: 0

      I wouldn't say that linux is a steaming pile of
      horse shit. It has it uses too !!!!

    42. Re:Working in pairs is a bad idea by Anonymous Coward · · Score: 0

      " Balance is important to me. I may spend most of my time programming, but on the side I keep up with mathematics, a little physics, literature... It keeps my mind sharp and prevents burnout. "

      see potentious... That's just the thing most people will buy, and it means that your other skills won't be so tuned.

    43. Re:Working in pairs is a bad idea by crazyphilman · · Score: 1

      "As for my tone...this is some of the nicer stuff I post on Slashdot. Karma to burn." -- smileyy

      In that case... No hard feelings then. ;)

      "all else being equal, is it better to have a company full of developers who can cooperate, or a company full of developers who can't? You've got to be a goddamn moron to pick the former." -- smileyy

      Um... You just said I'd have to be a moron to choose the company of developers who can cooperate. Heh heh heh!

      But, now you're misrepresenting my point. I didn't say anything about developers not being able to cooperate. Rather, I proposed a model of cooperation which reduced potential for conflict. It's STILL cooperation. It's just cooperation of a more efficient sort. Besides, I'm not saying programmers can't ever collaborate on a single piece of code. Design doesn't mean you're not allowed to ask someone for pointers! However, at the same time, it's more comfortable if on the whole a programmer is responsible for his own chunk of a project, without outside interference.

      "Do you need design? Yes. Do you formal design? No. Do you need to design everything ahead of time? Absolutely not. XP came about in part because enough people found that BigDesignUpFront just doesn't work well enough." -- smileyy

      "formal design" is such a subjective thing it's hard to respond to. I don't think I proposed old-fashioned "formal design" i.e. flowcharts and function diagrams and such. I usually use pseudocode and simple diagrams, personally. And, I'd buy the idea that you don't have to design every single thing in advance; shit happens, right? But I do believe that there should be some sort of real design in place before you start coding.

      Anyway, it's all a matter of opinion, isn't it? You work where you're comfortable. My office is older fashioned, and we do things in a decidedly non-xp way, with formal design, project requirements and deadlines, proposals, and etc. I'm fairly certain that I wouldn't enjoy working in your office, and that you wouldn't stay in mine. Different cultures entirely, if you know what I mean.

      --
      Farewell! It's been a fine buncha years!
    44. Re:Working in pairs is a bad idea by Anonymous Coward · · Score: 0

      First off, XP isnt about tutoring some idiot programmer. If you read XP, it gives reasons for pair programming that you might find if you learned how to read.

      Which one did you say was a steaming pile of horse shit again?

    45. Re:Working in pairs is a bad idea by crazyphilman · · Score: 1

      You're confusing me. You said "see potentious... That's just the thing most people will buy, and it means that your other skills won't be so tuned."

      What on Earth did you mean by that? Did you mean to say "so pretentious"? Or "See, potentious" where potentious is someone's nickname? Or did you want me to look up the word "potentious" (It's not in the Oxford American Dictionary)? Did you mean "portentious" (which means 'of an omen or significant sign of things to come')? This doesn't make any sense. Was potentious a writer? Sigh...

      Well, I bet you meant I was pretentious. I'm not pretentious. I'd be pretentious if anyone where I live knew I was doing any of this. But, other than telling you, I haven't really told anyone. I don't care what anyone thinks, I'm interested in that stuff for me. It's fun.

      Maybe you could explain what you meant.

      Anyway, I don't think it'll negatively affect my "other skills". It's unnecessary to spend 100% of your time on a single subject, and detrimental besides. Don't psychologists say that you have to get away from a subject a little and let your mind absorb it to learn most optimally? As I said, balance is important.

      --
      Farewell! It's been a fine buncha years!
    46. Re:Working in pairs is a bad idea by smileyy · · Score: 2

      Um... You just said I'd have to be a moron to choose the company of developers who can cooperate. Heh heh heh!

      Damnit...I knew I'd fuck up that grammatical construction.

      I guess my biggest problem is that those who reject XP are usually those who've never tried it, and dismiss it with straw-man arguments. Especially here on /., when its something I do know something about, and few other people in this thread seem to.

      For me, its the software development methodology that makes sense to me. And for those people it doesn't seem to make sense for...well..they're some kind of weird freak. =)

      --
      pooptruck
    47. Re:Working in pairs is a bad idea by crazyphilman · · Score: 1

      I understand what you're saying. And, my initial (and later) posts weren't directed at XP, but rather the concept of throwing multiple programmers at a single problem.

      To be honest, I have no strong feelings one way or the other about eXtreme Programming. My criticism was strictly with the idea that programmers work in small teams *on the same piece of code, simultaneously*. On this one point, I think I'm pretty stubborn. It feels inefficient to me to have the two (or more) programmers not working in parallel, for one thing, and I'm frankly horrified by the idea of having someone else, sitting next to me, sticking his nose in my code! It makes my flesh crawl. But maybe that's just me. ;)

      So, for the record -- I'm not rejecting XP, but rather the idea of bundling up two or more programmers on a single task.

      And, yes, I am a weird freak. Everyone says so! I've always thought it was one of my best features. ;)

      --
      Farewell! It's been a fine buncha years!
    48. Re:Working in pairs is a bad idea by Thangodin · · Score: 1

      Problems with paired programming often have more to do with the programmers than with the methodology.

      Working in pairs often throws you up against your own worse faults, including the worst fault of all, coder arrogance. For a lot of programmers, the most expensive piece of equipment they have is that huge, bloated ego they haul in with them every day. Having someone question what you do is a very good way of breaking bad habits. And good programmers do work well with others; the faster programmer gains the benefit of a second pair of eyes to catch simple mistakes, while the second programmer is brought up to speed on the project.

      Paired programming becomes very painful when there are a lot of bad habits on one or both sides, combined with prickly egos. But these are people who won't perform well under any methodology. I've worked with developers who seemed to be stars on their own, but who propogated side effects and errors through the project because they just didn't care about working with the rest of the team. In the end they amounted to less than zero, because the resources spent fixing the damage they did outweighed their contributions. Had they really been working on their own, they might have been as good as they claimed to be, but the days of the single programmer project are long past.

    49. Re:Working in pairs is a bad idea by Anonymous Coward · · Score: 0

      I meant portentous which means 'self-consciously solemn or important : POMPOUS'
      or
      Is it hard to breath when your that far up your own arse?

    50. Re:Working in pairs is a bad idea by crazyphilman · · Score: 1

      "I meant portentous which means 'self-consciously solemn or important : POMPOUS'
      or
      Is it hard to breath when your that far up your own arse?"

      You tell me; you seem to have the "head up ass" thing down pat. Jesus, where do assholes like you COME from? Fuck you and the horse you rode in on, you fucking dick-cheese no brain motherfucker.

      You can look THOSE up in your dictionary. Prick.

      --
      Farewell! It's been a fine buncha years!
    51. Re:Working in pairs is a bad idea by smalltalker · · Score: 1

      There is some (scientific, as opposed to apocryphal) evidence based on some intial studies that there *is* overall productivity benefit to pair programming. However, there is at least one study that refutes the claim (or at least does not support the findings of the others). The pro and con studies are available at PairProgramming.com

      --
      Steve Cline http://www.clines.org, http://www.objectbap.com
    52. Re:Working in pairs is a bad idea by Stu+Charlton · · Score: 2

      The distinctions you draw raise the granularity of the metaphor. Pilot/co-pilot is a metaphor to a pair currently programming at a point in time. Not to the whole project.

      "Flying is a real-time task"

      Programming is too. Sure, you can change mistakes later, but it helps if someone catches it right then & there. It also helps if you keep your code clean right then & there, and don't allow bad habits to seep in.

      "You cannot bring in new staff if you are short on human resources for some reason. "

      This is a false. You're not going to hire someone in-flight, just like you're not going to hire someone mid-method/function. You hire in-between pairing sessions.

      "Flying is a highly interactive task."

      So is team programming - it's one of the most interactive tasks you could possibly come up with! There often is constant collaboration, lots of questions. A team that has heads-down, earphones-on programming style does happen, but arguably isn't tremendously effective.

      "Flying is pretty complex in some phases of the flight "

      I've seen pretty tricky designs during some of my pairing sessions.

      Now obviously it's not a perfect metaphor, in that pilots/co-pilots are a life-critical exercies. But it's useful in a number of ways. I think your post does more to justify the metaphor than to convince otherwise.

      --
      -Stu
    53. Re:Working in pairs is a bad idea by Anonymous Coward · · Score: 0

      Please consider what I've said and how easy that was to get that kind of response from you.
      point proven, take a deep breath, look in the mirror and say 'I am god' you feel so much better now.

    54. Re:Working in pairs is a bad idea by crazyphilman · · Score: 1

      "Please consider what I've said and how easy that was to get that kind of response from you.
      point proven, take a deep breath, look in the mirror and say 'I am god' you feel so much better now."

      Why, does this work for you?

      Troll, you're not playing the game. How disappointing; surely you can do better than this?
      You say something unkind and unreasonable in hopes of inspiring me to invective (I cooperated) then traditionally a troll should respond in kind, and really blow the flame war open. I'm hurt; it seems as though you're not even trying!

      Sigh. No one wants to do the work anymore. Ok, look. I'll give you another example, show you how it's supposed to work, and maybe help you develop as an irritating little troll. One day, maybe you can join the ranks of the big trolls and get off the porch. Here goes:

      (you) "crazyphilman, you are pompous and have your head up your ass."

      (me) "Fuck you and the horse you rode in on, you cocksucking dick-cheese motherfucker."

      (you) "Fuck you too, you bag of hot air. You and your textbooks make me want to shit repeatedly. You smell like burned walnuts, you freak."

      (me) "Cocksucking, motherfucking two-ball bitch, you stink like shit and make my balls itch. Run off to your limey VD clinic you sick freak."

      ETC.

      Now, honestly, if you're going to go around insulting people, you should at least be creative about it and if you start the game, PLAY IT. Don't be such a pansy.

      Really. What a disappointment. Go back under your bridge until you can think of a better insult.

      --
      Farewell! It's been a fine buncha years!
    55. Re:Working in pairs is a bad idea by Anonymous Coward · · Score: 0

      but I am playing the game, guess who's winning?

    56. Re:Working in pairs is a bad idea by crazyphilman · · Score: 1

      "but I am playing the game, guess who's winning?"

      No one. This game has no action in it, despite my cooperation with your trolling. I figured you'd be good for at least one rant, but nooooooo, you want to keep throwing one-liners around, not even making an effort. You're a troll-tease, that's what you are. Hmph.

      I can't leave it like this. We need a limerick.

      "There once was a lad from Calais,
      whose balls were constructed of brass,
      He'd bang them together,
      and play 'Stormy Weather',
      as lightning shot out of his ass."

      There; that's a little better at least. Now I shall depart. My Playstation II is beckoning me.

      --
      Farewell! It's been a fine buncha years!
    57. Re:Working in pairs is a bad idea by Anonymous Coward · · Score: 0

      You use some rare alternate meaning of a word so obscure you don't even know how to spell it, and he's pompous?

  6. between extremes by Anonymous Coward · · Score: 4, Insightful

    . Overall, XP emerges favourably, with one serious caveat -- the author concludes that XP is only suitable for a very narrow range of projects, and those that can fulfill all requirements probably stand a significant chance of succeeding using any of the similar methodologies.

    Strange definition of 'favourable', that. Not an attempt at a troll, but the rest of the review didn't tell me how XP emerged favourably either.

    1. Re:between extremes by Anonymous Coward · · Score: 0

      read the book.

  7. As a developer, XP slows me down by RailGunner · · Score: 1, Insightful
    XP lasted for about a week at a client site, before I got fed up with a foul smelling twit sharing my cubicle with me and quit. Personally, I'm going to get this book, and place it prominently on my shelf at work so that nobody ever gets the idea of giving me a cube mate ever again. Of course, if she's 5'8". 36-24-36, and in her 20's, I might have to change my mind.. :)

    But in all seriousness, and at the risk of sounding incredibly arrogant, I've not met someone who can keep up with me when writing code. And really, that's not the time for 2 heads, the time for having multiple people looking at a problem is in the design phase - not the implementation.

    Code Reviews are great, but personally I hate XP.

    1. Re:As a developer, XP slows me down by Anonymous Coward · · Score: 1, Insightful

      If your fellow coders can't keep up with you when you're writing code, then there is your problem. As the reviewer says, the team is what makes or breaks XP. If you had a partner who was equal or more knowledgeable than you, you'd benefit from their presence when pair programming. Unless of course you never make mistakes.

      As to having to share a cubicle, I think XP doesn't recommend that. They say you should share a working area, but that you should have your own private area as well. I think stuffing two people into a cube is not what XP recommends, but rather the way your superiors thought they should implement it.

    2. Re:As a developer, XP slows me down by Eccles · · Score: 5, Funny

      But in all seriousness, and at the risk of sounding incredibly arrogant, I've not met someone who can keep up with me when writing code. ...not to mention reading and posting to Slashdot is really a one-person operation.

      --
      Ooh, a sarcasm detector. Oh, that's a real useful invention.
    3. Re:As a developer, XP slows me down by Anonymous Coward · · Score: 0
      that's not the time for 2 heads, the time for having multiple people looking at a problem is in the design phase - not the implementation

      There is no monolithic "design phase" in XP --- you design all the time, as the design problems get thrown up during implementation. It's how people always really work even if they toe the party line and pretend there was a design phase which produced The Design which they then simply implemented (after all, coding's just typing, right? The tricky bit's all done by those wonderful architects back at the start of the project and they infallibly foresee all possible problems, right?)

      I suspect you didn't really do XP. I suspect you just sat down and typed and were rude to your partner until they went away. I wonder why you haven't got that 20 year old hanging off your every word?

    4. Re:As a developer, XP slows me down by RailGunner · · Score: 1

      What else should I be doing during a massive rebuild of the project so that the testing group can get their greedy little hands on it?

    5. Re:As a developer, XP slows me down by Anonymous Coward · · Score: 0

      Yeah, but when you're that fast you've got lots of time to goof off.

      It's geeks like that that make me worry about my next project...

    6. Re:As a developer, XP slows me down by HisMother · · Score: 5, Insightful
      >I got fed up with a foul smelling twit sharing my cubicle
      That's not the way pairing is supposed to be done. Pairs are supposed to rotate among the team. People who smell bad, or simply can't learn to perform well, are supposed to be asked to leave -- not the capable folks like yourself.

      > I've not met someone who can keep up with me when writing code.
      So there are people on your team whose abilities are not on par with yours. You don't think that you owe it to these junior team members to mentor them and help bring them up to your level? That's a good chunk of what pair programming is all about. Also -- what happens if you are offered a better job/quit in a huff/are hit by a bus? Isn't it better for the whole team if some of those junior folk have experience with "your" code? If you work a little slower, but your knowledge gets spread around, the benefit to the whole team is much greater than if you work fast in isolation.

      >And really, that's not the time for 2 heads, the time for having multiple people looking at a problem is in the design phase - not the implementation.
      So the projects you work on have requirements that are frozen in stone, and designs that can be implemented in only one way, without change, with no thought involved? OK, then there are no decisions that could stand to be reviewed in real time. Everybody else could use some advice.

      --
      Cantankerous old coot since 1957.
    7. Re:As a developer, XP slows me down by Camulus · · Score: 2

      I have to agree with you. I would just assume that the program is designed properly and then sectioned out to each programmer to work on. Just make sure that the programmers in your shop all have a uniform way of documenting code and naming variabless so that at periodic stops, you can look at and optimize each others code. The working tandem thing, just doesn't do it for me.

    8. Re:As a developer, XP slows me down by X · · Score: 3, Insightful

      If you think code reviews are great, then it's hard to accept your arugment about paired programming, as it's a continous code review.

      Kent Beck, the guy who started the XP thing going, moves *very* quickly when he's programming... indeed, he does things that really you can only do in a Smalltalk environment in terms of jumping around. Still, he is eminently easy to follow. If you can't be followed, then my guess is it's not about your pace but the clarity of your code, and that *is* something that should be addressed when you're coding.

      Generally speaking, programmers working on their own are lucky if they only introduce a bug every couple of hours. With paired programming you can easily go for days without doing so. Not having the bug in the first place saves you far more time than any perceived benefit that comes from "being free to be on your own".

      --
      sigs are a waste of space
    9. Re:As a developer, XP slows me down by MmmmAqua · · Score: 1

      But in all seriousness, and at the risk of sounding incredibly arrogant, I've not met someone who can keep up with me when writing code.

      That went way beyond risk. Oh, and as any unit testing tool will tell you - being able to code quickly != being able to code well.

      --
      Arr! The laws of physics be a harsh mistress!
    10. Re:As a developer, XP slows me down by Anonymous Coward · · Score: 0

      You mean jack off?

    11. Re:As a developer, XP slows me down by Anonymous Coward · · Score: 0

      Warning. Troll. Do NOT click parent link.

    12. Re:As a developer, XP slows me down by smileyy · · Score: 2

      One of the ideas behind XP is that the process you've described really doesn't work that well. Requirements can and will change. Design usually cannot be properly understood until you're in the middle of the implementation. XP takes those things into account.

      --
      pooptruck
    13. Re:As a developer, XP slows me down by RailGunner · · Score: 4, Insightful
      And therein lies the problem I had with it. The goblin I was paired with was completely useless, questioning every little line I wrote until I finally typed in
      ::MessageBox (NULL, _T("Fuck You"), _T("I Quit"), MB_OK);
      Then I simply got up and left.

      As far as the clarity of my code, if someone didn't pay attention in class or doesn't have the foggiest notion about what the STL can do, then why is it my problem? If they don't understand "Hungarian Notation" or MFC or even the base Win32 API, then again, why is it my problem? The goblin I was paired with supposedly had 5 years of Windows programming experience. Methinks he lied on his resume...

      If I'm on a tight deadline to ship code, then the last thing I have time for it so break down the logic into small words for little goblins who don't understand the programming language. No, I'd much rather have a code review to where I can explain everything in great detail then trying to remember my place in my thought process and continually getting annoyed at the interruptions.

      As far as your third paragraph - that really depends on the bug. If it's a trite little bug that takes 5 seconds to fix, then the time is far better then it takes to explain in small words to a goblin.

    14. Re:As a developer, XP slows me down by infinite9 · · Score: 2

      And really, that's not the time for 2 heads, the time for having multiple people looking at a problem is in the design phase - not the implementation.

      This is my main argument against XP and why I refuse to submit to pair programming. It prevents me from being "in the zone".

      --
      Disconnect your television. Do your own research. Draw your own conclusions. They're probably lying. Don't be a sheep.
    15. Re:As a developer, XP slows me down by kin_korn_karn · · Score: 2, Insightful

      most programmers don't want to learn and don't care. A lot of them aren't young, malleable, impressionable kids that can be fooled by shit like XP, most of them are older, entrenched in their career, do their time and go home type people.

      And mentoring junior people is a pain in the ass. You have no time to do your job because you're spending it all trying to do yours. Unless you LIKE working 16 hours a day, in which case, you should be shot, not modded up.

    16. Re:As a developer, XP slows me down by Anonymous Coward · · Score: 0


      I've not met someone who can keep up with me when writing code.


      If you really are that good, then it is time for you to move beyond being a code monkey and become a leader/mentor.

      If you can't/won't write clear code that the next person will be able to understand immediately, then you are useless. It has been my experience that the best coders are the _easiest_ to keep up with, not the hardest.

      Solitary "I am a coding god" types are a dime a dozen. (and I wouldn't bother hiring one even to fill a pure coding position)

      This is not to say that XP is the only way to go, just that non-team-players are more trouble than they are worth.

    17. Re:As a developer, XP slows me down by X · · Score: 1

      Well, answering the last bit first, lots of little bugs take the form of something that takes 5 seconds to fix. The cost is really in how long it takes for you to diagnose and recover from your bugs. Admittedly, if you aggressively use unit testing, this can mitigate this problem a lot.... unless the bug is in your unit test. ;-) Anyway, I submit that the probability of you on your own introducing a really nasty bug is much higher than if you are doing paired programming.

      As for the twit you were working with... you're fucked there. *Any* team project with someone like that on board is going to be screwed no matter what practices are employed. You essentially have dead weight. One of the tenants of paired programming is that the pairs be formed in a "natural" manner, so you aren't stuck with dead weights. If there are people who are dead weights, then management *should* identify them (with the help of your feedback) and either get them up to speed with training for fire their asses (as is appropriate for the situation).

      And shame on you for using Hungarian Notation... that sh*t has to die!!!!! ;-)

      --
      sigs are a waste of space
    18. Re:As a developer, XP slows me down by Anonymous Coward · · Score: 0

      Of course, if she's 5'8". 36-24-36, and in her 20's

      Working in close physical proximity that pair programming requires has some hazards. I did pair programming with 5'8" 36-24-36 partner. I was happily in a relationship; she was married. Two months later she wanted to leave her husband and was stalking me via cell phone and email. I eventually had to leave the company to avoid her.

      I guess I should be flattered that my code has such a strong effect on women.

    19. Re:As a developer, XP slows me down by kin_korn_karn · · Score: 1

      You have no time to do your job because you're spending it all trying to do yours

      That should be "theirs", duh..

    20. Re:As a developer, XP slows me down by angel'o'sphere · · Score: 3, Interesting

      In my company all tasks are defined to be 30 minutes long.

      A person gets 6 to 8 tasks assigned per day.

      One who can not cope with 6 to 8 taks in 8 hours is overworked, overstressed in relation to his abilities.

      The guys who COULD do 10 to 16 of the taks because they are faster are oblieged to help/educate the guys who fail.

      Pretty easy. Someone who is not able to share his knowledge by "helping" is asked to write a how-to and to give a 30 minutes talk about it.

      The missing hours in the 6 to 8 tasks above are spend in meetings, email or at customer side, or: in making how-to's and giving talks.

      If one thinks he is giving to much og his knowledge away, he is at the wrong place.

      If one can not explain what that is he had just done/made he should make it in a way wich does not need explanaition.

      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    21. Re:As a developer, XP slows me down by Coz · · Score: 1, Offtopic

      At one job, we'd spend six hours working the bug fixes due for first shift (there weren't enough servers to go around, so we subs got to do shift work, too - I was on second - 12 hour days, 10 on the clock), fired up the Compile-From-Hell (Ada - sssllllooooowwww compiler, lots of code), and checked out, headed for the casinos (Mississippi Gulf Coast, the first had just gotten installed). Came back a couple of hours later (or on a page from the Puritan who volunteered to watch the builds scroll past) and started testing to finish out our shift.

      Later on that same job, they sent us to the lead corp's site to do final integration (since their on-location management had screwed up, we all got drawn back to the mothership). We had to do the same stuff, but with more code - and even back at Home Base, they only gave us 2 servers for our builds, so they took hours. One night approaching midnight, the VP in charge of the project walks through - only 2 of us are there, both subs, and we're both playing Minesweeper! He asks what we're up to, looking pointedly at the game screens, and I pop up the build windows behind it (X on Windows) and show him the lines scrolling past, 1 every 45 seconds, and guestimate that we have another 45 minutes before the builds finish, but can't leave in case they break. He nods, we chat nicely for a bit... and three days later, we have 2 more build servers.

      --
      I love vegetarians - some of my favorite foods are vegetarians.
    22. Re:As a developer, XP slows me down by Waffle+Iron · · Score: 2, Funny
      It doesn't help that you constantly use the derogatory term "goblin" to refer to your coworker. It would be more acceptable to use "Folklorian-American" or just "Elfish Figure".

      The fault here really lies with your boss, who should have known that most mythological creatures don't have the educational background for modern software development. Your coworker should have been placed in a position that could more directly benefit from the strengh areas of his background, like mischief and evil deeds.

    23. Re:As a developer, XP slows me down by Anonymous Coward · · Score: 0

      yeah -- all the old timer coders are so busy they don't have time to post to slashdot about how busy they are.

    24. Re:As a developer, XP slows me down by Anonymous Coward · · Score: 0

      I'd look to move away from having massive rebuild - try continuous integration! While your at it write your test cases first to help the testing group and if you get this far maybe pair programming might be on the cards!

    25. Re:As a developer, XP slows me down by GoofyBoy · · Score: 2

      "mentoring junior people is a pain in the ass"

      Thats one of the best part of the job.

      1. Go on for hours about your past heroic programming stunts and how today's kids have it so easy.
      2. Use them as the recieving end of social/comical abuse. As the "new kid" they are too scared to fight back.
      3. Tell them old tired jokes. Unless you get all your jokes from the Internet, they haven't heard them before.
      4. Learn from them. Young and inexperienced, they still have a different and maybe better point of view.

      --
      The surprise isn't how often we make bad choices; the surprise is how seldom they defeat us.
    26. Re:As a developer, XP slows me down by Anonymous Coward · · Score: 0

      That's pretty strange. What sort of programming task can you possibly complete in just 30 minutes?

      I'm glad I don't work in an outfit like that. I like being able to chose the order of my work...

    27. Re:As a developer, XP slows me down by Anonymous Coward · · Score: 0

      So the projects you work on have requirements that are frozen in stone, and designs that can be implemented in only one way, without change, with no thought involved?

      Hardly. But competent people do not need constant supervision either, let alone a 'buddy' looking over their shoulder the entire time.

    28. Re:As a developer, XP slows me down by Anonymous Coward · · Score: 0

      OK, responding to a troll is a mistake....

      "The goblin I was paired with was completely useless, questioning every little line I wrote ... As far as the clarity of my code, if someone didn't pay attention in class or doesn't have the foggiest notion about what the STL can do, then why is it my problem?"

      XP is focused on the success of the project and the team, which means that if nobody else on the team can understand what you wrote, it _is_ your problem. COde isn't "done" until it's not only written but tested, proven to work, and understood by more than on person. You're focused entirely on your personal "success" -- you get to look good checking in tons of code, and burning the team and the project when it doesn't work and/or nobody but you can maintain the code. I'm glad you're not on my team.

      "If I'm on a tight deadline to ship code, then the last thing I have time for it so break down the logic into small words for little goblins who don't understand the programming language." If an engineer on your team doesn't understand the programming language, then he shouldn't be on the team, no matter what the methodology. If you're just whining because you can't communicate clearly, and blaming your partner, you've got bigger problems...

    29. Re:As a developer, XP slows me down by Coz · · Score: 2, Insightful

      Depends on your development environment - change a fundamental header file in C, C++, even Java, and you can waste several builds watching the dependencies come out of the woodwork... clean rebuilds are the best way to handle large change packages during development, IMHO.

      --
      I love vegetarians - some of my favorite foods are vegetarians.
    30. Re:As a developer, XP slows me down by M.C.+Hampster · · Score: 1

      I think this is the funniest thing I have ever read in my life.

      --
      Forget the whales - save the babies.
    31. Re:As a developer, XP slows me down by jcr · · Score: 2

      Kent Beck, the guy who started the XP thing going, moves *very* quickly when he's programming... indeed, he does things that really you can only do in a Smalltalk environment in terms of jumping around.

      That's interesting. I've noticed that XP seems to have caught on among Objective-C developers that I know. I wonder if it's something that works best with decent OO development environments.

      I've never read any of Beck's books, but programming in pairs is something I've done from time to time over my career, and it seems to work best with someone whose design philosophy and coding style are *very* close to my own.

      -jcr

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    32. Re:As a developer, XP slows me down by RailGunner · · Score: 2, Insightful
      First, I assure you, while I'm a lot of things, I'm not trolling here.

      But my point remains - on a team, the weakest link slows everybody down, and unfortunately some managers refuse to fire negatively productive (ie, write more bugs then they fix) people.

      Extreme Programming may work for you, but in my experience it hasn't worked for me, in fact, it's a reason for me to leave a company.

      It's also not a matter of being able to communicate - quite frankly I shouldn't have to explain what CListCtrl::SetItemData () does, for example, while getting reamed for slipping behind in a schedule. Had that lasted more then a week, I would have gone even more insane then some people claim I already am.

      As far as looking good checking in code, why, yes, that's exactly what I do, and in turn, because my code is good, I make my supervisor look good to his boss, and he remembers that and gives me pay raises.

      It's not that I don't want to work in a team environment, it's that I don't want a goblin breathing down my neck for 8 hours a day.

    33. Re:As a developer, XP slows me down by chialea · · Score: 2

      Y'know, I'd think that someone's personal hygine and habits would have a lot more influence on their acceptability as an officemate (grad students: we don't get paid much, but at least we have offices) than their gender or measurements. I mean really, I'm not quite that poor and desperate to be tempted by this, since they pay me here an all, so it's just too incredibly degrading to be eye candy at work for some "hotshot" coder.

      Look! Brains! They're much more important than the rest of it, especially in a coworker. It doesn't mean a thing that I am right around that description. It matters who I am and what I do.

      Lea

    34. Re:As a developer, XP slows me down by Sparks23 · · Score: 1

      I would say this is the product of an unbalanced co-worker, not of pair programming!

      While I found someone who I paired with regularly to be rather attractive, I have not stalked him and definitely wish his girlfriend very well of him. ;)

      (Then again, maybe it's only because I do not meet the criteria given in the posts. While I am told I am attractive, I am only 5'5" as opposed to 5'8"...le sigh.)

      --
      --Rachel
    35. Re:As a developer, XP slows me down by Anonymous Coward · · Score: 0

      >So there are people on your team whose abilities >are not on par with yours. You don't think that >you owe it to these junior team members to >mentor them and help bring them up to your level

      What if the 'junior' person has more experience than you, yet spends little/none of their free time reading up on the latest technology?

      My shop doesn't practice XP, but pair programming does happen frequently with some of the developers here. I believe it does a great job of masking from upper management who knows what and who is more talented than who.

      Sure, put two talented developers and pair program them, or put a talented developer and a person who is smart and eager to learn together, you may get better code than having them code separately. But that 'smart and eager' person is most likely just a 'talented developer rookie'. In other words, pair program works when everyone is a talented developer. Throw in a sub-par developer with a talented developer, and you get

      a) Talented developer typing, talking. Sub-par developer watching nodding head.

      or

      b) Sub-par developer typing, talented developer telling them what to type. Sub par developer nodding head.

      I see it all the time.

    36. Re:As a developer, XP slows me down by angel'o'sphere · · Score: 2

      You can choose your order.

      And you can design your tasks your self.

      I do not dictate WHAT exactly has to be done.

      But every task needs to deliever a QA able result in at max 30 minutes.

      E.g. find the 15 core use cases and describe them in 2 sentences each.

      Elaborate one use case by describing 5 to 7 scenarios of it with 2 to 4 sentences.

      Elaborate one use case by giving a somewhat detailed description, as much as you can do in 30 minutes.

      Refine such a use case to drive it into implementationable state.

      Analyse a scenario and find classes and methods to implement it.

      Allways after 15 minutes sit back and look: are you working in terrain you lack knowledge about? If so your analizis was not good enough so far. You struggle by finding the right solution? Then you do not know enough of the problem.

      Stop your work, abandone it, and go one or two steps back. Otherwise you will fight your way through the jungle of your mind, tricking your self by thinking hart and believeing you are bright when you finaly find a tricky solution. You would have found the solution far faster by going back and reworking the prerequisits a bit.

      If you can not reach a goal in 30 minutes, you do not know what your goal is. Find a goal wich is in shorter times to reach.

      You are coding a class? What is your goal? To support one scenario, that should be the goal.

      If the scenario is worked up pretty, you can code a class in 30 minutes. If that does not work, the class is to big, and should be split up into more than one class.

      Needing to much time is a indicator that you are wasting time.

      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    37. Re:As a developer, XP slows me down by Anonymous Coward · · Score: 0

      As the Goblin Goblin Goblin AC, I have to agree.

    38. Re:As a developer, XP slows me down by Anonymous Coward · · Score: 0

      You mean he should work for marketing?

  8. please clarify by Anonymous Coward · · Score: 0

    One is a steaming pile of horse shit. The other is a robust, stable solution for the computer space.

    It's unclear from your post as to which is which?

    1. Re:please clarify by Anonymous Coward · · Score: 1, Funny

      it's obvious. Linux!

    2. Re:please clarify by Anonymous Coward · · Score: 0

      Yeah, its obviously Linux is the one that he said. Thanks for clarifying that "it's" Linux.

  9. But what is XP ? by Anonymous Coward · · Score: 0

    Allright, the book is good. But it would have been nice to say in the review what XP is. Maybe most people on Slashdot know, but _I_ don t ...

    1. Re:But what is XP ? by DrinkDr.Pepper · · Score: 3, Interesting

      Perhaps this will help: The Rules and Practices of Extreme Programming

      Except for the Pair Programming I don't see these as anything other than a verbose idealistic approach to the customer --> product cycle everyone knows well.

      --
      0xfeedface
  10. I use XP and love it by Jack+Wagner · · Score: 0, Funny

    My consulting business was struggling with trying to manage the overhead and maintain current on all the new methodologies and languages that come out like Smalltalk, and C# and we were having trouble meeting those demands. Then I made the company-wide decision to stop using Object Oriented techniques and move to 100% Extreme Programming methodologies. The results have been astounding.

    We've seen our revenue stream increase on the order of Olog(n) and we with the word of mouth advertising we are actually turning away customers in an depressed economy where legacy shoftware shops are going out of business.

    I know on slashdot there are many people who like to deal with theories but that's a real world tesromonial to XP.

    Warmest regards,
    --Jack

    --


    Wagner LLC Consulting Co. - Getting it right the first time
    1. Re:I use XP and love it by Anonymous Coward · · Score: 0

      Dear Jack,

      Yea Right.

      Sincerely,

      Joe Programmer

    2. Re:I use XP and love it by Provincialist · · Score: 1
      seen our revenue stream increase on the order of Olog(n)

      What is n in this context? Does this mean that your revenues this month are equal to the logarithm of your revenues last month? That wouldn't seem to be such a good thing. Perhaps you mean to use some other, more-quickly-increasing, function of n?

      --
      I am programmed for etiquette, not destruction!
    3. Re:I use XP and love it by mary_will_grow · · Score: 1

      You say you love it. Do you personally program?
      Or do your employees? And do _they_ love it?

      --
      Why stick up for big business?
    4. Re:I use XP and love it by ekephart · · Score: 1

      "We've seen our revenue stream increase on the order of Olog(n)"

      What?! Do you even know what O(lg n) means? How retarded.

      PS nice self-advertisement, mod this sh*t down

      --
      sig
    5. Re:I use XP and love it by Anonymous Coward · · Score: 0

      Smalltalk? NEW?

      Sorry bub, Smalltalk has been around since the late 60's and is anything
      but new. If you had said "advanced, convenient and still ahead of it's time"
      I would agree though.

    6. Re:I use XP and love it by Capt_Troy · · Score: 2

      Jack-

      I don't understand your comparison between OO techniques and the XP methodology. Seems like apples and oranges to me. Can't you write OO code using an XP method? And isn't the use of the XP method *supposed* to result in good, well encapsulated OO code?

      Troy

    7. Re:I use XP and love it by mzipay · · Score: 1

      Wow, Jack. Kudos to you!

      Your use of this new-fangled SmallTalk language is truly cutting edge. And abandonging OO for XP? Sheer brilliance.

      You definitely stand alone! I'm 100% positive that you are the first and only consultant to completely replace OO with XP. That is certainly a mighty feat!

      It's comforting to know that there are professionals out there who can maintain current. Your tesromonial is truly inspiring!

      p.s. I've heard some great things about the business applications of a new language they call "Fortran" - you may want to look into it. Good luck with your consulting!

    8. Re:I use XP and love it by drpatt · · Score: 1

      Great! Where can I find an XP-oriented programming langauge?

    9. Re:I use XP and love it by dapcook · · Score: 0

      Actually, Jack is a Jack-arse. Obviously the owner of a company. He wears a tie and uses big words like "revenue stream increase" Therefore he has no understanding of development and computers. Thank-You

    10. Re:I use XP and love it by Anonymous Coward · · Score: 0

      Can you tell me when Daylight Savings Time begins???

  11. Re:extreme programming? by Anonymous Coward · · Score: 0

    Close, but not quite there. Your code is not extreme code, it's shite code - you are being a shite programmer.

  12. To each his own by slantyyz · · Score: 3, Insightful

    As all slashdotters know, computer geeks can be atheists and religious zealots at the same time.

    Xtreme Programming is one of the hot buttons (as is Unix, Java, Linux, OSX, etc. - the only common religion here seems to be the hatred for MicroSatan).

    Xtreme Programming has a lot of interesting elements (the only one I'm not keen on is the Pair Programming). But, as with anything, if it doesn't work for you, there's probably something similar else you can try - SCRUM, et al.

    The title is provocative enough (at least it isn't inflammatory) that XP fanatics will probably find ways to evangelize their methodology and sell it to anybody who will listen. The book does sound like a good read, because everyone needs a strong dose of perspective now and then.

    1. Re:To each his own by jbrownc1 · · Score: 1

      Every team or programmer is free to take the parts of XP that work for them or their projects and discard the parts that don't.

      I think that XP as a concept is fantastic. I don't think it's good for all projects or all people all of the time.

      If a manager is shoving it down a team's throat, it likely won't work. If everyone buys into it except one hotshot, it can be undermined to the point of not working (of course, you can always fire the arrogant little SOB). Just like other methodology, it will work only if there is buy-in from everyone involved. Adoption can often be more of an HR issue than anything else.

    2. Re:To each his own by Anonymous Coward · · Score: 0

      I like Microsoft. If they hadn't driven the expansion of the personal computer, I wouldn't have a job.

    3. Re:To each his own by Anonymous Coward · · Score: 0

      Feh. What makes you think that if they hadn't have existed, the personal computer revolution wouldn't have happened anyway? What makes you think it wouldn't have been better if some other company (or companies) had done it? Maybe even companies that are moral, ethical and run by decent, nice people? I guess that would be asking too much.

  13. I just wish it weren't called that by sam_handelman · · Score: 5, Insightful

    I do bioinformatics programming. The people I work with are biologists (so am I, actually, but I also have a degree in CS.) They don't have CS degrees, but are pretty computer savvy.

    However, when I say, "we should apply the extreme programming methodolgies,"

    they say,
    "coding to the max!" or
    "what does this have to do with snowboarding?" or
    "the mountain dew commercial was not funny."

    and so forth. They think I'm joking and it is impossible to convince them that Extreme Programming is not either a) a joke or b) marketspeak gibberish crap.

    Now, b) may be true. However, as long as the method is called "programming.... to the extreme!" it becomes difficult to convince people on the intellectually snobbish periphery of CS that it has even potential merit.

    --
    The good and new comes from no quarter where it is looked for, and is always something different from what is expected.
    1. Re:I just wish it weren't called that by greenjinjo · · Score: 2, Insightful
      Couldn't agree more. This method has a serious PR problem; when you try to convince people to use it they usually are scared off right away by the name.

      There is a bit of a catch-22 in introducing new methods: in order to draw people you have to make noise, and that usually scares people to use the method because they think the claims are inflated.

    2. Re:I just wish it weren't called that by Anonymous Coward · · Score: 0

      Dude: your BSA link is broken, try
      http://www.jtbaker.com/msds/englishhtml/A2010.htm

    3. Re:I just wish it weren't called that by X · · Score: 2

      Call it Agile Programming. This is what all the "cool" people are calling it now anyway. ;-)

      --
      sigs are a waste of space
    4. Re: I just wish it weren't called that by Black+Parrot · · Score: 2


      > There is a bit of a catch-22 in introducing new methods: in order to draw people you have to make noise...

      And sometimes the noise is the message.

      --
      Sheesh, evil *and* a jerk. -- Jade
    5. Re:I just wish it weren't called that by Anonymous Coward · · Score: 0

      ...as opposed to the intellectually snobbish center of CS?

    6. Re:I just wish it weren't called that by Anonymous Coward · · Score: 0

      You don't have to _call it eXtreme Programming to your Biologists. Call it Methodology X, and it will get a much warmer reception.

    7. Re:I just wish it weren't called that by rossifer · · Score: 2, Informative

      XP is really one of a larger group of "Agile" methodoligies.

      The basic tenet of agile development is to throw out the big waterfall and shrink the development cycle down to lots of tiny little cycles. The big benefit here is to eliminate the "convergence" system integration step. After a certain point, the product is always ready to ship so the cost of "premature convergence" is eliminated and you get lots and lots of opportunities to reorganize requirements. You'll have a list of a few hundred things to do, pick the most important two or three, get them done, put it in front of customers (who will give you more things to do), repeat.

      Feature creep is automatically managed because you also get lots of chances to see how well your estimation is working and when marketing makes new demands, they get to help decide where those new demands get put into the todo list. When someone has a chance to immediately understand the impact of a new feature, it makes it much easier to understand whether or not this is really a "gotta have" or not.

      XP won't make sense unless you buy books and push them under people's noses, and even then, some won't like it because it appears to demand a complete upheaval of what you're currently doing. Be sure to emphasize that many of the practices can improve your system when applied individually. You don't need the whole thing to be better.

      If you get "Rapid Development" by Steve McConnell, an older authority on development processes, most of the processes in the chapters on dev process are agile. Evolving prototype, etc. There are lots of ways to present this that won't hit the buttons of change averse people.

      XP itself really is fairly extreme. There are lots of ways to improve a process that don't have to toally disrupt a culture but which can really improve the way things get done.

      Regards,
      Ross

  14. Extremely uninterested by truth_revealed · · Score: 4, Insightful

    Nothing beats a well orchestrated and well executed plan - i.e., a written and documented plan. If software specifications are not worth formalizing on paper - it isn't worth creating. You can keep your extreme voodoo. It just formalizes the lazy practices of programmers. 50% to 90% of software projects fail because of embracing fly-by-night "technologies" like this. I thought Extreme Programming was buried for good with the dot bomb implosion.

    1. Re:Extremely uninterested by Anonymous Coward · · Score: 0

      Nothing beats a well orchestrated and well executed plan - i.e., a written and documented plan.

      That's fine if you're building a bridge, but that's not what programming is. When's the last time a customer told you on day 1 exactly what the program should do, how it should work, what features it should have -- and then never changed their minds once?

      Yeah, didn't think so. Until that day comes, I'll stick with things like XP.

    2. Re:Extremely uninterested by X · · Score: 5, Insightful

      The common pratices before XP became popular were to do exactly as you described. The problems with this are many fold, not the least of which it makes your development process extremely inflexible and unable to adapt to change, the tendancy to get locked into analysis paralysis, and the simple inability to define a plan when tackling a problem or technology that nobody has familiarity with.

      FYI, XP isn't a "technology", and it isn't fly by night. It's based on successful practices that have existed in one form or another for decades. I have no idea what practices you think are in XP that in any way reinforce laziness. XP actually fights a number of lazy behaviours that programmers have. All it does is bring together a number of successful practices and espouse doing them "to the extreme" in order to combat the naturally lazy approaches of programmers.

      --
      sigs are a waste of space
    3. Re:Extremely uninterested by truth_revealed · · Score: 3, Informative

      When's the last time a customer told you on day 1 exactly what the program should do, how it should work, what features it should have -- and then never changed their minds once?

      It sounds like you are not managing your customer's expectations very well. I find that a formal legally binding contract with a customer (complete with a product specification) highlights the importance of advance planning and gets the customer involved with the process at an earlier stage to avoid these last minute 'oversights'. When the customer knows there will be a financial penalty imposed when changing the plan (and breaking the contract) they will make damn sure that it is spec'ed out well to begin with. Projects without plans are doomed to fail or cost several times what they were budgetted for. Advance planning helps both you and your customer in the long run. Nevermind the fact that in the absence of a formal plan your customer never feels like the product is completed.

    4. Re:Extremely uninterested by Jack+William+Bell · · Score: 2

      From this I take it that you are a fan of the 'Waterfall' model of software development?

      Jack William Bell

      --
      - -
      Are you an SF Fan? Are you a Tru-Fan?
    5. Re:Extremely uninterested by Cato · · Score: 2

      In XP, the test scripts should be written first (test-first programming) before the code features they test. These are (sort of) requirements specs, because 'if it's not in the tests, it shouldn't be in the code'.

      Of course, a requirements spec is not the same as a set of test scripts, but then XP also has user stories for a more user-comprehensible outline of what's being delivered.

    6. Re:Extremely uninterested by acroyear · · Score: 3, Insightful
      50% to 90% of software projects fail because of embracing fly-by-night "technologies" like this.

      No. 50% to 90% of software projects fail because the requirements, problem domain, and customer expectations change at least 5 times during the course of a one year project. I've been on two failed projects in the last 3 years, both of which failed because the customers continually went back on their own decisions for which we had based our "written and documented plan", long after we had been heavily involved in the code. By the time the "final" decision was made, there was no time to actually implement it.

      I'm not saying XP would have saved them (it likely wouldn't), but assuming that a well-documented design and plan will save a project from the curse of changes in requirements and expectations is self-defeating.

      --
      "But remember, most lynch mobs aren't this nice." (H.Simpson)
      -- Joe
    7. Re:Extremely uninterested by Robb · · Score: 1

      In any project there is a balance that must be found between upfront planning and replanning as a project progresses. Upfront planning is preferable if it is actually used but if things change to much then much of your planning may actually be wasted effort. Replanning is less efficient than upfront planning but if you don't have the information you need to plan then you just wind up guessing which is not very useful.

    8. Re:Extremely uninterested by Anonymous Coward · · Score: 0


      50% to 90% of software projects fail because of embracing fly-by-night "technologies"


      Most of the failures that I have been forced to watch were caused by an inability to get out of the requirements phase. In an effort to determine the true and universal requirements for the project, literally years (not just man-years, calendar years) are wasted and no progress is made.

      After wasting time trying to gather fixed requirements from users that don't have fixed requirements, an arbitrary set of requirements is usually selected just to get out of the requirements phase and on to coding. Then the developers go "heads down" coding something that no one wants. The only question at this point is whether the project will be canceled before coding is complete or after.

      I've done XP and I've worked in a CMM certified shop where we did detailed planning a year out and delivered on plan.

      Both techniques are valuable. The key is matching the right technique to the right project (which is what I gather to be the conclusion of the book)

    9. Re:Extremely uninterested by Anonymous Coward · · Score: 0

      All of you who have seen "a written and documented plan" (aka the waterfall method) succeed without coming in late or overbudget raise your hands...I thought so.
      The waterfall method rarely if ever works.
      For more waterfall info
      Those who are interested in software development should read:
      The Steve McConnell Books
      The Tom DeMarco Books
      The Brooks classic: The Mythical Man-Month: Essays on Software Engineering
      Death March by Yourdon
      The Pragmatic Programmer: From Journeyman to Master
      by Andrew Hunt and David Thomas
      Design Patterns
      Fowler's excellent Refactoring: Improving the Design of Existing Code
      AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis

    10. Re:Extremely uninterested by Nynaeve · · Score: 1

      If you fail to plan, then you plan to fail. However, the point of XP is that you don't formalize the plan itself (i.e., how you are going achieve your goal) on paper, but only what your goal is. This is because the goal itself or how you achieve it can and will change due to changing customer demands.

      Software specs are good to have, but when your customer changes them -- and this is important because it almost always happens -- it makes the decisions you made based on those specs worthless. I've been down that road, and XP would have saved me a lot of time and grief had I been aware of it at the time.

      As popular as XP seems to be (it has to be if they've published eight books already), I am led to conclude it is not "fly by night" or "voodoo" but that like any other methodology, it works when properly implemented -- which takes practice!

      I think everyone should read "Extreme Programming Explained" as well as the book reviewed here with an open mind. To reject it purely because of the hype is naieve.

    11. Re:Extremely uninterested by Anonymous Coward · · Score: 0

      Extremely Frustrating.

      I've personally seen more examples of XP's failures than I care to remember. The basic problem is that this is adopted as a religion - not just as an approach. Practitioners are too cool to listen, too cutting edge to pay attention.

      Project management 101 has not gone away. Good requirements, good communications with the users, tight plan management and issue escalation processes will win over XP any day.

      Does anyone (anyone?) know of one large exnterprise class XP project that has worked? One where they didn't redefine success in the middle (or several times over the course of the project).

      Stuff like this is the last hideaway of the content free and spew-enabled.

    12. Re:Extremely uninterested by Anonymous Coward · · Score: 0

      It just formalizes the lazy practices of programmers. 50% to 90% of software projects fail because of embracing fly-by-night "technologies" like this. I thought Extreme Programming was buried for good with the dot bomb implosion.

      Actually, I think the dot-bomb collapse was due largely to attitudes like yours dismissing useful
      ideas out of hand and then blaming others for what you don't know. oh well.

    13. Re:Extremely uninterested by Dom2 · · Score: 4, Informative

      Test First is a godsend!

      I've started doing test first for all my programming now and I've found that it helps in several areas:

      * Forces you to think upfront about what you're doing and helps catch stupid errors right there.

      * Tends you towards a better, more separated design. This is a natural consequence of testing.

      -Dom

    14. Re:Extremely uninterested by Anonymous Coward · · Score: 0

      I think that you must be thinking of some other XP. The XPthat the rest of us are discussing advocates:
      - putting the customer in the driver's seat
      - clear communication
      - tight project management
      - continuous integration
      - immediate issue escallation

      And to answer your rhetorical question "Does anyone (anyone?) know of one large exnterprise class XP project that has worked? One where they didn't redefine success in the middle (or several times lead and worked in a series of XP projects, all completely successful development, all producing all deliverables before or on target, and with no cost overages. Compared to the track record of non-XP projects (90% of projects fail, the majority of the remaining 10% are well over budget when they complete), I think that the real world comparison is pretty favorable towards XP. Yes, the end product after a year of continuous incremental product release was generally not exactly what anyone would have described a year before, but if implementing what the customers need instead of what product management guessed they'd want, give me more failure!

    15. Re:Extremely uninterested by msponer · · Score: 1

      Yep yep yep, writing the unit test first has made a major difference in my coding life. It's awesome, I consistently cover ground two or three times faster than before I started doing this, AND there are less bugs.

    16. Re:Extremely uninterested by bay43270 · · Score: 2

      It just formalizes the lazy practices of programmers.

      One of the failures of XP, IMHO, is that it requires too much discipline from the programmers. I've only met a few that I think are capable of working in XP. XP is not for lazy people. RUP is for lazy people - "don't think, just fill out this stack of forms".

      I personally don't think XP is any more useful than any other methodology. I just wanted to point out what I think is a common misconception.
    17. Re:Extremely uninterested by rossifer · · Score: 2, Insightful

      But what the customer needs *will* change over time, and if your ability to adjust to that change isn't there, you aren't going to meet the needs of your customer with the result of your effort.

      There are lots of ways to manage change. Some work better than others. Allowing customers to throw out the spec every three months doesn't work. Holding a customer to every detail in a spec written two years ago doesn't work either. Something in between is the answer.

      Agile processes work very well to manage change by giving your customer lots of visibility into the process and giving them a lot of information to make change decisions. How important is this new feature you say you need? Is it more important that these five things we are planning to work on next week?

      That visibility into what's going on also automatically manages the customer expectations extraordinarily effectively. You want to see a happy customer, I'll show you a customer who has very accurate scheduling numbers, strong feature commitments, and high confidence that if their needs change, that what we're planning to deliver can change to meet those needs.

      Regards,
      Ross

    18. Re:Extremely uninterested by General+Cluster · · Score: 1

      I have been on similar projects (constantly changing requirements).

      I am not an XP proponent (although it has some interesting ideas), but as I recall, XP suggests that developers make several small releases rather than a few large ones to address this very problem. This way, when the client sees the burning bush (or whatever) and the inevitable sweeping design changes come, you are not too far down the road to respond to the changes.

      Of course this will not save all projects. Some are just doomed.

    19. Re:Extremely uninterested by russellh · · Score: 1

      Nothing beats a well orchestrated and well executed plan - i.e., a written and documented plan. If software specifications are not worth formalizing on paper - it isn't worth creating.

      LOL!

      Just for the record, I've seen several times when the world changed more than once during the specification/requirements process. Result: the wrong thing gets built, or nothing gets built since it is too late. Sometimes timing is everything, and when that's the case, the only thing that matters is working software - and it really doesn't matter how you get there. If it's your small company on the line, it's a matter of survival. Good luck!

      --
      must... stay... awake...
    20. Re:Extremely uninterested by vbweenie · · Score: 1

      Test-first is the bit of XP I find it most useful to employ in a non-XP environment (the one I work in). I don't know if it's unique to XP, but kudos to Kent & co for popularising the approach. Having said that, I've spent the past two days knocking something together without the aid of unit tests, just because the something in question was a VB IDE add-in and I could really see no way to test it as it stood using VBUnit. Sometimes you run up against the limitations of your tools (with VB, that's quite a lot of the time in fact...)

      --
      Experience is a hard school, but fools will learn no other.
    21. Re:Extremely uninterested by acroyear · · Score: 1

      It all depends on the nature of the changes. A new feature here or there is one thing, but some of these are significant obsticles in that they are changes in what the design (and developers) originally thought to be constant and effect everything; its impossible to write code that is immune to that _one_ change that breaks everything...Sometimes you just have customers that want exactly that one change that they said would never change. Its good to "embrace change", but its another to have nothing constant to base any design on...

      --
      "But remember, most lynch mobs aren't this nice." (H.Simpson)
      -- Joe
    22. Re:Extremely uninterested by simpletaco · · Score: 1

      You bring up some very good points. However, just like any methodology, including XP, it doesn't cover all the bases. Having a good understanding with your customers about the costs of changing requirements late in the development cycle is a very good idea. I also like the point you make about how your customer never feels like the project is completed without a formal plan. While these are good points they do not cover all situations. For instance not every project can have a legal agreement like those for internal customers. (Those customers who reside within your company or organization) Secondly, you are misleading yourself in believing having a formal agreement will solve your problems. If someone who has a more agile or adaptable organization comes along and can accommodate those requirement changes then that organization or team will have a competitive advantage and soon your organization will start losing projects, because of your lack of agility. Another reason why you good reasons are misleading is that we are servants to the customers and what we want is to produce software that can actually be used. How would you handle a project whose requirements change through no fault of the customer, for instance the software needs to handle a change in regulation or a change in the competitive environment? The imposition of penalties and accusations of breaking the contract, if a contract is applicable, can do harm to the customer/vendor relationship. While the customer should understand that changes can cost more money. The developer must explore all avenues to reducing the cost to the changes this might include adopting XP. XP is just one effort in trying to be more adaptable to customers needs. Is it a silver bullet? No. However what you suggest to do is not applicable in all circumstances and can result in damaged customer relationship and software that does not do what people want it to do. Both you and those who propose XP and your suggestion need to keep trying.

  15. Pardon my ignorance but... by HYauSB · · Score: 3, Insightful

    I read the whole article trying to figure out what he was on about. eXtreme Programming? Can anyone give a definition of it? What exactly is it that XP is, and why does this book challenge it? How did XP change the way he codes and works? What is this "popular methodology?" Because that's what I'm most interested in. The author of the above book review assumes everyone has read the book, or knows all about XP.

    1. Re:Pardon my ignorance but... by wantedman · · Score: 3, Informative

      heh, XP is sorta like a formulated Build and Fix model...The REALLY basic description is below

      1. Divide your project into a bunch of moduals
      2. Make teams of 2 programmers and assign each modual. Program it without worrying too much about how things fit together. Both members work on the same code(2 people to 1 computer)
      3. Fit the moduals together

      Step 3 is the limiting facter, Large projects suffer from too many hacks, and well defined projects suffer because of unneeded hacks...

      It works very well for small projects(under a year), where the requirements change a lot.

    2. Re:Pardon my ignorance but... by Anonymous Coward · · Score: 0

      4. ???
      5. Profit!!!

    3. Re:Pardon my ignorance but... by PolyDwarf · · Score: 2

      So, to sum up your summation:

      Step 1: Divide.
      Step 2: Conquer.
      Step 3: Stitch together.

      Or....

      Step 1: Divide.
      Step 2: ???
      Step 3: Profit!

      Personally, Extreme Programming sounds like something that academia is saying is good, and industry is believing the hype whole-heartedly.
      I personally code much faster than anyone else here, because I've been the one that's rewritten most of the guts of the project, hence I'm by far the most familiar with everything. For the people who say "Share your knowledge, it's better for the team, in case you die!".. Ehh, sorry to say, but if I get hit by a bus, or shot, or something like that, I'm not going to care too much what happens to the company, now am I? In the meantime, I've cemented my place at the company. Am I paranoid? Yer damn right I'm paranoid. I've gotten screwed over enough by companies before to learn that I shouldn't trust any company fully, no matter what I think about it (And believe me, I like the company I'm working for now). I haven't written anything purposefully obfuscated, so anyone who feels like it can go in and learn the guts of everything just as well as I know it, so I don't feel bad about it. I just happen to know the code much much better than anyone else on staff.
      For me, Extreme Programming by far would slow me down, because I would constantly be waiting for the other person to catch up to where I am, no matter whether I was in the driver seat or not. And given the release cycle we have, and the feature list we have that have major features on it, my company can't afford to have any programmer slowed down, let alone their most productive one.
      As a note, according to our bugtracking database, I've fixed 4 times as many bugs as the next closest person over the past year, and that's in and amongst developing new features. So, I do have some actual metrics to base my claims on, for the Doubting Thomases amongst us.

    4. Re:Pardon my ignorance but... by Anonymous Coward · · Score: 0

      That is why this book is the EIGHTH in a series. Try going back to the first one.

    5. Re: Pardon my ignorance but... by Black+Parrot · · Score: 1


      > I read the whole article trying to figure out what he was on about. eXtreme Programming?

      1. Find a new way to waste time.

      2. Call it a programming methodology.

      3. Give it a name with buzzword potential so your PHB can brag about having adopted it when he has power lunches with other PHBs.

      4. ???

      5. Profit!

      --
      Sheesh, evil *and* a jerk. -- Jade
    6. Re:Pardon my ignorance but... by angel'o'sphere · · Score: 5, Informative

      Someone with three questions like this:
      I read the whole article trying to figure out what he was on about. eXtreme Programming? Can anyone give a definition of it? What exactly is it that XP is, and why does this book challenge it? How did XP change the way he codes and works? What is this "popular methodology?" Because that's what I'm most interested in. The author of the above book review assumes everyone has read the book, or knows all about XP.
      gets modded as Insightfull?

      He is not "cluefull" enough to make a google search?

      Anyway: XP is set of about 12 "best habits" you should follow in programming.

      Whereas other software developmnet processes focus on a lot of work wich is not programming, XP focuses on doing a lot of programming and incorporate the other work: analizis, design, as good as possible into the programming "phase/workflow".

      The most known "buzz words" are programming in pairs and unit tests.

      But: there are 12 :-)

      -- Have your programming team at the customer side, or the customer in your house.

      -- refactor, if you see a strange couple of lines of code, refactor it

      -- only program what you imediatly need, Saying: "You ain't wanna use it". So don't program overabstraced "framework like" code as it likely will get refactored away or won't be needed anyway

      -- use storry boards, similar to use cases, well in fact similar to Scenarios, but a lot of literatue mixes up the difference between Use Case and Scenario

      -- imediat feed back: make a story board with the customer, see above, prepare a unit test for it, see above, code it, refactor every existing code in your way to support your new story, run the unit tests of teh old story boards to be sure nothing broke during refactoring, run your new unit test to your new story board, show the result to the customer, adjust storyboard and repeat if needed

      -- plan the architecture, "play your way through it", buzz word: "planning game", e.g. use CRC cards

      -- short releases, plan a day per "story board" or major feature

      -- collective ownership, all code belomngs to the team, ther eis nothing like YOUR file/class or code

      -- have a system metaphor, thats an architecture pattern, basicly have an other system you can compare your current work with

      -- learn and communicate

      Well, read a book, get a consultant and DO it.

      You won't be able determine if it WORKS or not by trying it half hearted for 3 weeks.

      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    7. Re:Pardon my ignorance but... by chromatic · · Score: 1

      XP is not for you (as an individual) if you are a coder who always makes the right decisions and works several times faster than any other coder. It is not for you if you already write bugfree code. It is not for you if you are so far ahead of everyone else that they can only stare at the horizon, wondering where you are.

      I find it hard to believe that all of those things are true. I also wonder how many fewer bugs you'd have needed to fix if you practiced test-driven development, or if you'd had code reviews in place (as pair programming promotes).

      Then again, writing software has made me paranoid and cynical, so please don't take this the wrong way. I simply want to say, "It's hard to believe -- I've never seen software developed well as you describe."

    8. Re:Pardon my ignorance but... by csb · · Score: 1

      I'm sorry; but your #2 is dead-wrong! In XP, integration is *constant*. There is usually an automatic build process, and in many shops, you aren't allowed to check in code until it builds successfully. In other words: Yes, your opinions about XP are quite ignorant. =-)

      In most XP projects, automatic builds are done daily. Working code (in reasonably-sized chunks) is presented to the stakeholders frequently. How could you possibly do this if nobody cared about integration? None of the people here who tout XP would do so if it was like you said.

      XP is highly integration-centric. It fights the very phenomenon that you describe, where integration is viewed as a separate thread of development. In XP, integration is the background against which all of your code is developed.

      This is part of why it's so useful on *certain kinds* of development projects. You wouldn't want to program the Space Shuttle with XP; but, it's great for building your new website. Before you post again, please actually read something about XP... thank you.

      --
      We reserve the right to serve refuse to anyone. -management
    9. Re:Pardon my ignorance but... by PolyDwarf · · Score: 2

      It wasn't.
      The rewriting of the guts of the program was gradual, as I fixed the bugs that were existing before I even started working for the company. After all was said and done, there were enough changes and rewrites to the inner workings of core classes that it wasn't the same at all.
      I find code reviews by inexperienced people (Both in the specific programming language you're in, and in the field of work you're in) to be less than useless. You have to spend more time arguing with the person who thinks they're right because they don't understand why you did what you did, either from a business rules standpoint, or because you know some trick or set of tricks in the language that they don't, and they can't believe it works. As far as having fewer bugs, I doubt that, as most of what I've been fixing were pre-existing bugs, because the company didn't have a comprehensive QA process in place (Nor did they have much of one at all), which I've lobbied for and gotten, hence the flood of bugs.
      If the pair of programmers are roughly on the same level in experience both in the business and in the language, then pair programming might be beneficial. But if they aren't, it wastes the faster developer's time, and in the end, pushes back product release cycles because it takes longer for code to get to QA, and if there are bugs to be found, you're back in the boat of being slowed down by the slower programmer. All of this leads to lengthened release cycles, which managers hate, hence they'll avoid anything that causes it.
      Bottom line, the life of a professional developer is (by and large) to produce (or help to produce) a product. It is not to write elegant code, it is not to write the tightest fastest loop possible, if writing a slightly slower loop takes less time, and is "fast enough", it's not even to mentor junior developers (Unless it's in your job description, obviously). All of these are laudable goals, and if you can get them while meeting your deadlines, more power to you.
      Extreme Programming is not for everyone, and obviously I feel it's not for me, nor do I think it's for the company I work for.

    10. Re:Pardon my ignorance but... by dismayed · · Score: 1
      For me, Extreme Programming by far would slow me down, because I would constantly be waiting for the other person to catch up to where I am, no matter whether I was in the driver seat or not. And given the release cycle we have, and the feature list we have that have major features on it, my company can't afford to have any programmer slowed down, let alone their most productive one.

      As a note, according to our bugtracking database, I've fixed 4 times as many bugs as the next closest person . . .

      I would say that you need to work on helping develop your team... If I were your manager I would say, "Your productivity is great, but you can help bring the team up to your level we can really be doing awesome." 4 times the productivity is great while fixing bugs, but perhaps you're a good debugger because you have experience with it, share the wealth with your team and stop being so hung up on yourself... :(

    11. Re:Pardon my ignorance but... by Tablizer · · Score: 1

      Have your programming team at the customer side, or the customer in your house.

      In my house? No wonder it is called "extreme".

  16. Xtreme Stupidity by RoscoeChicken · · Score: 1

    My company had a lot of lazy/stupid people hired under quotas, nepotism, or because, in the case of one person I worked directly with, it was the "Christian" thing to do.


    Management attempted to impose XP to keep these lunkheads busy, but it was a disaster. To quote Butthead, You can't polish a turd.


    XP is many things, but it is NOT a solution for serious mistakes made by HR.


    1. Re:Xtreme Stupidity by Doubting+Thomas · · Score: 2, Insightful

      Maybe you should point out to them that many of the Agile Process folks are fond of saying, "Good Process is no substitute for Good People."

      --
      Just because it works, doesn't mean it isn't broken.
    2. Re: Xtreme Stupidity by Black+Parrot · · Score: 1


      > My company had a lot of lazy/stupid people hired under quotas, nepotism, or because, in the case of one person I worked directly with, it was the "Christian" thing to do. ... XP is many things, but it is NOT a solution for serious mistakes made by HR.

      Ah, you've outed them. It has previously been a great secret, but you've discovered that "XP" is actually "Chi Rho".

      --
      Sheesh, evil *and* a jerk. -- Jade
  17. Another fad runs its course... by Anonymous Coward · · Score: 5, Insightful

    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.

    By the way, what SEI CMM level _is_ Microsoft at?

    1. Re:Another fad runs its course... by Anonymous Coward · · Score: 0

      I've seen SO many of these come and go.

      Bullshit. Name five or six development methodologies that you've personally seen come and go.

    2. Re:Another fad runs its course... by Anonymous Coward · · Score: 0

      I'd guess they'd be CMM 2. I don't think they have universally standard project processes tailored to each project or whatever it was that 3 required.

    3. Re:Another fad runs its course... by Anonymous Coward · · Score: 0

      By the way, what SEI CMM level _is_ Microsoft at?

      Microsoft is a big company, and I'm sure they have some groups with some SEI CMM level, but generally, they are very proud of the fact that they don't do SEI or ISO9000.

      When I was at MS, a friend there would tell horror stories of his days at IBM, when his entire group stopped communicating via email because the email process was so cumbersome.

      MS believes their lack of formal methods is one of their secrets to success. (Yes, MS is successful, the most successful software company ever, by virtually any definition of success).

      They laugh at people that ask about their CMM level or ISO9000 status. They hope all their competitors wast lots of time on this.

      Give them credit. It's working for them.

    4. Re:Another fad runs its course... by Anonymous Coward · · Score: 0

      structured programming
      OOP

    5. Re:Another fad runs its course... by j3110 · · Score: 5, Insightful

      You seem to define fad in an odd way. You suggest that anything that comes then goes is a fad. To the average person, I would asume that fad meant that it came and went without any effect. You are assuming that in Stage 3 that the original item didn't effect the building of the next best thing. Object-Oriented programming is based on procedural programming. Eventually, it could become that procedural programming is abandoned, but will not have been a fad because it's "replacement" is a derivative of the original.

      I think XP is great because it was the first system designed to teach how to program responsibly. I'm sure it will be replaced by something better, because AFAIK, no one has pioneered perfection in a new field in their first shot. You can bet the farm that the next "fad" will be based on XP. I think you are afraid to change the programming methodologies you already have; therefore, from your point of view, no programming methodology will be more than a fad, because it's not yours and you will never adopt it.

      BTW, I've never heard of anyone saying that peicemeal approaches to XP won't work. I've heard the exact oposite. Some people implemnt pair programming, some have great programmers they can depend on (the reasons for pair programming are so that one can catch the others errors, one may leave and someone will need to take over for him). A lot of people implement the test units because no coder is perfect and the synergy of a large system of object (be they libraries or classes) can cause one small change to break a lot of the system. In a large system, you can't remember every little thing you should test and it would be very time consuming to test them by hand.

      All things die to give way for the next generation. That doesn't make yesterday's champions fads, but rather old heros.

      --
      Karma Clown
    6. Re:Another fad runs its course... by Petronius · · Score: 3, Insightful


      UML (I yet have to see a company other than Rational do it right)
      CMM (ahhh...what level?)
      TTM: Time to Market (SW Dev Mgrs love it)
      TQM (remember that?)
      The V shape model thingie
      The SWAT-team approach
      XP
      Their only purpose is to justify the purchase of books & training programs in large corporations. Small, well-run companies know better than waste time on these things. Instead, they should focus on: people + skills + motivation + ethics.

      --
      there's no place like ~
    7. Re:Another fad runs its course... by jejones · · Score: 2

      In the case of structured programming, I wouldn't say that it's come and gone; rather that it has simply been pretty generally adopted, and hence isn't trumpeted or bragged about.

    8. Re:Another fad runs its course... by Anonymous Coward · · Score: 0

      The reply by Petronius was very good, but I think that you are also VERY correct in your description of "Stage 2", in which management mandates a set of rules, without having the flexibility to change their approach if something doesn't work. In other words, not all programmers are going to enjoy working in pairs, etc, etc. If the shoe fits, wear it, but if it doesn't fit, don't try forcing in the foot!

      Another example of the kind of fad you describe is "In Search Of Excellence", which tried to distill a set of common rules from the practices of great companies. After being profiled in the book, many of those companies went through tough economic times, and even its author Tom Peters was forced to admit that he had to rethink his approach.

    9. Re:Another fad runs its course... by 0WaitState · · Score: 3, Insightful

      UML (I yet have to see a company other than Rational do it right)

      UML is a kitchen-sink object diagramming standard, not bad, until something a little more concise comes along. I assume you meant RUP (Rational Unified Process, since renamed "Unified Process" to sidestep the folks asking why RUP doesn't have any viral marketshare).

      Oh, and if you had used any homegrown Rational software (not purify or clearcase), you'd take it as an indictment of RUP.

      --

      Remain calm! All is well!
    10. Re:Another fad runs its course... by pmz · · Score: 2

      By the way, what SEI CMM level _is_ Microsoft at?

      It might not be possible to answer this, since the SW-CMM stops at zero on the low end. Well, to be fair, I guess Microsoft is solidly at zero, since they never were evaluated in the first place.

      Anyway, even if they were evaluated and claimed to be at 3 or 4, it is likely only one project was evaluated, and, then, they go to claim it company-wide...at least, that's how many other companies do it.

      The CMMs are another one of those things that a person can learn a lot from, but implementing them is no small feat. Truly implementing the CMMs really takes a whole-organization commitment...perhaps just like Extreme Programming? That's probably why CMM-oriented companies are still rare, because the human inertia already in place can be prohibitive. Alternatively, the technologies the PHBs choose to implement the CMMs can be prohibitively expensive and complicated ($150,000 for a requirements management system...sure! We need only three system administrators and two slots in the bureaucarcy for it...that brings the total to...).

      Software engineering, even after a half a century, is still in its infancy. Companies are still hiring half-assed fresh meat as Software Engineers and hopping onto every new high-risk technology invented. Just look at all of the available sites on the WWW--that's a pretty good indication of software quality these days. Simply, it sucks. I know that there are a few very serious software houses out there (military comes to mind), but for the most part, Software Engineering will continue to be a joke for quite some time.

    11. Re:Another fad runs its course... by nhavar · · Score: 2

      I understand a little where both you and the parent post are coming from.

      The parent post is the classic argument that certain people jump towards the buzz word of the day regardless of the lack of any substantial proof of it's long term viability. Likewise others spurn technology/methodologies based on some negative part that they perceive regardless of other potentially positive benefits that are available.

      It' difficult to break people out of their habbits to embrace anything new, unless you have some substantial proof to back it up.

      --
      "Do not be swept up in the momentum of mediocrity." - anon
    12. Re:Another fad runs its course... by Anonymous Coward · · Score: 0

      I worked at a company whose management learned a lot of good techniques at Microsoft. Many product groups are good at adjusting the cost/quality tradeoff to where they need it to be. The trouble is, flaky software is a sound business decision when it doesn't cost you customers.

    13. Re:Another fad runs its course... by Yiliar · · Score: 1

      MicroSoft SOFTWARE is not successful. MicroSoft LEGAL and MARKETING (in that order) are very successful. MicroSoft is viewed by many, as anti-developement, and very anti-innovation. Most technologies from Microsoft seem to be purchased, (many would claim stolen) and not developed in house. Do not give MicroSoft credit for programming capability. In the old days, we had the source for a MS operating system which was mostly assembler. The printouts were spectacular. The code looked great, all aligned, well documented. Textbook perfect. And yet ... It took us quite a bit of effort to get it to run. It is a mistake in general to observe practices, or companies. You have to dig into any project to see what its made of, and every company is capable of misunderstanding requirements, and all programmers can be guilty of producing code that works without knowing why, or the impact of their code on the complete system.

    14. Re:Another fad runs its course... by Anonymous Coward · · Score: 0

      I thought CMM was a fad, even though I don't think M$ get out of base camp. Any outfit that has to get a product to v3 before it's stable enough to use does not deserve epithets such as capable or mature.

    15. Re:Another fad runs its course... by Tablizer · · Score: 1

      I worked at a company whose management learned a lot of good techniques at Microsoft. Many product groups are good at adjusting the cost/quality tradeoff to where they need it to be. The trouble is, flaky software is a sound business decision when it doesn't cost you customers.

      IOW, "Screw them just hard enough that they don't notice" :-)

    16. Re:Another fad runs its course... by Tablizer · · Score: 2

      Let me translate your list into slashdotese:

      1. Hype it into existence
      2. Blame somebody else when it does not work
      3. Hype something new as an improvement over the failed #1
      4. Profit!!!

      (Note: it works so well in the market that we don't need a "???" step.)

    17. Re:Another fad runs its course... by Tablizer · · Score: 1

      Addendum:

      5. Goto 1.

    18. Re:Another fad runs its course... by Herkum01 · · Score: 1

      You have been reading Scott Adams (Dilbert) books, haven't you?

    19. Re:Another fad runs its course... by Anonymous Coward · · Score: 0

      If they don't even notice, the software probably isn't that bad. The key is to make it just good enough they'll keep buying it. Whether they're whining about it or not only matters if a competitor is going to draw them away, but the competitor is making the same cost judgment you are....

    20. Re:Another fad runs its course... by tpv · · Score: 3, Insightful
      if you have the enthusiastic involvement of upper management you can probably get ANY project to succeed.

      You seriously believe that?
      The enthusiastic involvement of upper management can help, but it's by no means a sufficient condition.

      I've seen lots of anthusiastic managers who don't notice when their teams is saying

      • The requirements don't make sense
      • We don't have time
      • You need to invest in more testing
      • This project is doomed

      It's not about enthusiasm, it's about management being supportive of the development team, and the development team being right.
      If you don't have both of those, then you will have problems.

      In my experience management can kill a project, and they can help a project avoid death, but they can't make a project actually work.

      --
      Read more of this story at Slashdot.Read more of this story at Slashdot.Read more of this story at Slashdot.
    21. Re:Another fad runs its course... by Anonymous Coward · · Score: 0

      TQM is total quality management. It's faded from visibility because it's essentially mandated now if your organisation wants ISO9000 quality certification (it, or TQM-by-another-name like deming methods or something is pretty much the only way to satisfy all the requirements). So, where once an organisation might have been saying "we use TQM" they now say "we're ISO900x certified".

      TQM is used everwhere these days. It's become ubiquitous in the manufacturing industry.

    22. Re:Another fad runs its course... by __aajukt2382 · · Score: 1
      Instead, they should focus on: people + skills + motivation + ethics.

      Exactly, this is what the agile methodologies do. See the Agile Manifesto.

      The founders of XP are part of the agile alliance.

    23. Re:Another fad runs its course... by deblau · · Score: 2
      I think XP is great because it was the first system designed to teach how to program responsibly.

      Thank God! We can finally see an end to 40 years of irresponsible programmers!

      --
      This post expresses my opinion, not that of my employer. And yes, IAAL.
    24. Re:Another fad runs its course... by j3110 · · Score: 2

      There will never be an end. Irresponsible programming is even less a fad than XP :)

      --
      Karma Clown
  18. Summary by freuddot · · Score: 5, Insightful

    I'll summarize the book ( without reading it ) :

    For extreme programming to work out, you and your team need to have outstanding ability.

    XP(extreme programming) is great, but add into it a shaky designer, a loner in the team, or a delusionned (sp?) manager, and the whole thing will crash down in flames. In traditionnal methodology, the problem would rather settle with a non-optimal development process. With XP, you either fly high or crash badly.

    The fact that it is a great development model and the fact that it will not work in most places are not incompatible.

    But that's just my experience. Take it with a few tons of NaCl.

    J.

    1. Re:Summary by Anonymous Coward · · Score: 1, Interesting

      I'm a loner. I don't want my idiotic teammates getting into my code and fucking it up. If that makes me unsuitable for employement in an XP shop, screw it, I'd rather be building things anyway.

    2. Re:Summary by Anonymous Coward · · Score: 1, Funny

      I'll summarize the book ( without reading it ) Congratulations, you're qualified to write book reviews for Slashdot!

    3. Re:Summary by iSwitched · · Score: 1

      So true..

      Forgive me for plagiarizing, but your argument stands for any treatment of any methodology, to wit:

      For _________________ to work out, you and your team need to have outstanding ability.

      __________________ is great, but add into it a shaky designer, a loner in the team, or a disillusioned manager, and the whole thing will crash down in flames.

      With ________________, you either fly high or crash badly.

      Software develoment is hard. XP is a method that does not favor the incompetent, the loners, or the arogant. If you can find a team with none of these qualities, then you have a shot at XP.

      I myself employ parts of XP, especially testing and continuous user-involvement, many of the projects so near and dear to slashdotters hearts would have done well to employ some of the tenants of XP from the beginning.

      --
      "That naive cube! How long must I suffer this!" --Sheldon J. Plankton
    4. Re:Summary by tpv · · Score: 3, Insightful
      XP is great, but add into it a shaky designer, a loner in the team, or a delusionned manager, and the whole thing will crash down in flames.

      I'm not sure it's that black and white.
      I would suggest that in XP (and most other agile methodologies) you need the following three roles to be well filled:

      • Architect
      • Project Manager
      • Lead Developer
      Depending on your project/team size, one person may fill more than 1 role, (or you may need 2 people for a given role).

      I don't think the developers need to be that great. It obviously helps - better people produce better results - but it's not required.
      I guess if they're hopeless developers then they won't cope, but I think that's true in all methodologies.

      Other methodologies will possibly cope without those roles, but they will still (ultimately) be failures (assuming the project has sufficient complexity).

      We took an existing development team that was decent, but not brilliant, an enthusiastic project manager and added a couple of experienced people (an architect and a developer), and the project is working very well. Much better than any previous methodologies we used.
      Part of that is due to the people we brought in, but they're really only there because we needed some architectural guidance for this project (we were using some technology that was new to our existing architects) and we wanted a mentor (both for XP and for the technology).

      Once we get enough people with experience, we won't need them anymore, and I think we will still be successful - but you don't need people to fill those roles.

      --
      Read more of this story at Slashdot.Read more of this story at Slashdot.Read more of this story at Slashdot.
    5. Re:Summary by Anonymous Coward · · Score: 0

      If you write good unit tests, nobody can fuck up your code. So I assume that your code not/badly tested. In itself, that's enough reason for a good shop not to hire you. Then I'm not even talking about the risk of you getting hit by a bus. Who is going to be able to understand/maintain your code then?

      And then there is the attitude problem. Idiotic teammates???? I wouldn't want to have someone with that kind of ego problem in my shop.

  19. One slight drawback of the whole series by Gramie2 · · Score: 1

    is the price! These are slim volumes (186 pages in the book under discussion, 265 in my Extreme Programming Installed) but they carry a hefty price tag.

    I end up buying only one or two, because I can't justify the cost (to myself or my company) of the whole series when I haven't made a commitment yet.

    Also, what kind of overlap is there in the books? I looked through the XP For Web Programming sample pages at Amazon, and it looked like the same content as my book.

    1. Re:One slight drawback of the whole series by tomhudson · · Score: 2
      That's because they're doing eXtreme Writing!

      You know, what we used to call 'cut-and-paste'.

      Seriously, cruft is not just for code and UIs anymore

  20. Test First Coding by osullish · · Score: 4, Informative
    Where I work we've recently adopted Test First Design, Initially we all hated it as the learning curve is steep, and it doesn't really make sense the first few times round.

    Initially we took an old project and applied Unit testing to it, which really turned us off the concept. But once we started a new project, and wrote the test cases before our code it suddenly made sense!

    Now its instinctive for us to write the test cases first, It also allows cuts down on refactoring later as all our code is at its simplest level always. If our code is changed in the future, any problems will be identified straight away.

    I'm sure in the future we'll attempt the other concepts behind XP

    --
    It's hard enough to remember my opinions, never mind the reasons for them..
    1. Re:Test First Coding by blirp · · Score: 3, Insightful
      Where I work we've recently adopted Test First Design

      Just remember that TFD is a Design method, and really has nothing to do with testing as in testing the requirements. So it will check that you coded what you designed. Whether that has anything to do with what the customer wanted is another matter.
      Which should be checked by the functional testing, but that's written by the customer. And most customers don't know what they want...

      M.

    2. Re:Test First Coding by Anonymous Coward · · Score: 0

      Why is writing test cases before the code "Xtreme"?

      Even when learning about the classic waterfall method in college it was obvious that unit test cases belonged in the design phase before coding. And that's how it's always been on the projects in which I was involved.

    3. Re:Test First Coding by Anonymous Coward · · Score: 0
      But I've always written test cases first. As in, starting over fifteen years ago.

      Perhaps not surprisingly, it's the only aspect of the XP fad I like.

    4. Re:Test First Coding by Freedom+Bug · · Score: 2

      "Even when learning about the classic waterfall method in college it was obvious that unit test cases belonged in the design phase before coding. And that's how it's always been on the projects in which I was involved."

      But that's not test first programming. Test first programming XP style is more like "test simultaneously" programming.

      Typically, you write one unit test before you code a unit, then you write several more afterwards. The tests verify you coded what you thought you coded, no more, no less. They don't say anything about whether or not you coded what the project needed to be coded: those are functional tests, and they should be written during design, whether waterfall or XP methodology.

      The biggest reasons to write unit tests are all ancillary, they're great documentation, they make refactoring easy, and they ensure that nobody else @#%s up your code.

  21. extreme programming mailing list by selkirk · · Score: 3, Informative

    XP has an active and interesting mailing list.

    More information about XP can be found here or here.

    1. Re:extreme programming mailing list by Theodore+Logan · · Score: 2

      And more information about Xtreme Karma Whoring can be found here.

      --

      "If you think education is expensive, try ignorance" - Derek Bok

  22. This is a very valid point, actually... by Dot.Com.CEO · · Score: 3, Informative

    Check this out.

    --
    Mother is the best bet and don't let Satan draw you too fast.
  23. Posting forth by Anonymous Coward · · Score: 0
    Moving on, the author's position is admirably neutral
    Typing more, having feeling that having not explaining what extreme programming is being, leaving out important facts is done. Furthermore, are thinking that maybe having been calling extreme programming "XP", author has been having slipping Microsoft advertising onto the frontpage. In fact, until having read the article, thinking was the book about programming in WindowsOS 2001-2003.
  24. IAWTP. Hi "girls" ;-) by Anonymous Coward · · Score: 0

    I agree with this post.
    Hi "girls". ;-)

  25. Smalltalk isn't new by Anonymous Coward · · Score: 0

    Not to be pedantic, but Smalltalk has been around since about 1980...that hardly qualifies as "new" these days.

    1. Re:Smalltalk isn't new by Tablizer · · Score: 1

      Not to be pedantic, but Smalltalk has been around since about 1980...that hardly qualifies as "new" these days.

      And Java and C# are based on languages that have been around since the 60's or early 70's. C, Simula-67, Pascal, Algo, and LISP together have pretty much every feature that Java and C# have.

      There is nothing really new in language land. It is just recombinations of existing ideas. Perhaps "new in popularity" or "newly popular" is what is really meant.

    2. Re:Smalltalk isn't new by Anonymous Coward · · Score: 0

      While you end strong, what was the crap about Java and C# being based on old languages? That has nothing to do with the age of the Java and C# themselves. If I build a pyramid in the middle of Los Angeles, is it then considered ancient as it's based on an older design?

    3. Re:Smalltalk isn't new by Anonymous Coward · · Score: 0

      Old is old. So what if they repackage it and give it a different label. It is still the same lunch meat.

  26. testing ideas by Tablizer · · Score: 3, Interesting

    It is a good idea (for somebody) to experiment with software engineering ideas. I have no problem with that. However, these conditions should be met:

    1. Test it on willing and knowing *volunteers* only.

    2. Don't claim it is "better" until it has been road-tested for a while. At least 3 years and preferrably 15.

    3. Identify where it works and where it does not, or at least be clear about the domains and situations and scope about where it does work so far.

    There are too many credit-cravers and talking heads out there pushing buzzwords into the mainstream before they are tested properly. They should take some clues from the medicine industry. Sloppy pushing may not (directly) kill people, but it can certainly kill the economy and IT credibility, as we have already seen.

    1. Re:testing ideas by anthonyx · · Score: 1
      2. Don't claim it is "better" until it has been road-tested for a while. At least 3 years and preferrably 15.


      15 years is a long time to wait to perform an evaluation. I would expect most implementors of a methodology would prefer a quicker turn around in getting at least a rough estimate of its usefullness: Is this better, worse, or about the same?


      3. Identify where it works and where it does not, or at least be clear about the domains and situations and scope about where it does work so far.


      XP works best with projects that are small, or at least not huge, which makes waiting even 3 years for an evaluation a long time.

      I think what you mean by point 2 is that it is better to have more data with which to judge rather than less data, and with that I agree. One of the best ways of collecting more data in this case, is to go to a meeting where there are people who have used the methodology or are in the process of using it, and get data from them as to how development with the methodology compared to their development experience without the methodology. These meetings usually attract people who are excited by XP, so the data may be a little biased, but at least you have more data.

    2. Re:testing ideas by Tablizer · · Score: 1

      15 years is a long time to wait to perform an evaluation.

      That is mostly an ideal target, not a practical one. If projects built using X don't fall apart in 15 years, then you probably have something decent on your hands. What is best for development may not always be the best under long-term maintenence. There is no short-cut to evaluating long-term maintenance handling. Patience is manditory for that metric.

      One of the best ways of collecting more data in this case, is to go to a meeting where there are people who have used the methodology or are in the process of using it, and get data from them as to how development with the methodology compared to their development experience without the methodology.

      I would note that methodologies tend to be *personality dependent*. What works for a group of like-minded people may not work outside of them. Ed Yourdon's surveys of OOP projects seemed to reflect this. If the group used a technology because they personally liked it, it made noticably more difference than if people used it simply because it was "in style". This would suggest that Cult-Oriented-Programming works. Find a bunch of people who think alike and like similar techniques and productivity may go up.

      IOW, one-methodology-fits-all may be a road to nowhere. "We use X because everybody else does" is too fat a hammer IMO.

    3. Re:testing ideas by Anonymous Coward · · Score: 0

      4. ???

      5. PROFIT!

    4. Re:testing ideas by Anonymous Coward · · Score: 0

      XP has been around for quite a while. I'd say a good deal longer than 3 years.

      As for 15 years, that's simply unacceptable. A process for creating software should be dynamically evolving and not certified like some ISO every 20 years long after it's obsolete.

    5. Re:testing ideas by Anonymous Coward · · Score: 0

      As for 15 years, that's simply unacceptable

      Read the other replies

  27. You are a VERY GAY FAGGOT. Plz FOAD. Thnx.;)~~~~ by Anonymous Coward · · Score: 0
  28. A long way of saying "I hate XP" by Theodore+Logan · · Score: 2, Troll

    If that isn't achievement enough, XP also made testing sexy again.

    Erhm, no, it didn't. Nothing's sexy about XP. IMHO, XP took much of the fun out of programming. The chaos that is open source development brought it back.

    People seem to think that pretending programming is always as complicated as particle physics is going to somehow produce better code on time. I don't. Sometimes coding 9-5 in pairs and creating ten AbstractFactoryContainerXYZYourMom objects each time there's a need for a one line getter method just isn't the way to do it. It might be necessary when working on safety critical systems, but I doubt even that, as formal methods is probably what will dominate in those cases anyway, and for your average off the mill app there's just no need. But, as I've already said, what's worse is that it's no fun.

    And don't give me that "statistics has proven XP is not only more reliable, but also much faster"-bullshit. I've seen it in action. It just ain't true.

    --

    "If you think education is expensive, try ignorance" - Derek Bok

    1. Re:A long way of saying "I hate XP" by StrawberryFrog · · Score: 2
      Sometimes ... creating ten AbstractFactoryContainerXYZYourMom objects each time "AbstractFactoryContainerXYZYourMom objects each time there's a need for a one line getter method just isn't the way to do it."

      I agree. Using as many design patterns as possible in one bit of code is just annoying. But that's not what Xp is about. XP says "Do the simplest thing that could possibly work".

      I've seen it in action

      Judging by your comments above, I think the human factors overshadowed the methodology here. There is no silver bullet for stupidity.

      --

      My Karma: ran over your Dogma
      StrawberryFrog

    2. Re:A long way of saying "I hate XP" by J.+Random+Software · · Score: 2

      The simplest thing that could possibly work (don't design more than you already need, and be ready to evolve it) is a tenet of XP. AbstractFactoryContainerXYZYourMom instead of a getter sounds like architecture astronaut-grade overgeneralized design in advance (or slavishly following design patterns instead of adapting them to your needs). Pair programming doesn't guarantee that what you were doing was XP.

    3. Re:A long way of saying "I hate XP" by Anonymous Coward · · Score: 0

      I hope the person that modded this as a troll gets bitchslapped in Metamod. How was this a troll? What are the moderators smoking nowadays?

    4. Re:A long way of saying "I hate XP" by Anonymous Coward · · Score: 0

      I wish this guy *was* trolling.

      Sadly XP can be taken to the extreme where writing a getter would get you shot at dawn (or next standup).

      However I'm sure the object wasn't an AbstractFactoryContainerXYZYourMom it was something more like MockAbstractFactoryMomContainer and would require an additional unit test plus a few different implementations. Also the MockMom obtained from the RealMockMomFactory would have to triple dispatch with the target object you are testing.

      Such is the XP way and he who breaks the rules shall be subjected to a day long Planning Game. A fate worse than death trust me!

  29. BULLOCKS by Anonymous Coward · · Score: 0

    Best coder? Where do you work, a mayor's office in Kansas?

    Come to Manhattan, NYC, little girl, and we'll see if you can still hang.

  30. Re:AMERICAN PUBLIC = EXTREME PROGRAMMING by Anonymous Coward · · Score: 0

    Thank god you said that - I was really worried all these trigger happy mods were just going to mod that thing into hell. You stepped in and averted a disaster. Great work.

  31. Re:I use XP and love it (damn fine troll!) by PissingInTheWind · · Score: 2

    Hahaha, nice one.

    The funniest thing is that mods took you seriously: you got moderated 'insightful' and 'interesting'. I'd say you'd deserve 'funny' or 'troll', but eh...

    You have trolled, you have won, have a nice day!

    --

    A message from the system administrator: 'I've upped my priority. Now up yours.'
  32. You are doing so well... by Anonymous Coward · · Score: 0

    that you no longer need your corporate site to work?
    Cool.

  33. Come on moderators by sab39 · · Score: 5, Insightful

    This is (possibly, arguably) +1 funny, or (possibly, arguably) -1 troll, but certainly not in any way worthy of "interesting".

    "new languages like Smalltalk"?

    "stop using Object Oriented techniques and move to XP"?

    "revenue stream increase of the order of Olog(n)"?

    Whoever modded this interesting should be ashamed of themselves: it's not like those gibberish-flags are subtle...

  34. Pair programming is not Extreme Programming by Lumpish+Scholar · · Score: 5, Informative
    XP lasted for about a week at a client site, before I got fed up with a foul smelling twit sharing my cubicle with me and quit.
    Pair programming is not Extreme Programming. Perhaps XP cannot be done without pair programming (or perhaps it can); certainly pair programming can be done without XP. Some people have been doing it for decades. (I have, too, in a non-XP context.)
    I've not met someone who can keep up with me when writing code. And really, that's not the time for 2 heads.
    I strongly recommend the Williams and Kessler book on pair programming, which talks about this. (Maybe I should review it?)
    --
    Stupid job ads, weird spam, occasional insight at
    1. Re:Pair programming is not Extreme Programming by DrinkDr.Pepper · · Score: 2, Insightful

      Pair programming [amazon.com] is not Extreme Programming [amazon.com]. Perhaps XP cannot be done without pair programming (or perhaps it can); certainly pair programming can be done without XP. Some people have been doing it for decades. (I have, too, in a non-XP context.)

      Just because Amazon sells two books with different titles does not mean that they are not about the same thing. Pair programming is one of the RULES of extreme programming, but in my opinion it is the only thing that makes it distinct from any discussion of an ideal customer to production cycle.

      --
      0xfeedface
    2. Re:Pair programming is not Extreme Programming by leifw · · Score: 2

      I strongly recommend the Williams and Kessler book on pair programming, which talks about this. (Maybe I should review it?)
      Please. I, for one, would be quite interested.

  35. Does Anyone Else Get It? by Anonymous Coward · · Score: 0

    xbox, XP, Xtreme Programming.

    Windows is appropriating the X, what once generally stood in for Linux things.

    Very sly, and no one notices.

    1. Re:Does Anyone Else Get It? by tomhudson · · Score: 2
      Actually, I agree. I used to call my linux boxes 'X' boxes, 'cause they ran 'X'. Now, I have to call them penguin boxen.

      Note to grammar nazis: boxen is an accepted term, as is ubergeek, even though both of them make no sense unless you combine english and german. English: the extensible language.

    2. Re:Does Anyone Else Get It? by VVrath · · Score: 1

      boxen is an accepted term, as is ubergeek, even though both of them make no sense unless you combine english and german.

      Actualy, ...en is the Old English plural form which has been largely replaced by ...s. It's still used for adopted Old English words, like oxen.

      Liam

  36. it does work, but everything has to be in place by matticus · · Score: 5, Informative
    I worked as an intern this summer at a small company in Grand Rapids, MI. We were complete XP to the core. I was very nervous coming in because I have heard about how difficult XP is to do right. However, with our company, everything worked. Here are what I think a company needs for XP:
    • FOOD in the programming area. So what if it'll mess the keyboards up. A hungry programmer is a bad programmer. Always have snacks. If your coders are getting fat, give them something healthy. Always have food.
    • People who get along and have similar levels of experience. Pairing with a person who knows much more or less than you do is counterproductive. However, pairing with someone who knows their stuff like you to is great.
    • Smart boss/project manager. This person won't do much of the coding, except pair when needed, but the team really needs someone who knows their stuff to be the leader.
    • Clients who understand what XP is. If they do, they will be incredibly happy with your work. If they don't, they will be very confused.

    We used these four concepts and since the code we put out was so much better than anything our clients had ever paid for, we had more work than we knew what to do with. It was incredible.

    Oh-and Boss, take the guys out for a beer at lunchtime every once in a while, and encourage a 5 minute break every hour or so. A happy coder is a good coder.
    1. Re:it does work, but everything has to be in place by Anonymous Coward · · Score: 0

      I agree with the food, beer, and breaks part. Food especially. I don't mean that in a fatty mcgee way, either. If I'm hungry, productivity goes waaay down.

    2. Re:it does work, but everything has to be in place by EvlG · · Score: 2

      Once again, the astute reader notes that these are things that make any project or methodology succeed (if you substitute clients understanding XP for clients understanding how things work)

    3. Re:it does work, but everything has to be in place by sinserve · · Score: 2

      Add "sex" to that list, and I am sold.

  37. Planning by Lumpish+Scholar · · Score: 5, Interesting
    Nothing beats a well orchestrated and well executed plan - i.e., a written and documented plan. If software specifications are not worth formalizing on paper - it isn't worth creating.
    XP proponents agree with you.

    They'd point towards "the planning game," the XP deliverable for project management. (See Planning Extreme Programming for details.)

    They'd point towards "user stories" (very similar to use cases), one XP deliverable for requirements gathering.

    They'd also point to projects where the requirements weren't well defined up front and changed very quickly, and the cost of maintaining detailed requirements deliverables would have slowed the project down enormously.

    And what project doesn't fall in that category? It's a fantasy to think, ala classic "waterfall" development, that the requirements can be set in stone before any of the design, coding, and testing is done. Requirements grow and change as the project progresses, in ways peculiar to the "softness" of software development. (No one would start a project to build a footbridge over a creek, then halfway through want a rail bridge over the Mississippi River.)

    XP may not be the best way to address this, but it's one way; and even as McBreen concludes, it's a good way for some projects. For all projects? No one's saying it is.
    --
    Stupid job ads, weird spam, occasional insight at
  38. You're uninterested...have you tried it? by Anonymous Coward · · Score: 0
    What?

    A plan is nice, until the customer changes her mind. Then you're fucked unless you can change your software, too. XP is a series of techniques that make software development flexible enough that you can keep up with the client.

    For example: write your tests first, then write code to pass the test. That ensures 2 things: 1) you always have tests for your software and 2) see #1. Need to change something? Go for it, you already have a test that will tell you if your change is ok. Maybe that's not important for a 2-bit consulting shop, but it's sure as hell important for any real enterprise.

    Another technique, pair programming, catches a lot of flack for being slow, blah blah blah. It's not right for everyone, but it works for a big portion of the population. Not everyone is a good programmer, and even the good ones do stupid shit. Having someone watch what you're doing works. The advantages aren't as pronounced when using a really good IDE, but they're still there at the algorithm level. Consider it a realtime code review.

    XP is also great for those pesky marketroids who always need a demo that's different than the one they did for the last trade show. XP preaches continuous integration, which means that your software is always at a stage where it runs. That's a huge fucking deal on any kind of real project.

    You're welcome to your own opinions, of course, but don't be upset when you're out of a job because someone else (like me, ha) has a shop that can meet the customers' demands in half the time with twice the quality.

  39. Best ... troll ... ever by Anonymous Coward · · Score: 1, Funny

    See subject

  40. Wow, what world are you living in? by mekkab · · Score: 3, Insightful

    And can I live there too?!?!

    If software specifications are not worth formalizing on paper - it isn't worth creating. You can keep your extreme voodoo. It just formalizes the lazy practices of programmers

    I'm guessing that you must be self employed or in academia, as it is the domain of management to demand complex solutions to improperly spec'd problems and, oh yeah, we wanted it yesterday. I see this happen all the time where they want a rundown of what are the risks of re-baselining the hardware of our legacy system, and can we get that by Close Of Business today? Oh yeah, and these are the same people who say "BTW, try to follow our Business Practice Process if you can, never mind that we completely violated it already"
    Oh yeah, we are a fortune 100 company.

    And guess what? I don't gamble. I don't drive too fast, nor sky dive. I don't need drugs to get high. I get my kicks by trying to meet unrealistic deadlines. I love death marches... its the only way to know I'm alive ;)

    P.S. XProgramming fits right into this real world model.

    --
    In the future, I would want to not be isolated from my friends in the Space Station.
  41. XP advantage by DrinkDr.Pepper · · Score: 5, Insightful

    The main advantage to productivity is that it is unlikely both programmers will share the same opinion about how to waste one's time. Both will feel guilty about wasting the other's time so neither will screw around as much. Slashdot's effect will wane.

    --
    0xfeedface
    1. Re:XP advantage by Lemmeoutada+Collecti · · Score: 1

      You mean there are coders who DON'T read slashdot?!

      --

      You can have it fast, accurate, or pretty. Pick any 2.
  42. It's spelled BOLLOCKS by PseudononymousCoward · · Score: 1

    If we can't be properly crude, at least be crude properly.

  43. Horrible by Anonymous Coward · · Score: 4, Insightful

    Extreme Programming seems to be another step in the disturbing trend of turning coders or engineers into robot-computers. Under XP, if you have to fire one of your robots, there'll be more people who can understand what Fired Robot X did, because he never coded anything alone. It also tends to suck the "guru" right out of coding. Consider if you had a pack of middle-of-the-road coders, and one guru. Under extreme programming, the guru becomes a loner, and a drag to the team (note how there aren't actually any individuals, just people to "make code"). Since a pair of fools are better than one guru under extreme programming, you can fire the guru.

    The bottom line is not to mistake a business model for a work model, and to avoid anything that mixes business with design.

    1. Re:Horrible by greenhide · · Score: 3, Insightful

      Sorry, coding isn't saddlery. Or glass-blowing. Or painting. Heck, it isn't even woodworking.

      People like to talk about coding as a "craft", and in a sense, it can be. And sometimes, really gorgeous code (either because it's really well written, or beautifully obfuscated and compressed) can be treated like a work of art.

      However, the greatest use of coding isn't for creating masterpieces to hang on the walls of the Met. Instead, it is for businesses so, yes, business has to be mixed in with design.

      Starving artists are artists who, because they refuse to commercialize their art in any way, shape or form, are unable to sell it (until they're dead, at which point it sells like hotcakes). Ever heard of the phrase, "starving programmer"? You probably haven't. And there's a reason for that. While not all programmers are poor, those who do it for a profession generally try to make their code into a commercial product, or are paid by a business to create it in the first place.

      In my own experience, whenever there is a sense of "ownership" over a project or code within that project, the project suffers. It no longer becomes about the code, it becomes about the personality of the programmer.

      I think that valuing individuals is a function of company politics, not development practices. Never underestimate the downside of being "irreplaceable." Right now I work in a firm where I'm the only one who is working on a specific project. I"m desperately trying to get others at my job understand it. Why? So I can go on vacation without feeling guilty or anxious about things going wrong, or about the client needing new features. So I can eventually leave the company and go on to other places, without leaving the company in a lurch.

      Programmers aren't becoming robots; they still far exceed computers in being able to translate real-world needs into working code.

      I am leery of anyone who feels that they are a guru. If you see Buddha coding on your computer, kill him. But eliminate the "guru" label: Since a pair of fools are better than one [more experienced programmer] under extreme programming, you can fire the guru. Wrong. The more experienced programmer can help manage the project, or can serve as one of the paired programmers. A pair of fools are not better. A pair of good programmers are. If the "guru" is truly wise, he will be glad to work within the team. If he choose to be a loner, he probably has some personal issues to work through, and work is not the place to do it.

      --
      Karma: Chevy Kavalierma.
    2. Re:Horrible by Anonymous Coward · · Score: 0

      Firing the Guru is exactly on target. Why should a business be at the mercy of a person who isn't a team player and is also highly arrogant?

      Most average programmers can end up guru-level in a particular skillset in less than a year. Having a few mentors around helps too.

    3. Re:Horrible by Anonymous Coward · · Score: 0
      business has to be mixed in with design
      Wrong. Mix business with design, and you get satellites that crash into the moon and dead astronauts. Programmers are becoming robots in the sense that if one breaks, or doesn't work correctly, then it can be tossed out by some businessman with (under some circumstances) no actual skills at all. It's even worse for a guru, because sitting on top of a pedestal makes for being a good target. Being a guru is seperate from being a holier than thou asshole, but it appears that you are suggesting that the guru take no personal pride in being able to do something better than most everyone else. This is the attitude I would expect out of a businessman, who only sees things in terms of dollars and cents, and, from the perspective of an actual engineer, has no skills of his own to be proud of. "Business" as a concept kills good design. Business creates businessmen, who aren't necessary in any aspect of a design, as their job can easily be done by an engineer, who can do real work too. Just think about what happens if some businessman decides to fire you. You're not irreplaceable, there are many people who could come in and do your job with just a little training. You might be smart in having no pride in your work, it makes you less of a target in the overpaid businessmen's eyes.
    4. Re:Horrible by stremo · · Score: 1

      "The bottom line is not to mistake a business model for a work model, and to avoid anything that mixes business with design."

      XPers couldn't agree more. That's why there are two sides to every team. In one-week chunks, the suits decide what they'd like to see next. For the rest of the week the geeks make it happen or learn why it's impossible. Next Monday everybody has a better idea of what's valuable and what's possible so the suits pick again.

      Sure this has interesting technical implications, like you have to figure out how to design every day instead of all at once at the beginning of the project when you're stupid, but that's just a skill and can be learned by anyone with a lick of architectural vision and at least one ball (er, gonad, sorry ladies.)

      As far as this robot/anti-guru crap is concerned, there is nothing like an involved pair partner to make the perfect audience for my genius when we finally smack a nasty problem.

      Stremo
      Die free or die trying

  44. Hey Bob, you're right! by Anonymous Coward · · Score: 0

    Mention O(log n) in your troll and the mods go wild!

    1. Re:Hey Bob, you're right! by bellings · · Score: 2
      --
      Slashdot is jumping the shark. I'm just driving the boat.
  45. GOBLIN! GOBLIN! GOBLIN! by Anonymous Coward · · Score: 0

    Finally, I have met someone who likes saying goblin as much as I do! Yay! Goblin! Goblin! Goblin!

    1. Re:GOBLIN! GOBLIN! GOBLIN! by Anonymous Coward · · Score: 0, Funny

      Troll.

  46. Re:A hot republican and XD by Anonymous Coward · · Score: 0

    Republicans are too busy screwing all the other voters.

  47. Extreme *programming?* by Dr+Thrustgood · · Score: 3, Funny
    Not so!

    The only acceptable sport / hobby / whatever for which such a prefix can be done justice: Extreme Ironing.

    1. Re:Extreme *programming?* by Anonymous Coward · · Score: 0

      Mod 'im up, this is funny!

      Some of those guys/gals even have the prerequisite "bug-eye" sunglasses.

  48. That's too simple, way too simple by blirp · · Score: 2
    XP is sorta like a formulated Build and Fix model

    No, it's not. It's really very structured. The simple definition given above is one of the main reason XP-projects fail.
    Basically XP is a bunch (11 or 12?) of well known best practises taken all the way out (if code review is good, then more code review is better, so let's code review all the time).
    It's heavilly based on communication, so it will break down with large teams. It's also missing an architecture step, so large projects tends to fail, if you don't "cheat". And it's missing testing. But if the product is rather small, the people on the team communicate well, and your QA-team gets a go at the app occasionally, you'll be doing great.
    Probably the best thing about XP is that it brings back the fun in programming. Writing out-of-date documents isn't any fun.

    M.

    1. Re:That's too simple, way too simple by DrinkDr.Pepper · · Score: 1

      It's also missing an architecture step
      And it's missing testing


      Both wrong.
      Look at The Rules and Practices of Extreme Programming
      Architecture/Planning and Testing are TWO of the FOUR main topics.

      --
      0xfeedface
    2. Re:That's too simple, way too simple by blirp · · Score: 2
      Both wrong.

      There's no architecture when you continously refactor. The hope is that an architecture gets refactored into the app, but that won't happen.
      Testing is also somewhat ignored. It's supposedly done by Test First, but that's a Design method. All it does it check that you code what you designed. Which is a very good idea, but it's not testing. This could be saved by the functional testing. But that's written and done by the customers who usually don't know what they want anyways. So...
      It doesn't help writing it down when your practises don't support it. And the XP practises doesn't include architecture and misses a lot of testing.

      M.

    3. Re:That's too simple, way too simple by Anonymous Coward · · Score: 0

      In XP "architecture" isn't a separate step that is one person's job. XP relies on mature developers who can think at both the high level (architecture, design) and low level (implementation, tuning) at the same time as they implement and refactor. Yes, junior programmers can't do that. That's why they're paired with senior programmers.

      If you say that XP "somewhat ignores" testing, then I have no idea what you mean by testing. Could you clarify?

    4. Re:That's too simple, way too simple by blirp · · Score: 2
      If you say that XP "somewhat ignores" testing, then I have no idea what you mean by testing.

      Testing is an activity used to verify that the program performs according to the requirements. What XP does is verify the design. Which is fine. But it's not enough.

      M.

  49. smalltalk...new? by honold · · Score: 1

    it was made at xerox's palo alto research center in in 1972

  50. Half XP required... by cjustus · · Score: 4, Insightful
    I think that there are some benefits to XP:

    Designing for the next iteration -- not the entire system... In some cases for designs to be useful, the developer must code a portion of it as a prototype to demonstrate that their idea will work and is effecient... If someone says that they can forsee all implementation issues at design time, they are either lying or spending too much time designing :)
    Regular communication with the end user / customer ... This just can't be done enough... I think that any methodology that calls this to the attention of the development team / project managers is a "good thing".

    On the other hand, some things are not so good/realistic... The biggest thing being pairs programming ... I'm not aware of any organization that is actually doing this... Forget about working from home, putting in long hours, etc if you start using this technique... I'd be curious to hear about organizations doing this, with success...

    Finally, I agree that change in requirements is inevitable, but I think that it has to be properly managed... You can't keep getting new and potentially radically different requirements from the client every two weeks, without seriously burning out the development team... and you can't tell me that requirement changes don't affect costs... Like everything in a project, changes must be managed and negotiated... The development team can work hard to implement software, but can't bend time and space to do so...

    My 2 cents... And yes, I definitely practice what I preach :)

    Chris

    1. Re:Half XP required... by duckyd · · Score: 1

      As I mentioned in another comment, the company I work for practices pair programming successfully. I'm not sure why everyone is convinced it doesn't work, as I watch it work every day. If you have any questions, just shoot (jeff at zeroclue dot com).

  51. Give pair programming a try. by bharlan · · Score: 5, Informative
    Here are some comments on pair programming I put together for coworkers.

    What are the basic mechanics? Usually, one programmer is typing and thinking out loud about what needs to be done. The other sits and offers suggestions. Sometimes, the keyboard changes hands.

    The first few times are not typical. You will spend time discovering tricks with editors and discussing personal work habits. You will find it exhausting, and neither will be unable to type for more than half a day each. Remember to pass the keyboard back and forth, and keep your paired days short.

    After the novelty has worn off, you find that every partner is different. Nevertheless, the benefits seem not to depend very much on whom you work with.

    What is one guaranteed benefit? All code written by two people is at least understandable to two people. Two people can maintain it, so others are more likely the find the code maintainable as well. Upgrades and bug fixing will always consume more of your time than the negligible first draft of a program. If your code can't be maintained, then you really cannot afford to ship it, no matter how useful the functionality.

    Better, the two of you are thinking about the code in different ways. While the typer is thinking about one screenful of code, the companion is thinking about the effects on other code. Maybe this bit of functionality belongs elsewhere. Maybe this information can be encapsulated. Maybe we're making a bad assumption here. You catch many opportunities to simplify your code and improve flexibility.

    It's hard to think about the big picture and the details at exactly the same moment. While you're thinking about one, you mess up the other. With twice the brain capacity, one of you can focus on the details, while the other checks the context and adjusts priorities.

    I also find that we get more than twice the work done of either of us working alone. A speed-up isn't guaranteed, or even necessary, but there are good reasons why it happens.

    Much of the time you spend in front of a terminal is wasted by context switching. "OK. Where was I?" You decide something must be fixed or refactored before you can make any progress. You spend twenty minutes making the extra change and you lose the thread. Your original idea goes cold. Or you postpone and never get back to the necessary refactoring. Worse, you may spend an hour restructuring code, then realize it was not necessary after all. There was a simpler way to solve the same problem, or you misunderstood the problem. Two people will stop each other from wasting many hours this way. One or two such insights can justify the entire session.

    Pair programming is also constant code review. You get to discuss and and explain the design at the most optimum moment, when it is being written. Alone, you might get ninety-five percent of a design perfect, so that no one could possibly improve on it. But that stupid five percent could have been avoided by almost anyone you pull in from the hallway. You could have avoided it yourself on Tuesday, but today is Thursday, and you were using a different part of your brain. Two people are less likely to have the same blind spots.

    Each programmer has a high tolerance for complexity in certain types of code. Certain strange idioms are second nature to you, but to no one else. You won't know for sure, unless someone is sitting next to you asking "What the heck is that?" Then you'll break the one clever line into several readable lines, and move on.

    You'll like your work better, others will like your work better, and you'll get more done. That should be enough reason to give pair programming a try. Maybe it won't work for everyone, or everyday. Don't force yourself or others to participate. You must be relaxed and receptive. As with any new skill, it works better with practice. Try with different partners and different problems. If you find yourself staring blankly at the screen, then surely you can't do any worse with someone else in the room. Try it right then.

    What if your programmers work in different cities? Try using an instant messenger, such as IRC, Jabber, or Yahoo's. These allow you to pass files and snippets of code back and forth. You can archive your conversations.

    --
    (Reality reasserts itself sooner or later.)
    1. Re:Give pair programming a try. by Anonymous Coward · · Score: 0

      All of the discussion about XP depends on one thing: the relative skill of the two programmers.

      Having worked in groups for projects for class, in almost all cases I will prefer to work alone because I work faster than most of the other people in the class. On one project I did with an equally-abled friend I have known and worked on problems with for 6 years, we were able to code FASTER than any one of us alone. Our discussions came up with better ideas and solutions.

      On another project, I was way ahead of the other two people I was working with. They weren't friends of mine, and I had no idea of their abilities coming into the project. Once we started, they couldn't keep up with how fast I was typing and moving around, and the project basically was fully coded by myself, with the other two assisting in the debugging and writeups.

      My point: pair-programming works great only when the two people are close to equal and skill, and very familiar with each others' style and way of thinking. Putting unfamiliar people ogether won't result in any increased efficiency.

    2. Re:Give pair programming a try. by J.+Random+Software · · Score: 3, Insightful

      The less skilled of a pair should usually be driving. That way they have to understand their partner's suggestions (instead of letting their eyes glaze over while watching them appear) and they'll become more skilled. Look at it as a training cost. If they can't or don't want to learn and improve, software is not the field for them.

    3. Re:Give pair programming a try. by Aapje · · Score: 2

      I agree with the other reply to your post. The benefits of pair programming are different depending on the pair. If you pair two experienced coders you are optimizing design and speed. If you pair two inexperienced coders, you optimize quality and training (they will learn fast and make far, far fewer mistakes). Pairing an experienced with an inexperienced coder teaches the new guy a lot, but at the expense of speed and (perhaps) the patience of the experienced guy. On the other hand, the experienced coder might benefit from the 'unperverted' idea's that the inexperienced coder has (but he has to code or he won't express these idea's).

      The optimum is IMHO to have equal pairs most of the time, but mix now and then. The mixed pairing should probably be presented as training (for both coders). This is no different from being tasked with coaching or code review, although it can probably be a lot more fun if you approach it with the proper goals in mind. Of course, the pairs should also be put on the proper parts of the project. You put the experienced pair on difficult components, the inexperienced pair on easy stuff and the mixed pair on problems of medium complexity.

      I believe that this is probably the best way to get the teammembers to be close in skill and familiar with each other's style and way of thinking, exactly the prerequisites of pair programming that you mentioned.

      --

      The Drowned and the Saved - Primo Levi
  52. Only terrorists think of casual, non-vanilla sex by Anonymous Coward · · Score: 0
    Keep on dreaming. Senior Republicans don't let themselves have fun like that. For them, all sex that does not aim at procreation is dirty. Dirty, dirty, dirty!

    Heck, they wasted millions by subpoening the President for having had his dick sucked. More recently the sight of breasts on statues offended Mr. Ashcroft to such an extent that he ordered them covered.

    Dirty, dirty, dirty!

  53. Too easy... by Gruneun · · Score: 3, Funny

    Of course, if she's 5'8". 36-24-36, and in her 20's, I might have to change my mind.. :)

    36-24-36?
    Haha... only if she's 5'3"

  54. Have YOU ever built a bridge? by Anonymous Coward · · Score: 1, Insightful

    Nobody gives you a good estimate on traffic density, wind effects, or load, tells you how you're actually supposed to be designing your supports, or gives any kind of a clue what styles or decorations they want. And then a year later they'll say traffic density has doubled and they want two more lanes.

    Don't be so presumptious that programming is some mystical black art that can't follow any rules. Every lengthy process benefits from planning and analysis. Just jumping in and working only makes you take longer to finish, cost more to build, and the final product doesn't perform as well.

  55. Troll You lika? by oliverthered · · Score: 3, Interesting

    I can see where your comming from and I totaly aggree

    What happens when the single progammer is sick or leaves, yeh I can see how productivity is going to sky rocket.

    How about the cross training that goes on when you have more than one person working on a project, that's useless of course.

    Social aspects to working with someone else are a right pain, I wan't to work for a company that sticks me in a hole and leaves me there, that'll get the most out of me, and I'm sure to stay.

    "Windows vs. Linux", Ok I'm no windows fan but has anyone noticed all the bickering that goes on in the Linux comunity,
    I can see the productivity gains apearing right before my eyes (are there still atleast two VM's kicking around?)

    --
    thank God the internet isn't a human right.
  56. A reveiw of the review by CresentCityRon · · Score: 5, Interesting

    Everyone is posting about XP but I would like to address the review.

    It was rather thin. I didn't see much insight into the book's ideas or even the writing style. I didn't come away with any sort of idea if I should buy this book or if it would be of use to me.

    I like book reviews. I think this was more like a very short book description and summary of the table of contents. Reviews talk about a view and not just a summary.

  57. The unreachable utopia by SunPin · · Score: 5, Insightful
    The reason that professional programmers and uninitiated observers can agree that Extreme Programming is a joke is because it *is* a joke.

    The only people that write about ideal methodologies and their theoretical applications are academics. I am reluctant to use the term "scholar" on these people.

    The key to a successful project is design. Even OSS projects have a design. Anybody can attempt to write for the project but if it doesn't fit with the design or is too far off base to incorporate into the design, that code doesn't get into the next release.

    Extreme programming is a ridiculous term. Perhaps a better description is "ad hoc" programming.

    Think about evolution itself and you'll see how much damage ad hoc programming can cause. :)

    --
    Laws are for people with no friends.
    1. Re:The unreachable utopia by Ian+Bicking · · Score: 3, Insightful
      The key to a successful project is design. Even OSS projects have a design. Anybody can attempt to write for the project but if it doesn't fit with the design or is too far off base to incorporate into the design, that code doesn't get into the next release.
      I think the problem with your perspective, and with waterfall-type methodologies, is that they distinguish "design" from "implementation". This isn't engineering, and programmers aren't construction workers building to the blueprint.

      A program is a design. It is the formal specification of what the computer (the real construction worker) is supposed to do. Every piece of code written should be a plan and a design.

      Of course, that is not always true -- there's a lot of boilerplate and code that requires no thoughtfulness. But it is up to good programmers to eliminate this as much as possible -- to abstract away the parts that require no thoughtfulness, to eliminate portions that are redundant, and to build ourselves tools that will concentrate our effort.

    2. Re:The unreachable utopia by 21mhz · · Score: 3, Funny
      Extreme programming is a ridiculous term. Perhaps a better description is "ad hoc" programming.

      Think about evolution itself and you'll see how much damage ad hoc programming can cause. :)

      Evolution? You mean, how it went and produced humans? Undoubtedly, an embarrassment.
      --
      My exception safety is -fno-exceptions.
    3. Re:The unreachable utopia by theLOUDroom · · Score: 3, Insightful

      It seems to me, that saying "code is design" is a lot like saying "the code is the documentation." Yeah, in a sense it's true, but code by itself is crappy documentation. The same for design. Code to display a JPEG is not a JPEG specfication. You may be able to figure out a partial JPEG spec from code to display them, but that doesn't make it a specfication. You need a design before you start writing code. That way you know if your code does what it's supposed to.
      If you plan to do a good job on a complex project, coding is engineering. You don't just sit down and start coding a database/compiler/opeating system you think about it first. You consider things like: "This operation is O(n^2) can it be made O(NlogN) and if so what is the tradeoff?" "How fast does this program have to run? Is that feasible?" "Are these data structures efficient?"
      People actually go to engineering schools to get degrees in Computer Science for a reason. Knowing how to write good code, is not the same thing as knowing how to write in some particular language. It requires an understanding of what goes on inside a computer. You need to understand things. A good programmer knows that a floating point division by 2 is much slower that a shift right by two and will use that knowledge. Computer Science is a type of engineering.

      --
      Life is too short to proofread.
    4. Re:The unreachable utopia by theLOUDroom · · Score: 1

      Heh, correction: I meant to say shift right by one.

      --
      Life is too short to proofread.
    5. Re:The unreachable utopia by Niggle · · Score: 1

      A good programmer knows that a floating point division by 2 is much slower that a shift right by two and will use that knowledge.

      Warning to any inexperienced programmers: A bit shift on a floating point number is really going to mess you up. Don't do it. The poster obviously meant "use an integer implementation and bit shift".

      I like to consider myself a good programmer, and I say: use a divide if you mean a divide and a bit shift if you mean a bit shift. So much easier for somebody else to see what you meant. You don't need to know which is faster because you can reasonably expect the compiler to optimise an integer divide by two into a bit shift anyway.

      --
      - Blah blah blah, missing scientist. Blah blah blah, atomic bomb. -
    6. Re:The unreachable utopia by Anonymous Coward · · Score: 0

      Er. Real engineering (Mechanical, chemical, civil) distinguishes design from implementation, sure - but also reqcognises that it's an iterative process design-implement(stop when problem apparent)-design-implement-design-implement.

      Software "engineers" for years missed this important point. God only knows how.

    7. Re:The unreachable utopia by SunPin · · Score: 1
      You have a convoluted concept of professional programming.

      If you choose to write code--even the boilerplate code that requires no "thoughtfulness"--and you do not know where you want to end up (i.e., design), you put your reputation and other people's money at risk.

      Think about how ASP/JSP/PHP programmers must work... everything needs to be coded up front before anything will operate. There is no luxury of, "hey, let's run this and see if it works"... not to the degree of traditional languages anyway.

      A design must be in place unless you happen to have ulterior motives and are one of the lucky few that works on an hourly wage.

      Eliminating redundant portions involves making good use of functions and procedures. Making good use of functions and procedures requires planning. Planning requires design--the kind of design that has no code attached.

      --
      Laws are for people with no friends.
    8. Re:The unreachable utopia by Stu+Charlton · · Score: 2

      "The only people that write about ideal methodologies and their theoretical applications are academics. I am reluctant to use the term "scholar" on these people"

      That XP was created and tested several times in practical (i.e. business) environments, and has succeeded, makes me question your assumption here.

      "Anybody can attempt to write for the project but if it doesn't fit with the design or is too far off base to incorporate into the design, that code doesn't get into the next release. "

      So, you know all of the requirements up front? Who is the one being academic here?

      --
      -Stu
  58. Embrace Change by Dog+and+Pony · · Score: 3, Informative

    http://c2.com/cgi/wiki?EmbraceChange

    That is something that should be read by all "Waterfall" developers like you. It is very useful, even if you don't change your opinion.

    Damn. IHBT. :)

  59. XP is so VASTLY overrated... by cartman · · Score: 5, Insightful

    XP entirely consists of about 20 helpful programming tips:

    "write unit tests first."
    "leave optimization 'till last."
    "develop iteratively."

    ...and so on. These helpful pointers are treated as if they were the ripest wisdom, but actually they're just common sense. They're obvious to anyone who isn't retarded. The few things in XP that are controversial (like pair programming) don't work.

    The importance of XP is exaggerated to an incredible extent. I've heard more than one person compare XP to OO! Consider the vast amount of thinking of research that went into the development of OO. XP is comparable in importance to a "Frequently Asked Questions" file for beginning programmers.

    1. Re:XP is so VASTLY overrated... by Meefan · · Score: 1

      Have you ever actually worked in programming? Not to be offensive, but it sounds like you haven't. Extreme Programming consists of techniques that could improve, quite simply, the programming of (nearly) every single coder, be they 9-to-5ers or consultants, that I've ever met. It certainly helped me.

      BTW, have you ever actually tried pair programming? To flatly say it "doesn't work" is naive in the extreme - I know of many who have used it sucessfully, myself included.

      David J Berube, Berube Consulting
      --

      ------
      http://cooltech.org
      If it ain't cool, it ain't coolt
    2. Re:XP is so VASTLY overrated... by starling · · Score: 4, Insightful

      These helpful pointers are treated as if they were the ripest wisdom, but actually they're just common sense

      The thing about common sense is that it isn't very common. If those tips need to be dressed up in some shiny! new acronym to make people follow them then I'm all for it. Just don't expect XP to magically make all projects turn out perfect.

      The importance of XP is exaggerated to an incredible extent. I've heard more than one person compare XP to OO!

      Oh, I don't think XP's been quite as badly over-hyped as OO.

    3. Re:XP is so VASTLY overrated... by ebbv · · Score: 1

      ..naive in the extreme

      LOLLERSKATES

      Not to be offensive, but it sounds like you're a hack. Not to be confused with hacker.

      --

      Think different? I'd be happy if most people would just think...
    4. Re:XP is so VASTLY overrated... by Arandir · · Score: 2
      "write unit tests first."
      "leave optimization 'till last."
      "develop iteratively."


      Yup. Doesn't sound like much, but these simple gems work. I don't know XP, and avoid anything with such trite nomenclature. But here is another tip good for any methodology:

      "Write the documentation first"
      --
      A Government Is a Body of People, Usually Notably Ungoverned
    5. Re:XP is so VASTLY overrated... by st.+augustine · · Score: 2
      The few things in XP that are controversial (like pair programming) don't work.
      Yes it does. Maybe it didn't work for you, but it's worked fine at the company I'm at, and there are plenty of case studies showing that our experience isn't atypical. Pick up a copy of Pair Programming Illuminated if you don't want to take my word for it. It might also tell you what it is that went wrong when you tried to pair.
      --

      -- Some things are to be believed, though not susceptible to rational proof.
    6. Re:XP is so VASTLY overrated... by Sparks23 · · Score: 1

      Also, Kent Beck has always been very up-front that 'Extreme' in 'Extreme Programming' is because you take a number of common-sense best practices and 'turn them to 11', making them extreme.

      it's good to have your code tested whenever possible -> write tests for /every/ task you do

      cleanly readable code is good -> all functions and variables must have self-explanatory names

      more eyes to examine a problem usually leads to less bugs and better design (i.e. the Open Source ideology) -> pair programming

      etc. And yes, XP is hyped more than maybe it needs to be, but there's also never been any secret made of the fact that it's just a bunch of common sense and best-practice guidelines turned to an 'extreme' eleven. ;)

      --
      --Rachel
    7. Re:XP is so VASTLY overrated... by starling · · Score: 1

      'Extreme' in 'Extreme Programming' is because you take a number of common-sense best practices and 'turn them to 11', making them extreme.

      Aha, I didn't know that. Much becomes clear, thanks.

    8. Re:XP is so VASTLY overrated... by Anonymous Coward · · Score: 0

      The few things in XP that are controversial (like pair programming) don't work.

      Actually, pair programming increases productivity because it keeps the programmers from goofing off so much (e.g. reading Slashdot). This is viewed as a bad thing by the programmers, as a rule.

    9. Re:XP is so VASTLY overrated... by Tablizer · · Score: 1

      more eyes to examine a problem usually leads to less bugs and better design (i.e. the Open Source ideology) -> pair programming

      Yes, but code reviews, not neck down-breathing.

    10. Re:XP is so VASTLY overrated... by Anonymous Coward · · Score: 0

      Oh, I don't think XP's been quite as badly over-hyped as OO.

      Shhhh! I consult in both. If you pop their reputation, then me poor. So shut your fucking trap and let me stay rich and get laid by real women instead of the leftever dogs that programmers who care too much get. Go with the flow. Hype is money. Stop fixing everything.

    11. Re:XP is so VASTLY overrated... by Sparks23 · · Score: 2, Interesting

      See, I held the same opinion before I started on an XP project. :)

      But it ended up actually working out very well. Sometimes I was bored when I wasn't the one 'driving' actively, but I found something, in the long run: the only time I felt defensive about someone sitting right there watching me code was if I wanted to hurry through something to get home, or get to lunch, or whatever. The times I'd be writing 'well, I'll hack it now and clean it up later' code, which I would be ashamed to show someone.

      The rest of the time, when I was sitting down to implement something or work on a design for an API, I found that I /valued/ having the other person there.

      I lost track of the number of times that someone might point out 'you've repeated that one sub-block of code with only a few variations across the past four tasks, let's refactor to make that a function itself' or could watch me program and point out a corner case I had not considered in what I was writing, or that I could do the same for them.

      So, while I was pretty opposed to the idea of pair programming before using XP on a project, I got won over. I don't think it's some miracle cure that will fix everything, but I do now think for the right pairing situations it /does/ make for a very definite improvement in code quality.

      To each their own. :)

      --
      --Rachel
    12. Re:XP is so VASTLY overrated... by Chester+K · · Score: 2

      ...and so on. These helpful pointers are treated as if they were the ripest wisdom, but actually they're just common sense. They're obvious to anyone who isn't retarded. The few things in XP that are controversial (like pair programming) don't work.

      Sure, they may be common sense, but how many people do you know that follow them?

      Pretty much everyone agrees that unit tests on paper are a good idea. But the people who actually code unit tests are a much smaller number. XP isn't so much about revolutionary ideas as it is about providing a methodology to make sure all that 'common sense' gets used in practice.

      It's not a silver bullet, though. It works wonders in some situations, and in other situations, it hinders more than it helps. Your team can't be too large, and your client has to 'play ball' by the rules of what XP asks of them, or else it falls apart.

      --

      NO CARRIER
    13. Re:XP is so VASTLY overrated... by will_die · · Score: 2

      Have not read that book, but have seen a couple of other initial studies on pair programming, and have come to the thinking that most of the benifits come from not having people wasting time.
      Read less slashdot, get more code written.

  60. Skip the Book Read this .. by Anonymous Coward · · Score: 0

    For a well written case against XP (just 14 pages) follow this link
    XP does have a limited value. I like the fact that it promotes early integration, and unit testing (Again they are not XP inventions). The rest of it is snake oil.
    Also the guys who promote XP do so with a religious frevour. Most of the so called success stories go along the lines of
    "All was darkness, the project was in a mess, the product was delayed, the customer was angry , the developers were tired ... Then we embraced XP and we were cured.There was light again. Our project was miraculously(sp?) saved and we were on time. We had a happy customer and esctatic(sp?) developers. Thank you XP"
    Try questioning XP in one of the message boards and you will be greeted with it "Just try XP and you will be enlightened. It's counter intutive and dosen't make sense but it somehow works".
    The scariest part is the "code is the documentation" tenet.

  61. please move along by KyleCordes · · Score: 5, Insightful

    I've had very good results with XP-ish techniques. On some projects I use just a handful of the XP practices; on others, nearly 100% of them. I've used all of the practices enough to understand them, and have found that the XP community has an unusual concentration of effective, smart people.

    Yet I have little interest in XP-sucks-XP-rocks flamewars. In fact, because of the good results I've had, I'd really much prefer if my competitors decide that XP is a terrible idea, pair programming is insane, writing tests first is totally backwards, integrating every few weeks is plenty often, and changing requirements are a nightmare. It would suit me just fine if my competitors reject XP completely.

    So please, if you're curious about XP, forget about it. There's nothing to see here, please move along.

    1. Re:please move along by tundog · · Score: 1

      Can someone explain to me why writing tests first is a GOOD idea? Sure you get the requirements down, but thats what planning is for anyway.

      What gets me is, what about the bugs in the test code? It seems to me that you run into a brick wall awful quickly when you start spending as much time debugging the test code as you spend debugging productive code.

      --
      All your base are belong to us!
    2. Re:please move along by chromatic · · Score: 2, Informative

      When you write your tests first, you get several benefits:

      • a comprehensive test suite, built incrementally
      • immediate feedback on the state of the system
      • confidence that the test works (it should fail before you add the feature) and that the feature works (it should pass after you add the feature)
      • very quick debugging (if the tests passed a minute ago and don't pass now, whatever you just did broke them)
      • better API design, as you have to use the interface immediately
      • simpler code, as simpler code is easier to test
      • easier refactorings, as the code is already simple and tested

      Bugs do happen in test code occasionally, but if you write small tests and small bits of code, it's really easy to catch them. It takes some work to get into a test-driven mindset, but I haven't met anyone who's tried it without realizing the benefits.

    3. Re:please move along by KyleCordes · · Score: 2

      Writing tests first is a terrible idea; you definately should not do it that way. See my post above :-)

      But seriously, I find that overall, I produce correct, working, maintainable, solid code faster by working test-first than otherwise. You might find that it doesn't suit you. If so, then don't do it. However it is certainly of considerable value to some teams, and if you are interested in seeing how that could be true, the most thorough treatment I know of is in a recently published book on the subject:

      http://www.amazon.com/exec/obidos/tg/detail/-/03 21 146530

  62. My eXperience by Lordrashmi · · Score: 5, Insightful

    My team tried out Extreme Programming/Pair Programming (yes, I know there is a different and I guess ours was more Pair then Extreme but anyways) and we had mixed results.
    The best team was when one of the programmers was very good at design, documentation and managing how the pieces fit together while the other programmer was good at the 'bits'. Coding an individual section based on what the first programmer told him. That team worked wonderful and churned out alot of work because thier strengths were complimentary.

    However, another team just had to programmers who sucked at managing the process, design and documentation and both just tended to write out code. This led to conflict both in how the code worked (each coded a section without thinking how it would work with the other section) and between the two programmers.

    We are back to individual programming now, just with freqent code reviews. Also we love to go through CVS checking for bad habits and bash whoever did it (Sucks when you point out a issue and then realize you are responsible for it though).

    Summary: I think it all depends on the type of programmers and what they are good at on if any methodology works.

    1. Re:My eXperience by FangVT · · Score: 1
      However, another team just had to programmers who sucked at managing the process, design and documentation and both just tended to write out code. This led to conflict both in how the code worked (each coded a section without thinking how it would work with the other section) and between the two programmers.
      I don't know what your team was doing but it wasn't "pair programming". In pair programming it is not possible for "each" to "code a section", they both code both sections together. Only one will be typing at a time, but they are both responsible for what is typed and are both engaged with the screen while it is being typed.
    2. Re:My eXperience by verloren · · Score: 1

      Sounds like the two guys who didn't do well weren't doing pair programming. Pair programming is about working together, with one PC, to develop code together. What they were doing was working in a very small team, which may be valid, but isn't PP.

    3. Re:My eXperience by Lordrashmi · · Score: 1

      My mistake. Management in my group refered to this as pair programming and I assumed that it was a form of pair programming. Shows what you get for trusting management, eh?

    4. Re:My eXperience by codexnut · · Score: 1

      Summary: I think it all depends on the type of programmers and what they are good at on if any methodology works

      I think this hits the nail on the head. They've tried this sort of "one-size-fits-all" approach in education in the US, and we all probably know how well that has worked. Someone gets wind of the latest "teaching methods" and then trys to impose the "new" methodology on all the teachers which just pisses off the good ones while the bad ones don't care.

      The basic problem is, managers just don't like to manage individuals, they'd prefer to manage things where the individuals involved are treated as faceless "resources." So, instead of managing individual programmers they manage some "representative" aggregate (read: stereotype) which produce (surprise) statistically average results. As long as you treat programmers as "presumed to be" incompetent in some areas and therefore require some imposed structure, that is what you'll get-- but that's not how the best programs are usually produced. Linux is at least one example of how an anarchy of capable programmers can produce a solid and viable product. Managers get really uncomfortable when they can't keep as close a monitor on what is going on as you can when you impose a universal methodology-- but such techniques are not without costs themselves...

  63. Is OO or lack of XP the culprit? by Tablizer · · Score: 1

    I don't understand your comparison between OO techniques and the XP methodology. Seems like apples and oranges to me.

    Since the poster changed both methodologies at the same time, it did indeed make it harder to tell whether the key factor was XP or OO (or both). Perhaps he/she should have switched one variable at a time to make it easier to narrow down the culprit/fix.

    Indeed, XP and OO are generally considered orthogonal. However, IMO, OOP failings is what *caused* the surge in XP because OO failed to have a *consistency* to it after almost 15 years of mainstream use. I have tried to find "accepted business practices" for OO custom business software designs (my niche), but there seems to be no agreement nor consistency in methodologies published. Most materials focus on device drivers and systems software, not custom biz-ware.

    The most glaring lack is knowing how much to model in the database (schema structures) and how much with OO classes, or whether and why to mirror the classes after relational entities, etc. (Mirroring should be avoided IMO. Duplication is generally a software engineering no-no.) RDBMS are here to stay for good or bad. OODBMS are a market failure in the custom biz market for the most part. OO better get used to RDB's and figure out smoother ways to work with them instead of wasting their hope that OODBMS will come back to rescue them from relational-land.

    Thus, practicioners have thrown up their hands trying to find "knowable" OO biz structures, and instead looked to more "organic" approaches like XP. XP allegedly removes the burden of having to plan right up front because you grow it by actual customer/user requirements, not by plans.

    Procedural/relational (p/r) structures have proven more consistent in my observation. Even bad p/r shops tends to follow a consistent pattern: divide code and projects up by "task", and put the noun model/state into the relational database. This approach *works*, especially if you have people who know what they are doing (good DB designers, industry experience, and the ability to factor out common behavior to shared libraries or code.)

    The biggest fragility of this p/r technique is the database design. Bad schemas *will* drag you down over time. Thus, good DB design is paramount under it. If your org is going to allow slop into the system (an unfortunate fact of life sometimes), then make sure it is *not* at the DB-level. This admittedly is probably the Achelees Heel (fragile spot) of the p/r approach if there is one. But, it is relatively easy to prevent.

    I personally think experience and planning alleviate the need for XP under good p/r techniques. I have made too many wheels to want to waste time reinventing them over again organically on each XP project. Good p/r that I have seen does *not* have a high rate of failure, which is what motivated XP to begin with.

    Perhaps use planning for the parts you are comfortable with, but XP-like techniques under the iffy parts. This may get you the best of both worlds: take advantage of existing knowlegde, but use the organic (XP) approach on the fuzzy spots. Thus, an all-or-nothing attitude toward XP may not be warranted. It is a matter of knowing and admitting your limits and applying XP-like techniques at those limits.

  64. Good old days. by mysterious_mark · · Score: 2, Insightful

    Remember the good old days before coding and climbing were 'extreme'... Its seems as though the XP methodology ignores the common sense approach that a small group of motivated talented people with a bit of leadership is what you need, no amount methodology replaces these things. I don't think people who are really good developers can work in the environment XP requires, its to limited and suffocating. Maybe some day management will understand that the secret to good code is people, and not just the latest fad in methodology. MM

    1. Re:Good old days. by lichtkind · · Score: 1

      you're right

      xp was created because theorie grown to kill the normal good programming style who thinks of need and possibilitys.

      but if your on your own and have an beloved own
      project you will be practice xp gladly

  65. Merge Check-ins in pairs are a good idea by Anonymous Coward · · Score: 1, Interesting

    The best technique I find is to use a concurrent versioning system (I HATE the bondage-and-discipline exclusive checkout stuff) and _allow_ programmers to work in pairs if they so wish (this works best for people of approximately equal abilities - if one guy can't stop typing and hand the keyboard to the other guy without any fuss, then they're not suitable for pairing), and with the understanding that they will be told off for too much off-topic discussion, but _require_ that code merges be done in pairs.

    That means that single-programmer originality isn't necessarily cramped, but paired-programmer attention to detail and common-sense-checking is applied when merging changes.

  66. Another review from the Extreme Programming camp by Nikos · · Score: 2, Informative

    Here's another review from the Extreme Programming camp that takes the book to task on several issues.

    Ken Causey
  67. Depends on the pair by RhetoricalQuestion · · Score: 2

    I've since moved out of coding, but back in school we used to collaborate (really collaborate -- not copy) frequently on assignments. There was this one guy who invariably dragged the rest of us into these annoying conversations about the stupidest things. Nice guy, good coder, but the best way for me to work with him was to lock him in a separate room, disable talk and msg, and only respond to his emails once per hour.

    During our OS course -- our most brutal required course -- I specifically avoided this guy by finding my partner a few months in advance. After working out the design together, my OS partner and I would start off working on separate pieces, but eventually, we'd end up pair-programming. This was incredibly effective for us. With both of us on one computer, we actually wasted LESS time co-ordinating with each other, since we understood each other's pieces better, could integrate code faster, and we made fewer dumb errors because there was always someone to look out for them. While we might do the grunt coding separately, the tricky parts and the nasty debugging always ended up in being completed in a pair.

    Mind you, though I couldn't work with the first guy, other people I knew could do so effectively.

    The point is that pair programming doesn't work for every pair of people. When you have a good pair, it rocks. When you don't, it bites. You not only have to respect each other's skills, you also have to have complentary working styles and thinking styles. In my pair, I was better at high-level design and creating test cases, while my partner was better at hammering out the implementation details and diagnosing bugs.

    If I ever went back to coding, I'd want to do it in pairs -- so long as I could respect my partner.

    --

    I can spell. I just can't type.

  68. XP explained by Anonymous Coward · · Score: 3, Informative

    It is a management tool made to look like a geek toy.

    The name attracts geeks: they like 'extreme', they like programming, so XP must be great, right?

    Wrong...

    In XP, the idea is that two programmers are constantly working together. One of the two types code, the other watches his every move. "Don't forget that semicolon!" "No, don't do it like that!" "You don't need to do that right now!".

    Having a slavedriver who puts the whip on you whenever you stare out the window (or browse /.) may sound nice to management, but it doesn't make for a nice working environment - in fact I'd say it drives people very quickly to being burned out.

    Another mantra of XP is "never write anything you do not need right now". As with top-down or bottom-up programming, this tries to force the way a programmer thinks into a narrow pattern.

    Personally I've found that I'm at my most productive when I have a good flow going. That may mean writing some support classes first (and completely) and then building something on top, or it may mean going chaotically all over the place adding bits, but it never means doing things precisely in one order.

    I've also noticed that it is not possible for two people to sync their 'flows' when they're coding. Yeah, bring forth the lame jokes...

    1. Re:XP explained by theOnlyTPC · · Score: 4, Informative

      Try this link for a well laid-out explanation of what XP is and how it {does | doesn't} work.

    2. Re:XP explained by Rolker · · Score: 4, Informative

      This page explains what XP is, yet after reading it, I'm more confused...
      They must have written this using the eXtreme Writing technique.

    3. Re:XP explained by Raiford · · Score: 2, Interesting
      Programming in the sense of the creation of an engineered product has more stinkin half-baked pardigms in terms of project management than you can shake a stick of RAM at. It seems to be the only field of engineering where there is more management than actual engineering going on. Development houses are constantly trying to find better, faster and cheaper was of producing the product. The bottom line is: programming is like anything else. You hire the talent. You nuture creativity and you give guidance. You have a realistic project manager. The big problem so many development efforts run into deals primarily with unrealistic goals and timelines. It seems to be a result of creating a product which is not a physical thing or piece of hardware. For some reason if you can't hold it in your hand or touch it then the tendancy is to think you can develop it faster.

      --
      "player 4 hit player 1 with 0 stroms"
    4. Re:XP explained by Anonymous Coward · · Score: 0

      I can't believe you've never heard of XP. It's been on the shelves for over a year. It's a combination of Windows 98 and NT, and it's really good. Try it.

  69. 2 for 1? by telstar · · Score: 2
    "This is bound to a controversial and widely read title"
    • What's the name of the title it's bound to?
  70. Methodology as religion by Aron+S-T · · Score: 4, Interesting

    The problem with all software methodologies is that they are usually associated with some software guru who is trying to make big bucks as a consultant selling his brand. Also methodologies very often become religions, with the head guru being the leader of the cult. This is understandeable since most software developers depend on a song and a prayer to get their code to work. XP is a good example of both trends.

    I wrote a white paper on software methodology which you can download here. I am an agnostic when it comes to methodologies, but there is alot you can learn from what's out there.

  71. Why do all these things need a name by jmcwork · · Score: 2, Insightful

    We used to do this in college all the time. Someone would get stuck on a problem and suddenly there would be 2 or 3 other people trying to help. The same at work: Someone stares at a problem for so long they need a second set of eyes to double check some piece of code. We did not have a name for this but I suppose we could have called it "Ganging up on a problem before going out for a beer".

  72. Questioning XP? It's really very simple. by Dthoma · · Score: 2

    Research XP. Research the alternatives. Use whichever works best.

    --

    Note to M1-ers: a curt but otherwise insightful message is not "Flamebait" or "Troll".

  73. Mod Parent Up (Informative), Please! by Anonymous Coward · · Score: 0

    Thanks for the link.

  74. Sorta not like build and fix... by mrericn · · Score: 1

    To contend with a few points:

    >1. Divide your project into a bunch of moduals
    Nope, come up with a set of stories which describe a functionality of the project. Prioritize, estimate, and figure out the smallest useful release possible.

    >2. Make teams of 2 programmers and assign each modual.
    All code is collectively owned, not assigned. Teams change hourly, daily, or weekly atleast.

    MODULES are not planned at the beginning, the simplest code which satisfies a current need is used, and then evolves into a set of objects.

    >Program it without worrying too much about how things fit together.
    One of the pair is exclusively responsible for "how things fit together."

    >3. Fit the moduals together
    This is performed atleast twice a day and a thorough list of tests proves it worked. No code is ever committed unless it integrates.

    Careful, a little Software Engineering knowledge is just enough to really screw things up.

    1. Re:Sorta not like build and fix... by wantedman · · Score: 1

      >Nope, come up with a set of stories which >describe a functionality of the project.

      Its the same thing, I just didn't use the right terminology. I should have used the word Tasks...(your still describing breaking up the project into smaller pieces)

      >All code is collectively owned, not assigned. >Teams change hourly, daily, or weekly atleast.

      it still needs to be assigned to SOMEONE, or else it will be done by no one... Code is owned by the group after it is unit tested and integrated, but not during the actual coding, saying otherwise is silly...

      >>3. Fit the moduals together
      >This is performed atleast twice a day and a >thorough list of tests proves it worked. No code >is ever committed unless it integrates

      Yes, Code Segment A & Code Segment B is fitted together daily/ twice daily / every hour

      But Code segment A & Code Segment B MAY not be designed to fit Code Segment C and none were coded to fit Code Segment D, since itcame later in the project ....

      This is kinda what I ment by not worrying too much about how things fit together...

      I am wording Extreme Programming in 3 easy steps...Alittle Forgiveness is needed...

      >Careful, a little Software Engineering knowledge >is just enough to really screw things up
      heh, I know, I mess up all the time learning new things :D

  75. Memory Lane (was: Another fad runs its course...) by Tablizer · · Score: 5, Interesting

    In the case of structured programming, I wouldn't say that it's come and gone; rather that it has simply been pretty generally adopted, and hence isn't trumpeted or bragged about.

    Some IT fads eventually work and some don't. In my observation the success ratio is roughly about 1-in-5. Structured programming (no Goto's) and relational databases seem to have pretty well "stuck". OOP and Client/server are kind of in the same middle-land boat. They seem to work okay in some niches but not others. I remember the tail-end of the CASE craze. Then there was the Expert System craze. In the late 1970's was the "extreme" top-down craze, which was actually the extremist end of "structured". It later mellowed out to being at a routine or module level instead of application-wide. Thus, even good things can be taken too far.

    Now we have web-applications, web services, UML, and XML-everywhere fads that are having their try. (Curiously, I just saw part of an article that claimed very UML-like approaches were tried, and failed, in the 1970's IIRC.) Most of these I would not personally bet on lasting in their current form, beyond minor roles. I think B-to-B web applications will be replaced by "remote HTTP-friendly GUI" technology of some sort (like XWT or SCGUI).

  76. Taichi Programming? by Ripat · · Score: 1, Funny

    So when do we get taichi programming? Or maybe lagom programming? :-)

  77. ... so VASTLY overrated... by chromatic · · Score: 1

    If the obvious pointers are as common as you say, why are they so widely unused?

    Can you elaborate on how pair programming doesn't work?

    (By the way, there are 12 XP features.)

  78. YES!!! by taeric · · Score: 1

    I agree 100% with this!

    I was always getting irritated to hell with people in academia who thought that CS was a completely new and unique subject that could not be taught with the same principals.

    I do not believe CS is exactly like other fields, but to think that nothing can be learned from them borders on asinine.

  79. Re:Only terrorists think of casual, non-vanilla se by Anonymous Coward · · Score: 0

    Yeah right - everyone knows the most visibly uptight people are the most perverted once the bedroom door closes.

    (BTW, Clinton was "[suboenaed] for having his dick sucked" by Paula Jones' attorneys, not by "Senior Republicans").

  80. Critique of XP by billtom · · Score: 2

    I'd recommend this article as a well-argued critique of XP: Case Against XP

  81. Call it XP by Gorimek · · Score: 2

    Just use the acronym. Acronyms always sound professional.

    1. Re:Call it XP by PCM2 · · Score: 2

      They'll assume you're talking about switching to Windows XP, which doesn't help. I agree with the earlier guy: call it Agile Programming, or Agile Methods. Way more touchy-feely.

      --
      Breakfast served all day!
  82. An Open Mind is a Good Thing by billtom · · Score: 1

    Kudos to Addison-Wesley and Kent Beck for including a book like this in the "official" XP series.

    Now, can we expect to see a book called "Perhaps Windows is Not Always the Best Way" being published by Microsoft Press?

  83. Extreme Programming in the Real World by JSkills · · Score: 2, Interesting
    Can Extreme Programming really be put into practice in the average workplace? Sure, it's clear from the case studies in the book that it has been, but I cannot imagine making strict use of all of it's principals in any software development shop I've been part of in my 15 years of experience.

    The one thing I could never see anyone in upper management buying into (aside from the name Extreme Programming) is the concept of Peer Programming. Allocating two perfectly capable resources to one desk during all development time simply does not seem feasible (not to mention desireable) to me. How many of you true developers out there would like one of your co-workers over your shoulder the entire time you were writing code? Or better yet, how would you like to be relegated to being in the passenger seat and simply observing and offering verbal input to the development process? Not very many of you I'd imagine.

    Extreme Programming does have quite a few refreshingly positive aspects to it however:

    Come out with small releases and come out with them often. This keeps the customer very involved in the entire development process and goes a long to to ensuring they (a) get what they want out of the system and (b) take on a true partnership role in the project. This is especially helpful, since we all know that specs often will begin to change the minute they're committed to paper anyway.

    Full testing of the entire system each time a release comes out. How many times has a small change in one area of the system ended up affecting another in some unexpected way? This concept takes care of that situation as well as gauranteeing comprehensive Q/A in general.

    No fear of code refactoring. I love this one, because we all know what a pain in the ass it is to have to completely reengineer some piece of code or process that is in place and working, but is discovered to be unscalable or deficient in some way in regards to future use. Building around it only makes the situation worse though, doesn't it? Don't be afraid, rewrite it and make it right. There's usually no way of knowing everything a specific process may be called on to do from day one anyway.

    We all own this code. The concept of all developers being able to work on any piece of the system makes much sense. I used to work in one shop where the brilliant mananger decided everyone would have one area of responsibilty, thus having him make statements to users like "Oh sorry the search engine is not working, but we can't get it fixed till tomorrow since Andy is out today and he is the Search Engine Guy". Everyone being able to change the communal code does require that you have a group of developers who are all competent of course - which is not always the case in the real world.

    I guess my take on it is that you simply cannot apply the principals of Extreme Programming as a simple "black-and-white" practice. It's really got to be somewhere in the middle to make it work in the real world ...

    1. Re:Extreme Programming in the Real World by duckyd · · Score: 1

      Regaring Peer Programming - we do it 99% of the time at the company I work for, management is fine with it, and for the most part the developers are too. Sometime small changes are made and then peer reviewed, or one coder will continue on where he/she left off with a pair and catch their pair up later. It can be a bit boring to watch someone else code, but the fact of the matter is that it works. You end up with code that makes more sense (as it has to make sense to 2 people in the first place), you are never stuck having the "Search Engine Guy" since you're guarunteed that at least 2 people worked on it, the code is significantly more bug-free because other people catch things you don't, etc, etc. I believe management at my company is OK with it because the code that's been developed under the XP model is so much better than what came before it.

  84. Microsoft methodology by Bouncings · · Score: 2
    Actually the Microsoft methodology can be more cloesly compared to the traditional waterful development model than XP. EP is similar to more Open Source development models. Here's why.
    • Both XP and Agile advocate self organizing teams. This is most certainly how Open Source works. Corporate development models force developers and users into certain roles without any real organic feel for who really should do what.
    • The point of pair programming is to put more than one eye on the code. Yes, it most certainly does slow a project down but it also increases stability. In most corporate waterful environments, more than one eye has not seen the code. Most Microsoft bugs are careless mistakes. With Linux, although there is no real pair programming, Linus or an experienced developer does look over all submitted code. It's the same end result.
    • Microsoft has very long periods inbetween releases. Not even final releases are "production quality." Linux has incremental releases more similar to XP. The only difference is, because Linux is so mission critical, they don't label each release as "production quality" -- but compared to most commercial software, a BitKeeper (they don't use CVS) snapshot of the Linux kernel is better than "production quality" code from MS.
    Other comparisons, such as an on-site user, simply do not apply to non-desktop software.
    --
    -- Ken Kinder ken@_nospam_kenkinder.com http://kenkinder.com/
    1. Re:Microsoft methodology by J.+Random+Software · · Score: 2

      There have been many broken Linux releases (remember the 2.4 VM mess? IDE in early 2.5?), and that's the way it's supposed to be--the point is to get them into people's hands and find that out. No amount of software design can prove that all commodity hardware actually behaves the way you thought it does.

      IMHO Linux isn't much like an XP project. There's no comprehensive unit test suite--the Linux Test Project isn't integrated and mostly goes after system loads, and patches without test cases are continually being applied. Refactoring in the kernel sounds pretty hard, so it happens seldom and reluctantly. Not all contributors are rigorous; quality is only high because Linus can reject any patch that doesn't look sound. Ownership of many subsystems seems stronger than XP recommends. But most every kernel hacker is also a serious kernel user, so I'd say the onsite customer practice is in good use.

      (BTW, Waterfall Model was misspelled.)

  85. The problem with "To each his own" by Bouncings · · Score: 2
    Yes, yes, to each his own. Everyone can use their own methodology, right? Well, not really. Unless you work in a one person company, or you're a free lancer, or you're CowboyNeal and you never do any work ;-) you have to use the same methodology as your coworkers.

    Personally I like XP. For all the usual reasons. But, you see, my boss doesn't like for all the usual reasons. So I don't use XP. In the corporate world, it's "to each his boss's own."

    --
    -- Ken Kinder ken@_nospam_kenkinder.com http://kenkinder.com/
  86. Re:Only terrorists think of casual, non-vanilla se by Boronx · · Score: 0, Offtopic

    (BTW, Clinton was "[suboenaed] for having his dick sucked" by Paula Jones' attorneys, not by "Senior Republicans"). Only in the sense that the Jews were killed by SS squads and not Hitler or Eichman. (Whoops...Godwins law) The first part of your post is true. Prostitutes in cities that have hosted both, report triple the business at the Republican convention compared to the Dems.

  87. Extremely Stressed by Anonymous Coward · · Score: 0

    I worked for an extreme company funded by extreme VC's with extreme cash, did extreme pair programming with an extremely obnoxious guy with extreme B.O.

    We went through our cash reserves extremely fast, are now are extremely insolvant, and I did an extreme career change. I am now a *mellow* gardener.

  88. What? by Dan+D. · · Score: 2

    You know, I like XP and all, but having a chapter title like Hype or HyperProductive (which sounds like Working Hard or Hardly Working... aka Super Lame) is just... Oh I give up, I'm just the Roadkill on the Information Super Highway and other really bad puns or office jokes.

    --
    People who quote themselves bug the crap out of me -- Me.
  89. Attentive work, citizen. by Anonymous Coward · · Score: 0

    Be vigilant for other threats to American sovereignty, like Sylvester Q. McNamara, Dr Martino Cortez, Slobodan Milosevic, Prof Daly, etc. That guy's got more characters than a unicode typeface.

  90. Extreme programming by Anonymous Coward · · Score: 0

    More like Extreme Crap!

  91. Yes but what about suitability of the delivered by Anonymous Coward · · Score: 0

    product? Even if it adheres exactly to the specifications, if it doesn't solve the problem being attacked the project is a failure, even if you get paid. The point of XP (among other things) is to allow more flexible business requirements to be met.

    By including a senior user on the project team, you iteratively approach the bulls-eye of the target. The delivered system IS what they needed, even though they didn't know that at the beginning of the project. They never know what they need at the beginning of the project, and XP helps overcome that obstacle.

  92. You left out Stage 1.1 by DaveAtFraud · · Score: 2

    Stage 1.1: Buzzword Oriented Development projects.

    This stage occurs when the fad is recognized as the "next big thing" to have on your resume. This is because the PHBs will all assume that they can blindly apply the new methodology to their problem space. The negative lessons learned from this blind application of the new methodology leads directly to stage 2 (i.e., this is where the "...conditions a, b, c, d, and e." come from) but in the meantime people with the right buzzwords on their resume can command top dollar salaries because the PHBs believe the new methodology is THE silver bullet. THERE IS NO SILVER BULLET so each new methodology becomes a fad that is misapplied as if it were. The true believers and the people who want to have all the right buzzwords on their resume contribute to the fad. After the fad has run its course (post stage 3), it may end up contributing some tools that are effective when applied to the appropriate problem space.

    And, yes, by this definition, every advance in programming methodology was at one time a fad.

    Deal with it.

    --
    They that can give up essential liberty to obtain a little temporary safety deserve neither safety nor liberty.
    Ben
  93. Compiler errors? by Anonymous Coward · · Score: 0

    "Far, far less than 50% of my time. For each hour I spend coding, only a few minutes will be spent fixing compiler errors.

    If you are running in to compiler errors that often, you should look for a new compiler.

  94. eXtreme bogosity by Anonymous Coward · · Score: 0

    I am unfortunate enough to work in an eXtreme programming environment. Let me share that, at least AFAICT, it produces CRAP software. Here are the major problems I have found:

    1. Pair programming quickly breaks down into personal pride battles. One programmer inevitably will disagree with another on many minor points. This leads to damaged relationships when one programmer ( not necessarily the more experienced, just the more vocal) begins to command the collaboration as the other seeks a way out.

    2. While long design cycles lead to over-engineered features that customers don't ask for, short iterations produce brittle features that are hell to maintain when alterations need to be added. The best solution is always somewhere in between.

    3. "Do the simplest thing possible that could work" is utter hogwash. An engineering team always has a variety of talent and experience levels. What one programmer finds simple is a complete mystery to another and horribly complicated to a third. What you end up with is a developer passing through pointers to modules that shouldn't have it, calling code in ways it was not designed for simply because it could "possibly" work. And suddenly, all those neatly defined, simple modules turn into one horrible monolithic mess that crashes and leaks memory. A developer should have to understand his changes in a wider context before pursuing them. Just because it compiles and passes the unit test doesn't make it shippable or solid.

    3. Unit testing: against what XP dictates, the test should NOT be written by the developer. Too often, the unit test is defined, then modified later by the developer to account for weaknesses in the code. We have unit tests that checks for a specific output that the developer thought was correct, not necessarily correct output. So, someone fixes a problem and the unit test fails. So the developer tweaks the test to succeed. Then another fix breaks it again. And eventually you end up with a poorly written unit test designed by someone who just wants to go home and get some sleep.

    4. Customer feature development: the way XP handles this is too short-sighted. It's like driving. Aim too high and you start hitting potholes and change lanes into other cars. Aim too low and your bobbing and weaving trying to stay between the road lines. Too often, the customer isn't all that smart, either. It is the company's job to analyze patterns in what customers are requesting. For example, the customer begins to request lots of extra filters for that spam blocking software. Maybe it's time to generalize the rule engine for faster future turnaround? Ah, but that's not the "simplest possible thing that could work" is it? So your team ends up with millions of lines of repeated code of varying quality because your 8 developers each only had 2 weeks to turn it around without spending the proper amount of time understanding what the customers are *really* asking for.

    Anyways, my 2 cents.

    Anonymous, as always.

    1. Re:eXtreme bogosity by duckyd · · Score: 2, Insightful

      1) This is evidence that the developers you work with are "small" people. People with over-developed egos shouldn't be hired into an XP environment

      2) If brittle features are being produced, then the coding is poor. It's my belief that short cycles are more likely to produce better code, given a decent coder.

      3) I think this needs to be taken with a grain of salt. It's not the absolute simplest thing that can work that should be done, but the simplest thing that makes sense that should be done. A co-worker of mine has a sticky note that says "don't copy broken code". That might be ammended to read "don't write crap code". also see me response to #4

      3b) If the developer is tweaking a test just to co home, they need a swift kick in the ass. see the recommendation not to write crap code above

      4) This is what re-factoring is for. As soon as you have repeated code in a few places, it's time to site down, actually think, and refactor the code to remove the duplications.

      It very much sounds to me like the problems you've had with XP are not problems with XP itself per se, but problems writing decent code in general. XP is not a magical want that will make everyone's code beautiful, efficient, and flawless, but it does provide a framework in which high quality software can be produced and maintained relatively efficiently and painlessly. My experience with it has been extremely positive - maybe I'm biased ;)

    2. Re:eXtreme bogosity by Sparks23 · · Score: 1

      Well, as a former XP developer -- see my post slightly earlier in the thread -- I both agree and disagree, Ducky.

      Sometimes, you don't get to pick who works with you on an XP team. Our team worked really well when the whole team was part of the interview process and hiring decision...but when that power was taken from us, we saw more problems.

      I agree wholeheartedly that when done right and supported fully, XP can produce some of the cleanest, best code I've seen and be one of the most rewarding environments to work in. But sometimes when it's not done right, it's not the fault of the engineers on the team in question, etc.

      --
      --Rachel
    3. Re:eXtreme bogosity by Anonymous Coward · · Score: 0

      >This is evidence that the developers you work with are "small" people. People with over-developed egos shouldn't be hired into an XP environment

      You are probably right about the points you mentioned. You should NEVER hire some one who can THINK individually for a XP team. The methodology itself assumes this point by getting some one to double guess you by looking over your shoulder as you program. XP is for incompetant programmers willing to be led by a "Uber Allas" leader.

  95. all the Xp labs at my work.... by Anonymous Coward · · Score: 0

    are full of folks with their headphones on.
    I think they might be using Instant messaging or something

  96. Re:TDD book by stremo · · Score: 1

    Kent Beck has just published a book on test-driven development. The Java example is kinda lame, but the self-referential testing framework written in Python and used to test itself during development is kinda cool. The patterns at the end are what really helped me, though.

    If you want one idea out of XP that makes sense today, download an xUnit and try TDD.

    Stremo
    Die free or die trying

  97. XP from a survivor... by Sparks23 · · Score: 5, Interesting

    I joined a company a year and a half ago, becoming part of an Extreme Programming development team. And I was pretty skeptical at first.

    I mean, here I am, coming into a compiler-and-assembler design team and I'm being told that we have to /share/ computers? That we have /weekly/ design meetings? And all sorts of other strange and unfamiliar things.

    But to my surprise, it worked. We each had our own 'personal space' computer for e-mail and everything else, and when we were working we went into our lab as a group. We'd look at the board of current 'stories' (overall larger tasks) and pick a 'task card' from the story. (Literally, taking an index card off the corkboard and clipping it into a little holder by our computer.) And then you sat down at a computer with two monitors, two keyboards and two mice and you pair programmed. If there were an odd number of people, you had to have someone else go over your code with you before you checked it in. All code had to have tests written for it /before/ the code was written, and the code couldn't be checked in until the tests -- and all existing tests -- passed.

    And to my surprise, it worked. With two people looking at code, the little mistakes were harder to make. Design problems were more easily tackled. Because we all shifted around and changed partners a lot, we all learned all the areas of the code and had a better understanding of the system as a whole. The way tasks and suchnot were partitioned out worked very well. Meetings didn't interrupt the flow of things, because almost all meetings /had/ to be held standing up. (I.e., everyone starts to get tired, and when people start sitting down a meeting had to end.) We took a fifteen minute break every two hours to keep from getting into fugue states, and because of that productivity we were never working overtime (thus keeping us from burning out). It was one of the most rewarding development experiences I've ever had.

    BUT...this also became a story in how Extreme Programming can /fail/. We lost support within the rest of the company for the XP process, and that hurt a lot; XP relies on getting weekly or bi-weekly feedback from your 'customers' (i.e. the target for your project), as well as having them set what the more important tasks for the next two weeks were. Suddenly, we were having to plan out things six months in advance and operate in a vaccuum, which really hampered the Extreme Programming method. In addition, our team was expanded...and we learned the difficult way that while XP works really well for an 8-person team or so, it does /not/ mesh well with larger teams.

    So, I actually would probably agree with the book's assessment; XP is well-suited for certain situations (small team, active customer feedback and support, quick dev cycles), but will fail miserably (and I do mean miserably, as in ruining the morale of the team) if you do not have the full support infrastructure.

    Admittedly, some of XP's practices -- tests written before code, meetings held standing up to keep them from dragging on indefinitely -- work pretty well even outside XP. But the system as a whole works well only within a specific target range.

    --
    --Rachel
  98. Proof? by Anonymous Coward · · Score: 0

    Regarding Republican Covention Prostitution upswings:

    Source? Links? Please post. Thanks.

  99. High Standards by Anonymous Coward · · Score: 0


    "[...] the high standards of the XP series are maintained, with flawless editing and layout."


    The XP books are some of the worst examples of technical writing out there. I could barely make myself read Beck's book because of his poor writing skills.

    If you want to read a well written book on software development, read Alistair Cockburn's _Agile Software Development_.

  100. Face the issue with reason rather than passion by joaodk · · Score: 2, Interesting

    Wether or not XP is going to stick is a very interesting issue. However, There is a very important point that goes unnoticed: WHY all this talk about XP?

    In the past few years, most software processes were generally loathed by the average geek, because there was "so much documents to generate, and so little code to write". The real extreme (no pun intended) geek would even consider business process analysts a "project overhead". All he really wanted to do was coding.

    Then came those agile methodologies like XP, and all of a sudden there are loads of people preaching that this is it, that XP will save us. that using SCRUM improves your lifestyle. etc.

    My point is: a lot of people tend to like XP NOT because they acknowledge it is efficient as a software process, NOT because they used it and their project was a ressounding success.

    My point is: a lot of people tend to like XP because they, in a way, are seduced by its promise of working by a methodology where the focus is coding. seduced by the promise that they dont have to write "useless" documents and activities, and their project will thrive if only they follow those simple rules...

    Im not saying that XP is garbage, on the contrary, I think it brings some VERY interesting ideas like pair programming, and its test-planning.

    what I AM saying, is: if you are considering to use XP you should be very careful and try to look at it with reason, rather than passion.

    you should ask yourself at least this two questions:

    1) "The problems I faced in my experience would be eliminated if I had followed the rules of XP?"

    2) "The practices of XP would be enough to make my project a sucess?"

    whatever is your decision, I guess we could call this a good start.

  101. If it ain't fixed, then break it again by Anonymous Coward · · Score: 0

    For extreme programming to work out, you and your team need to have outstanding ability.

    If they have outstanding ability then you would not need XP to begin with. XP is an attempt to prevent high failure rates in a given shop. If you have "outstanding" people, then you won't have a high failure rate to begin with. If their projects fail that often, then they are not qualified to be called "oustanding". If the failures were not their fault, then the solution is to rid the problem(s) and try again. If it is bad management or stupid developers, then fix them or get rid of them. Bad people have the skill to ruin *anything*.

    The best methodologies in the world are not going to make silk purses out of a sows ear.

    There may be many paths to success. Good people found at least one such path. For some, XP-like approaches may be such a path, but it is not likely the only path. Study successful people in your org if you want to learn which methodologies work at your particular organization.

    1. Re:If it ain't fixed, then break it again by tpv · · Score: 2
      If they have outstanding ability then you would not need XP to begin with

      No, but they may want it.

      The biggest thing I like about XP (and other agile methodologies) is the requirements approach.

      I'm sick of projects where the requirements change, but there's no formal process to handle the change.
      The team has to keep changing things to cover the requirements change, but process doesn't officially recognise the change, things just go crazy.
      The biggest benefit of agile is that it recognises that change happens. It happens because, over thel ife of a project, the business needs change, and also because it is very hard for people to even know, let alone explain what they want up front.

      --
      Read more of this story at Slashdot.Read more of this story at Slashdot.Read more of this story at Slashdot.
  102. A big problem with XP by BitwizeGHC · · Score: 3, Insightful

    ... is that it is tied to Smalltalk, and hence to object-oriented methodology.

    OO isn't the only way to program. It isn't even the best way to program, in certain situations.

    XP, Design Patterns, and fads like these are all nice in that they reflect certain practices which make for good software. But they are the CS equivalent of "How to Draw Comics the Marvel Way": great at what they do, good at expressing the concepts behind a particular style/method, not very useful when you want to cross over into other styles/methods.

    --
    N4st0r, trixx0r h0bb1tz0rz! Th3y st0l3 0ur pr3c10uzz!
  103. Synchronicity by Slurm-V · · Score: 1

    One of my favourite blogstoday discusses the use of the word xtreme. Misses progging, so it's somewhat OT.

    --
    Of course it's going off the rails. How else is it ever going to fly?
    1. Re:Synchronicity by Slurm-V · · Score: 0, Redundant

      Now with chewy well-formed url goodness (d'oh)

      One of my favourite blogs today discusses the use of the word xtreme. Misses progging, so it's somewhat OT.

      --
      Of course it's going off the rails. How else is it ever going to fly?
  104. Re:TDD book by Anonymous Coward · · Score: 1, Informative

    The title is "Test Driven Development: By Example"
    It was just published November 8, 2002 which explains why a lot of us
    who are usually on top of things haven't heard of it yet.

  105. XP = Higher Consulting Fees by Anonymous Coward · · Score: 0

    Call yourself a guru. Invent a "new methodology" and give it a sexy name. Write books. Pump out the hype. Rake in the cash.

  106. Question for readers by rpg25 · · Score: 1

    For someone who's a little interested in Extreme Programming, would this be a reasonable first book?

    If it were possible, I'd love to make my first book about Extreme Programming be one that took its limitations into account, discussed pros and cons, etc.

    --

    Somebody put my cheese under their copy of Extreme Programming

    1. Re:Question for readers by Stu+Charlton · · Score: 2

      this one would be a reasonable intro, though supplement it with online resources. the 1st book "extreme programming explained" is the manifesto. the 3rd book "extreme programming installed" is the how-to. the 2nd book is details of the planning process..

      another book is "Agile Software Development" by alistair cockburn.

      --
      -Stu
  107. Brings to mind that joke... by plierhead · · Score: 2
    Q. Whats the difference between a methodologist and a terrorist ?

    A. You can negotiate with a terrorist.

    --

    [x] auto-moderate all posts by this user as insightful

  108. Another reviewer's criticism of Questioning XP by WallyHartshorn · · Score: 1

    In another review of this book, the main criticism I remember is that the book's author admitted up front that he had never really participated in a full XP project. It seems a bit odd to criticize a methodology that you've never actually tried yourself.

  109. Moderation... by Anonymous Coward · · Score: 0

    The post was moderated up because it contributes to the conversation by addressing a question many slashdot readers probably have, not because of the writer's assumed intelligence.

    Remember: the point of moderation is to make slashdot message boards more readable and interesting, not as some sort of Intelligence or Popularity contest.

  110. Hero Programmers and XP by Anonymous Coward · · Score: 0

    If you have hero programmers, the worst thing you can do to them is to make them pair programm with anyone but hero programmers.

    Don't waste your hero programmer on part of a methodology meant to deal with average programmer. Let the hero programmer do tasks they take off the board by themselves. It'll be done and tested. Don't waste your money hampering a hero.

    1. Re:Hero Programmers and XP by Anonymous Coward · · Score: 0

      Well put... I would like to correct you on that methodologies like XP are really targeted towards the mediocre programmers, rather than the average programmer. Average programmer still has enough inteligence and immagination than one to be bogged down by a methodology.

  111. Sherman, set the way-back machine... by Bozdune · · Score: 2, Insightful

    ... to 1976. Remember PSL/PSA? RSL/RSA? All their brethren and siblings? Probably not -- many of you hadn't yet achieved zygote status at that point.

    Anyway, the same breathless hysteria about how processes improved, productivity increased, errors decreased, etc. etc. blah blah blah was rampant back then. I was a (very) junior member of a non-profit team hired by the Army to figure out whether these claims were true or false.

    Our conclusions were simple. The productivity and other claims were hopelessly inflated. However, we were able to conclude that any systematic methodology seemed to produce somewhat better results than no methodology at all -- and it didn't really matter what the methodology was.

    Deja vu all over again.

    1. Re:Sherman, set the way-back machine... by MikeBabcock · · Score: 2

      A number of methodologies have been tried that actually increase productivity and decrease errors per line of code.

      A recent article about coding firms in India points out that they talk in single errors per thousand lines of production code, not per hundred.

      --
      - Michael T. Babcock (Yes, I blog)
  112. extreme programming by Anonymous Coward · · Score: 0

    Extreme Programming grew out of the dot com era, the only time in history where employees where treated as something valuable and made more money than managers.

    XP, unfortunately, is going the way of the NASDAQ. Down.

    That said, I personally really like the modified form of xp that we've been practicing. No pair programming tho.

  113. The real objection by maxpublic · · Score: 2

    So what's the real objection to Extreme Programming? Well, like any other 'extreme' activity it's simply an moron's way of making whatever he happens to be doing sound cool. This was pathetic when it came from frat boy losers and their 'extreme' sports, but it's even more stomache-turning when the geek set decide that they, too, are 'extreme' - and while sitting on their fat asses plunking away at their keyboards.

    Get a life, you 'extreme' losers.

    Max

    --
    My god carries a hammer. Your god died nailed to a tree. Any questions?
  114. the right tool for the job by Anonymous Coward · · Score: 0

    I found this bit funny, and rather telling:

    XP emerges favourably, with one serious caveat -- the author concludes that XP is only suitable for a very narrow range of projects, and those that can fulfill all requirements probably stand a significant chance of succeeding using any of the similar methodologies.

    Or to paraphrase: XP is a really good thing to use for those cases where it really doesn't matter what you use.

  115. chapter titles; by Anonymous Coward · · Score: 0

    Setting the dials on ten
    But our dials go to eleven.

  116. Upgrade Treadmill? by istartedi · · Score: 3, Funny

    Extreme Programming Explained (Beck)
    Planning Extreme Programming (Beck & Fowler)
    Extreme Programming Installed (Jeffries et al)
    Extreme Programming Examined (Succi & Marchesi)
    Extreme Programming in Practice (Newkirk & Martin)
    Extreme Programming Explored (Wake)
    Extreme Programming Applied (Auer & Miller)
    Extreme Programming Debunked (Archie D. Bunker)
    Extreme Programming Filters Into Academia (Fileas Snodgras, PhD)
    Learn Extreme Programming in 21 minutes (QUE Books)
    Extreme Programming Departs And Thanks You For All The Fish (Sqeeeeeek sqk sqk sqk)
    Designing, Touting And Debunking Methodologies For Fun And Profit (Popular Science Press)
    Extreme No Money Down Real Estate (Carlton Sheets)

    --
    For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
  117. It's not called that... by aminorex · · Score: 2

    ...unless you call it that.

    Call it an Agile Methodology, or the Beck Methodology, or the XP Methodology.

    --
    -I like my women like I like my tea: green-
  118. ...but the alternative! by aminorex · · Score: 2

    XP is the revelation of divine spirit, in my book,
    because it saves me from the alternatives: Water-fall
    management, or the Unified process. I would
    be equally enthusiastic about Fascist Programming
    or Insects-for-Lunch Programming if it saved me
    from Unified.

    --
    -I like my women like I like my tea: green-
  119. Silver bullets by Harald74 · · Score: 1
    As with programming languages, there is no silver bullet


    I would argue that there is no such things as a silver bullet, in any field!
    --
    A)bort, R)etry or S)elf-destruct?
    1. Re:Silver bullets by Anonymous Coward · · Score: 0

      >>As with programming languages, there is no silver bullet

      I would agree 100% with this. The problem with these methodologies are that eveyones a pundit, and expects it to work everywhere, just because it worked for GM, Ford, Chrystler, etc, etc, where they throw all kinds of money at it. With that kind of money, you can make anything work with a few good programmers.

      I have worked in Extreme programming environments and have been EXTREMELY FED UP with the whole process. The idea of Pair Programming (2 programmers working on a single keyboard, while the other looks over the shoulder) is the dumbest idea I can think of. When did we become so dumb so as not to trust our programming skills? This is fine for a big company like GM, Ford or Chrystler where you have lots of dumb programmers and little work to do, but if you are working in the real world, you do not have the luxuary of pair programming. Actually, its not a luxuary, but a menace as far as I'm concerned. Pair programming would be rally cool if you can get the other guy to do all the work while you go to the beach and enjoy!

      Secondly, any one who has to write as much code to test what they code, really should go back to school and finish up the Computer Science Degree they never finished. Besides, how do you know the code you wote to test the real code is correct? Maybe you have to write more test code to test the test code... I'm not against writing test code, but it seems really silly when you take it to the extreme.

      I think we need to do less of XP and more of CSP; Common Sense Programming!

  120. Extreme ironing by Anonymous Coward · · Score: 0

    You are right, it's for people getting tired of the good old ironing.

  121. Bah, Just had an exam on this stuff :( by Anonymous Coward · · Score: 0

    I come here to slashdot to take my mind off my exams, and what do I get eXtreme Programming. Dang that exam was evil.

    JC

  122. Re: peer programming by JSkills · · Score: 1
    Well I can certainly admit when I'm wrong. You're the first real person I've heard from (examples in XP books aside) that successfully practices peer programming. Not to say I haven't engaged in it on certain portions of projects for short periods of time, but I cannot fathom doing it as a full time practice.

    I can see all the benefits, I just can't picture my impatient self sitting by watching someone code. It would be too frustrating!

    Thanks for the reply though ;-)

  123. Case Studies by Anonymous Coward · · Score: 0

    I've been reading a lot of arguments for and against eXtreme Programming, but I have yet to here of any real objective studies done on on eXtreme Programming. Anybody have any links???

  124. Nygard's 3rd Law of Open Source Design by Nygard · · Score: 2

    Version 2 will be based on a plug-in architecture.

    --
    "Genius may have its limitations, but stupidity is not thus handicapped." --Elbert Hubbard (1856-1915)
  125. Common Sense Programming by Anonymous Coward · · Score: 0

    The problem with these methodologies are that eveyones a pundit, and expects it to work everywhere, just because it worked for GM, Ford, Chrystler, etc, etc, where they throw all kinds of money at it. With that kind of money, you can make anything work with a few good programmers.

    I have worked in Extreme programming environments and have been EXTREMELY FED UP with the whole process. The idea of Pair Programming (2 programmers working on a single keyboard, while the other looks over the shoulder) is the dumbest idea I can think of. When did we become so dumb so as not to trust our programming skills? This is fine for a big company like GM, Ford or Chrystler where you have lots of dumb programmers and little work to do, but if you are working in the real world, you do not have the luxuary of pair programming. Actually, its not a luxuary, but a menace as far as I'm concerned. Pair programming would be rally cool if you can get the other guy to do all the work while you go to the beach and enjoy!

    Secondly, any one who has to write as much code to test what they code, really should go back to school and finish up the Computer Science Degree they never finished. Besides, how do you know the code you wote to test the real code is correct? Maybe you have to write more test code to test the test code... I'm not against writing test code, but it seems really silly when you take it to the extreme.

    I think we need to do less of XP and more of CSP; Common Sense Programming!

  126. I sense a career path here... by Mr.+Fred+Smoothie · · Score: 2
    Let's see, when did you go from being a
    If software specifications are not worth formalizing on paper - it isn't worth creating.
    Hardware Engineer, to a
    It just formalizes the lazy practices of programmers. 50% to 90% of software projects fail because of embracing fly-by-night "technologies" like this.
    Manager?

    ;-) No offense, really.

    But so as not to be merely flaming you (and with all due seriousness and respect), let me deal with your points individually again:

    • Formal specs or IT AIN'T WORTH IT -
    Puleeaase. This is great, maybe, if you work in a company that does shrinkwrap software, you have no real direct link to your customers anyway, and a great marketing department to convince your users that what you came up with for "what they want" based on the little bit of focus-group-based market research you did is really what they want.

    But the VAST majority of software projects are internal to a company or are bespoke software developed on a contract basis. In those cases, getting the requirements exactly right is very important, because you actually have a contract that states that you will meet the customer's goals, the goals are explicit but often conflicting and from multiple interested parties w/in the client, and they almost always change before the project ends. So your assertion basically reads, "90% of software shouldn't be written and companies should stick w/ phones and pencils."

    • It just formalizes the lazy practices of programmers -
    Well, if programmers are lazy (Larry Wall says they are, and he's pretty smart), then you better design your software processes (and programming languages -- Thanks Larry!) to accommodate or explictly capitalize on that. All of the Agile Methodologies are somewhat premised on the fact that people are the ones that write software, so you better choose a methodology which capitalizes on their stengths and mitigates their weaknesses.
    • 50% to 90% of software projects fail because of embracing fly-by-night "technologies" like this -
    Well, last I heard is that the "canonical" figure is that 78% of software projects fail because of a variety of by now well-understood (by everyone but people making decisions on software projects, apparently) factors such as a) requirements change (that's right, there was an IRON-CLAD spec, but it changed repeatedly); b) unrealistic and inflexible project deadlines set before the project was initiated; and c) poor developer morale, growing exponentially over time because of the cumulative effect of a) and b).

    So, all of the Agile Methodologies attempt to address these things. You may not agree with the details of how they do it.

    But I doubt most of the software-using world will agree with "lets stop writing almost all software," either.

    --

  127. Many might disagree. by Stu+Charlton · · Score: 2

    I would highly suggest reading Ward Cunningham's "XP is guru friendly!" position paper, which I believe is part of the OOPSLA 2000 proceedings.

    Your evaluation is the exact opposite of the intent of XP. Martin Fowler has often railed against the notion of "plug compatible programming units" so prevalent in the minds of many IT managers.

    XP is a very humanistic approach, it relies heavily on oral history and varying the master/apprentice roleplaying model. It is guru-friendly, assuming the guru wants to share the love. If he/she doesn't have the desire to communicate his ideas to others, then he probably doesn't belong on any team - let alone an XP team.

    --
    -Stu
  128. give me another style and method by Stu+Charlton · · Score: 2

    and show me how they don't have design patterns. every programming form has design patterns, patterns that have evolved to solve repeatable problems. It' s like you're completely ignoring the context in which this stuff was created. Do you solve everything from first principles? They're not tied to object orientation.

    --
    -Stu
  129. XP works. by Stu+Charlton · · Score: 2

    XP can work, but it is not a first-order success factor for projects. I would suggest the critical success factors for projects are

    a) management support and consistency
    b) technical competence
    c) communications competence
    d) process competence

    XP fits into (d). If you're missing ANY of the above 4, which are in order of importance, chances are, you'll only succeed by accident. Sadly, most IT projects are delivered purely by accident.

    In detail:

    a) XP was created because many projects completely screw up one or more aspects of the above, and Kent Beck was sick of creating software that couldn't be used if the project was cancelled. So, XP is about delivering continuous value. But management (customer) must be consistent, they must speak with one voice, lest you fulfill the wrong goals.

    b) Success always, always depends on the people you work with. Surprisingly, often people are very good. Sadly, sometimes they're not. That's hiring, not XP.

    c) Team = Product. The quality of your team dynamics and communications are going to reflect the nature of the software that you write.

    d) Process provides a framework for agility. It aligns interests and ensures people's needs are being met. Traditional waterfall methods don't do this. Incremental and interative (i.e. agile) methods do do this.

    XP is but one of many agile methods, but is also a very special one because of its value system: communication, simplicity, feedback, and courage.

    Many projects and companies are politicized and play the CYA (cover your ass) game. They play "not to lose" the game. XP isn't like that - they play to win.

    --
    -Stu
    1. Re:XP works. by Anonymous Coward · · Score: 0

      >a) XP was created because many projects completely screw up one or more aspects of the above, and Kent Beck was sick of creating software that couldn't be used if the project was cancelled...

      What does this have to do with XP, and how does forllowing XP help or guarantee this dosent happen? Projects gets cancelled for any number of reasons, and a methodology is not what determines that. If anything, XP adds one more reason for cancelling a project because you need double the number of engineers to do the task that one engineer could do.

      >b) Success always, always depends on the people you work with. Surprisingly, often people are very good. Sadly, sometimes they're not. That's hiring, not XP.

      Good. finally we are giving credit where it is due. So, lets hire good engineers and forget talking about a process that has no relevance.

      >c) Team = Product. The quality of your team dynamics and communications are going to reflect the nature of the software that you write.

      Bingo. Yet again, we are hitting the nail on the head. A good team of engineers beats any monkey process.

      >d) Process provides a framework for agility. It aligns interests and ensures people's needs are being met. Traditional waterfall methods don't do this. Incremental and interative (i.e. agile) methods do do this.

      Agility dosent depend on a process, it yet again depends on the people working on it. The argument about waterfall method is so old that you dont even have to talk about it. This was addressed long, long time ago with the introduction of the OOAD. The ideas OOAD talked about is what Extreme Programming stole and re-branded under their name.

      >XP is but one of many agile methods, but is also a very special one because of its value system: communication, simplicity, feedback, and courage.

      Sad, sad, sad. Very sad. I thought you were following logic. Lets analyze your sequence of premises and conclusion.

      Premise 1: Success depends on hiring good people.
      Premise 2: Success depend on a good team.
      Premise 3: Totally unrelated argument here... about ideas stolen from other places
      Conclusion: XP is special and good.

      Where did that creap from? Go back to school and take the Logic 101 class you skipped. Success depends on your people, not on a stupid process. Give credit to your team, the people who make your project succeed. Take them out and treat them... give them a vaction... you can do lot to improve your team rather than giving credit to studpid process.

      Agility depends on how adaptable your people are to changing requirements, conditions and deliverables. Communication is something a team needs do if you use a process or not. Simplicity is always a beautiful thing. Feedback is needed in any thing, and courage, what the hell does it have to do with XP?

      I am not willing to give credit to a monkey who decided to group a set of things that everybody uses every day under the guise of a new keyword; Extreme Programming; XP is nothing but some good from common sense that people developed, with a few additions of his own that are so stupid. Fololow the common sense for delopment, and you dont need to call it a process.

    2. Re:XP works. by Stu+Charlton · · Score: 2

      "What does this have to do with XP, and how does forllowing XP help or guarantee this dosent happen?"

      I was merely stating what Kent Beck has repeatedly offered as the reason behind XP: it's a means of delivering value constantly, so that when a project getes cancelled, at least *something* valuable is in production. Contrast this to the longer development cycles of other approaches.

      "Agility dosent depend on a process, it yet again depends on the people working on it."

      My suggestion is that a talented team with a good process will have a greater chance of success than a talented team with no process, or a process that is incongruent with reality.

      "The argument about waterfall method is so old that you dont even have to talk about it. This was addressed long, long time ago with the introduction of the OOAD."

      I have seen countless OO projects planned under a waterfall methodology. Apparently, you're one of the few that thinks it's been discredited. I don't think it has.

      "The ideas OOAD talked about is what Extreme Programming stole and re-branded under their name."

      I find this curious. Certainly XP evolved out of the OOAD (Smalltalk) community, but to brand that as "stolen" has a connotation that I don't think is reflective of history. Perhaps you could elaborate.

      "Sad, sad, sad. Very sad. I thought you were following logic. Lets analyze your sequence of premises and conclusion.

      Premise 1: Success depends on hiring good people.
      Premise 2: Success depend on a good team.
      Premise 3: Totally unrelated argument here... about ideas stolen from other places
      Conclusion: XP is special and good."


      Perhaps I haven't articulated my position properly, as this isn't exactly what I intended.

      Premise 1: Success depends on management support
      Premise 2: Success depends on hiring good people
      Premise 3: Success depends on good team dynamics
      Premise 4: Success depends on an effective process
      Premise 5: Processes that promote agility tend to be effective in modern software development.
      Premise 6: XP in particular is special because it has a unique (and explicit) value system. It has the courage suggest that the most important thing in a software project is to actually deliver simple software through communication and feedback. This kind of value system is sorely lacking in many projects.

      Conclusion: I didn't really come to a conclusion, but a stab at one is: many talented teams with good dynamics and management support have still failed to deliver good software because their process wasn't congruent to their task and their environment. XP can help good teams play to win. If you're not a good team, XP won't help you.

      "Feedback is needed in any thing, and courage, what the hell does it have to do with XP?"

      All of the core values I listed were values that Kent Beck listed in the earliest days of XP's development in 1998, and they are repeated in the first XP book "XP Explained". They are also listed here.

      As for valuing courage, Beck's theory is that all methodology and process is based on fear. To actually focus on delivering software instead of documentation and "cover your ass" politics takes courage. If you haven't had to deal with it, tip of the Stetson to you, you're lucky.

      "XP is nothing but some good from common sense that people developed, with a few additions of his own that are so stupid. Fololow the common sense for delopment, and you dont need to call it a process."

      If it is such common sense, why is there so much resistence to it? And please don't just say "well there's resistence to the stupid elements", because for someone preporting to be logical, you're certainly inserting a very subjective evaluation into your critique.

      It seems that every critic of XP dislikes a different aspect of it. I would suggest that individually, an XP practice may seem common sense. What's not common sense is the discpline involved in the way XP proposes each practice, and the articulation/packaging of all 12 practices into a framework where each practice reinforces the other.

      --
      -Stu
    3. Re:XP works. by J.+Random+Software · · Score: 2

      Agility also depends on how adaptable the project's current state is, not just team mindsets. If you do a grand design up front and don't maintain comprehensive unit tests, major changes are going to involve huge risk and lost work.

    4. Re:XP works. by Anonymous Coward · · Score: 0

      Double the engineers? It's debatable whether coders A and B could accomplish more together or separately, but that A alone could accomplish just as much as A with B would mean that B's continuous code review, design ideas, and keeping A on task (and vice versa) was worth *nothing*, which is awfully hard to believe.

      Hiring good engineers doesn't make requirements any more stable. OOAD processes put design effort up front into making some behavior replaceable while inheriting the rest, all without editing (and probably breaking) the base class. But that's all wasted if the wrong kind of change happens. Agile processes skip much of that design work (so you have something usable sooner) and lower the cost of altering the code you have in unanticipated ways (so you have to throw away less of your work).

  130. Methodologies are for Process Monkeys by Anonymous Coward · · Score: 0

    Methodologies like XP are usually pushed on by the process monkeys that are incompetant as engineers. Ask one of these process promoters to write some code and the first response is "I'm a software architect and I dont code anymore" I wander if they have ever coded in their life. The chances are that this is some one who read a book and think he has all of a sudden become enlightned. All of the good, better and the best developers I know of hate processes, but are forced to adopt these methodologies because the incompetant engineers who have climbed up the political ladders by kissing ass wants to push a process to cover their ass. These bullies know how to bull shit their way out, and the poor competant engineer who loves his work ends holding the bag.

    If you are pushing XP, the chances are that you are a lousy programmer trying to hide behind a process, so some one else can be blamed for not following the process. Why is it that a process has become so important over the real task at hand? Why would any self respecting engineer want become a process monkey?

  131. Working pairs needs resources but works great! by andr0meda · · Score: 2


    I've had the opportunity to do a little pair programming in a large, modular framework project, and frankly, we mixed both approaches (the one you describe here, and pair-programming). From my own experience, if algorithms are really hard and complex it is better to pair program, even if it takes longer. XP is not just about programming faster, it is also about being able to maintain the code, and about shared ownership of that code. It also makes more sense that the algorithm has a higher probability of being correct when somebody needs to understand what you're doing and starts asking questions.

    I also agree that some jobs just don't need pair-programming. Writing a string class and a test-suite for it is something you can do by yourself easily, and adding a peer to review your code might help you with typos' but since compilers are getting pretty fast and verbose these days, the added value of having a peer sitting next to you significantly drops.

    At the moment I'm in the situation where we don't have enough highly skilled people to do any pair programming, in a large & highly complex project with a lot of timing, data & code dependencies (a game), and this sometimes leads to clashes and refactoring, and to people getting confused by the internals of the code, and code that doesn't allways behave like it should in border-line cases.

    Sometimes the fun is in the details :)

    --
    With great power comes great electricity bills.