Slashdot Mirror


Extreme Programming Refactored

fancellu writes "Extreme programming (XP) first hit the mainstream programmer consciousness a few years ago, with the publication of Kent Beck's Extreme Programming Explained. XP was controversial back then (and still is), because it argued in favour of hitting the 'reset' button on accepted software development practices." fancellu reviews below Extreme Programming Refactored: The Case Against XP, and offers this disclaimer: "I should point out that I get a couple of small mentions in this book (the authors quote an email from me), and I also happen to agree with a lot of what the authors say. But I'll try to be as impartial as I can with this review." Extreme Programming Refactored: The Case Against XP author Matt Stephens and Doug Rosenberg pages 400 publisher Apress L.P. rating 9 reviewer Dino Fancellu ISBN 1590590961 summary Bold critique of extreme programming - at last someone is prepared to say "The emperor is buck naked."

The Previous Extreme - What XP Set out to Fix It had previously been accepted practice to spend months (years, even, on large-scale projects) gathering requirements, then another year or two on design, before a single line of production code had been written. The infamous "big bang delivery" occurred when this gigantic monolith of a software system was finally delivered to the customer, only for the customer to retort that this was nothing like what he wanted.

It was also accepted practice to divide the system into separate subsystems, and attempt to integrate them after several months. By this time, each subsystem would have taken on a life of its own, and integrating these disparate monoliths together gave a whole new meaning to "plug and pray."

How XP "Fixes" It XP takes the development process to the other extreme, by shortening the "waterfall" lifecycle to weeks, days, even minutes. In fact, Kent Beck describes XP as a "waterfall run through a blender." Iterations typically last for a week or two; there is a high emphasis on code quality via unit testing; and code is integrated "constantly" so that it never becomes out of synch with the rest of the project. Beck is often quoted for saying that the XP practices "turn the dial all the way up to 10" -- that is, if something is good (testing, integrating, pair programming etc), well then, let's do it all the time.

There's a lot to be gained from learning about XP, and agile practices in general. However, many feel that XP has taken things too far. By taking things to the opposite extreme, we're just introducing a fresh set of problems. The optimum solution, then, must lie somewhere between these two extremes. That is fundamentally what Extreme Programming Refactored (XPR) is about.

Optimizing the Process There's been a lot of controversy surrounding this book. It grew out of an equally controversial article that appeared on the author's website. XP advocates were arguing on Yahoo! Groups over XPR's good and bad points, miraculously, months before the book was even available. XP zealots were even posting messages telling others not to buy the book, before they'd even had a chance to read it for themselves and find out what it's all about.

It's important to note that XPR isn't the anti-XP slam piece that some people had been expecting. It does rip into the XP practices in plenty of detail, but importantly it also describes alternatives, and talks about the good aspects of XP.

The authors make the argument that "turning the dial up to 10" mostly isn't such a good thing, and that to achieve our "holy grail" development process, we just need to turn the dial down a little bit -- let the milk simmer rather than boil over. We can do this by adding in some additional practices that take the burden off the overloaded, heavily interdependent XP practices.

For example, not everyone likes to pair program (with two people sitting at one computer). It just isn't for everyone. However, XP relies on everybody in the team pairing all the time. So if you don't like to "pair up," what choice do you have but to leave the project? XPR adjusts the other practices, placing a bigger emphasis on up-front design and documentation, so that pairing up doesn't have to be mandatory.

XPR also argues that it is possible to achieve a decent design before writing the code. The authors don't want a return to "BDUF" (Big Design Up Front), but instead to achieve an ideal middle-ground. The result is more akin to the monthly Sprints found in Scrum (www.controlchaos.com).

Similarly, XPR argues that the customer (and users) usually do have a pretty good idea what they want from a new system, and that they don't have to see a live system first before realizing that they wanted something entirely different. The authors argue in favour of interaction design as a way of achieving this goal.

XPR achieves all of this with more than a mild dose of satire. It's important to realize this -- the book is essentially "taking the piss" out of the more extreme XP practices, and the quasi-religious Extremo culture that has quickly grown up around XP. It has lots of serious things to say, but has a slight danger of that being lost "in the chuckles." There again, the danger is less to do with the book, and more to do with the reader.

XP sealots will never be swayed by such a book, naturally, but they are not the audience. It is for those undecided, or the cowed XP skeptics who know something is very wrong at the heart of the beast, but haven't have the words to say it. Even for zealots, I'd hope they'd put the hatred for long enough to at least temper their XP actions, to turn the dial down a little, to read the contents with the possibility in their minds that XP isn't the final perfect expression of all programming methodologies. Just for a while...

If you are scared of the contents, a favorite XP accusation, then of course you'll point out the 'needless humour,' blah blah, anything rther than address what the book says. Form will be far more addressable than content. It's the old "ignore this man, he wears a colourful tie" excuse, pick on some small detail that you feel is a weakness and totally ignore all the embarrassing questions you'd rather not address. If you like the contents, then the humour will be seen as a playful, court-jester like addition to what is a seriously analytical book

In conclusion, this book is well written, thought provoking, and above all entertaining (an aspect which seems to be proving almost heretical among some XP advocates). I found this to be a fun read, unlike some books, it was never a chore. It's extremely conversational, like having a cynical, wise-cracking guide. It's a pity more computer books aren't this fun. A spoonful of sugar and all that...

In fact this book is pretty damn wonderful. I know, it may sound a bit gushing, but before you review my review, give the book a read yourself. It's a thing of beauty, a rare mix of positive and negative, sweet and sour, opinion, and XP's favorite emotion, courage, courage enough to say "the emperor has no clothes." I can't see how you could read this book from beginning to end and not see XP in a different light.

In fact, XP programmers would do well to read this book, as it presents the negative path, something other than sunny-day scenarios. Using these warnings and guidelines, they'd have much more successful projects, as this book points out the dangers of lack of XP discipline, fragility and so on.

The truth is that I couldn't do justice to this book in such a short review. There is just so much evidence, so many contradictions pointed out, endless damning words from XPer's own mouths. It was supposed to be a small book to start of with, 150 pages or so, but due to the sheer body of evidence and submitted real life stories from those in the trenches, it bloomed to 400+ pages.

As Doug Rosenberg says "I don't want to be nearby when somebody decides to deploy an air traffic control system or some missile-targeting software that has been developed with no written requirements, and where the programmers made the design up as they went along." At least don't say you weren't warned!

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

444 comments

  1. Uh-oh by jbellis · · Score: 2, Flamebait

    That's almost as bad as reviewing a book titled "Linux isn't always the answer."

    1. Re:Uh-oh by maxconsulting · · Score: 0, Offtopic

      "Iraq: the case against WMD"

    2. Re:Uh-oh by Anonymous Coward · · Score: 0

      so, you have to read the book to know what "EXTREME PROGRAMMING" is?

    3. Re:Uh-oh by Anonymous Coward · · Score: 0

      It's called bsd

    4. Re:Uh-oh by Anonymous Coward · · Score: 0

      >> It's called bsd

      Don't you know *BSD is moribund?

  2. Re:Amazon Link by Sir+Haxalot · · Score: 1

    here even.. sorry about that

    --
    I have over 70 freaks, do you?
  3. Some refinement is always welcome by 192939495969798999 · · Score: 2, Interesting

    I am delighted to see that XP has now been revisited and is being shown to not be the end-all of development styles. Perhaps with the slightly less "extreme" version, more managers will be willing to accept the changes. I have never had a boss accept XP, simply because they were scared of it (IMHO).

    --
    stuff |
    1. Re:Some refinement is always welcome by Anonymous Coward · · Score: 0

      Xp revisited? every fucking technology has been re-re-re-re-re-re-revisited by a dozen books over and over again. I mean why not just call the fucking think "x-programming refactored for virtical markets and snapped up for an IPO with real-time hyper threading" by miXedCaSeDiot

  4. Absolutely Hopeless and Clueless by mihalis · · Score: 2, Insightful

    The Previous Extreme is pure fantasy. It has been well known for a long time that big bang or waterfall models don't work well. For example see the Ian Sommerville Software Engineering book - it's mentioned the 'spiral' model (iterating out from the core of a small well understood system) for at least ten years. I couldn't read any more of this "book review" after such a bunch of nonsense.

    1. Re:Absolutely Hopeless and Clueless by Anonymous Coward · · Score: 0

      How many systems has written and/or designed Ian Sommerville?. Sure, he may have written books and articles, but, is he anything more than a theorist?.

      The practical development is very different than the theoretical. Linux kernel is developed in a special flavour of XP, and it works fine, is very modular, scalable,... though it has it flaws. The fact is XP works in a lot of cases.

    2. Re:Absolutely Hopeless and Clueless by AJWM · · Score: 5, Insightful

      Q: What do you get when you combine the waterfall model with the spiral approach?

      A: The flush model.

      On a more serious note, the waterfall model does work for certain problem domains, notably those where the requirements are well understood in advance and unlikely to change significantly over the course of development, and where reliability of the final product is critical. This assumes you have the resources (time and people) to do it properly -- and this is why the waterfall method has gotten a bad reputation -- it's been applied where there is insufficient time/resources or the requirements aren't well understood.

      Most business applications, for example. The waterfull method is wonderfully suited to something like spacecraft control software, where the spiral approach (we called it "stepwise refinement" twenty-five years ago when I was in college -- there's nothing new) just wouldn't work. But businesses are both constantly changing and adaptable -- a business app that only implements half the requested features is probably still more useful than not, where as software to control complex hardware that's only half done is nearly useless (except that some testing can be done, perhaps).

      As always, it's a matter of picking the right tool for the job, rather than picking up your hammer and treating everything as a nail.

      --
      -- Alastair
    3. Re:Absolutely Hopeless and Clueless by hawkestein · · Score: 1

      ...the spiral approach (we called it "stepwise refinement" twenty-five years ago when I was in college -- there's nothing new)...

      The spiral approach and stepwise refinement aren't exactly the same thing, although they are both iterative approaches. As I recall, stepwise refinement is a top-down design technique. You basically start by implementing the top-level of the system, and you put in stubs for the lower level. Then, you gradually work your down the abstraction ladder, implementing the lower level components, until you're all done.

      On the other hand, the spiral approach is really all about risk management. At each iteration, you're supposed to identify and address the most significant risks in the project. This doesn't necessarily mean you're using a top-down approach, although it might.

      --
      -- Will quantum computers run imaginary-time operating systems?
    4. Re:Absolutely Hopeless and Clueless by Tablizer · · Score: 1

      On a more serious note, the waterfall model does work for certain problem domains, notably those where the requirements are well understood in advance and unlikely to change significantly over the course of development,

      Those are the ones most likely to be outsourced overseas.

    5. Re:Absolutely Hopeless and Clueless by AJWM · · Score: 1

      Well, top-down programming is just called top-down programming. It's an idea that sounds good in theory, and helps in decomposing problems. However, if you're not careful, at the low levels you end up with a serious mismatch between your design details and the available APIs and libraries.

      At each iteration, you're supposed to identify and address the most significant risks in the project.

      Most significant risk, or that which gives you the most functionality for a given effort (bang for the buck)? Depends how you define "risk" and "functionality", I suppose.

      --
      -- Alastair
    6. Re:Absolutely Hopeless and Clueless by AJWM · · Score: 1

      Those are the ones most likely to be outsourced overseas.

      Heh. Good point, at least for commercial apps.

      I'll get really nervous when that starts happening for military and aerospace stuff (the sort of thing that's all written in Ada).

      --
      -- Alastair
    7. Re:Absolutely Hopeless and Clueless by mihalis · · Score: 1

      How many systems has written and/or designed Ian Sommerville?. Sure, he may have written books and articles, but, is he anything more than a theorist?. I think this doesn't matter - as I remember, this was backed up with a lot of supporting material in the references, so it wasn't just him and it wasn't just academic sources.

      The practical development is very different than the theoretical. Linux kernel is developed in a special flavour of XP, and it works fine, is very modular, scalable,... though it has it flaws. The fact is XP works in a lot of cases.

      I'm not saying anything against XP. I'm just saying that the review starts off by saying that the status quo before XP was big-bang/waterfall development model. My response is : no it wasn't!!

      Sommerville is just a quotable, checkable source. If you want something from personal experience in industry, I worked on a submarine command system for the UK Royal Navy. This project started in the 80s some time, and was designed in phased releases of working systems with increasing capabilities and performance. Sure it's not XP, but it's not a big bang nor waterfall either.

    8. Re:Absolutely Hopeless and Clueless by gfim · · Score: 1

      It may have been well known (to you and me), but that doesn't mean that people aren't still doing it!

      Graham

      --
      Graham
  5. Ask Slashdot: Have you used Extreme programming by kilroy_hau · · Score: 2, Interesting

    Well, have you?

    I'm about to start a project using pair programming (not exactly Extreme, but something like that) and I don't like it one bit

    Pair programming is uncomfortable on our reduced space. And it's noisy.

    Are the inconveniences worth it?

    --


    Kilroy was here!
    1. Re:Ask Slashdot: Have you used Extreme programming by bokelley · · Score: 4, Insightful

      I would have to say that pair programming isn't really worth it. I personally can't stand the lack of productivity that is inherent to having two programmers sit around and watch each other type.

      My version of pair programming is to have one developer write a test harness while the other one develops the actual code to be tested. This forces each of them to communicate with each other, generally via a very informal spec or direct communication with the client.

      This ties two people closely together with the immediate need, but it doesn't require complete overlap. I'm not convinced that two brains are better than one - typing is an inherently blocking process, and whiteboarding happens either way.

      Anway, what good hacker wants to watch someone else type? Or play a game? Or do anything? Coding isn't a spectator sport.

      --
      warning: epoll_wait is not implemented and will always fail
    2. Re:Ask Slashdot: Have you used Extreme programming by sbrown123 · · Score: 3, Insightful

      Yes, its worth it. Take two programmers: one more skilled then the other. Give the less skilled one the keyboard. Force the skilled guy/girl to have to communicate all typing through the less skilled guy/girl. Less skilled guy/girl not only gets a good understanding of what went into the code (they typed it) but also learns new things from the smarty. Eventually you have two smarties. Repeat.

      Who hates the idea of pair programming? Smarties ofcourse. They dont want to lose what they feel makes them special. They are bad for business anyways.

    3. Re:Ask Slashdot: Have you used Extreme programming by tcopeland · · Score: 1

      > Pair programming is uncomfortable on our
      > reduced space.

      Sounds like someone needs to provide your team with pair programming-friendly space. A wide desk is a start.

      > And it's noisy.

      What's noisy? The space you're in? The other people? The person you're pairing with?

      > Are the inconveniences worth it?

      Those inconveniences aren't intrinsic to pair programming. Don't give up yet...

    4. Re:Ask Slashdot: Have you used Extreme programming by pmz · · Score: 5, Funny

      Pair programming is uncomfortable on our reduced space. And it's noisy.

      Are the inconveniences worth it?


      If your partner is really hot, then yes.

    5. Re:Ask Slashdot: Have you used Extreme programming by e40 · · Score: 2, Insightful

      You said "about to" but then say you don't "like it one bit". Hmmmm, sounds like you made up your mind *before* trying it. Tsk, tsk.

      The truth about pair programming is that only the right mix of personalities and skills will work. I've done it with people where it worked great. With others, really badly.

    6. Re:Ask Slashdot: Have you used Extreme programming by Anonymous Coward · · Score: 0

      Who hates the idea of pair programming?

      I'll tell you - people. no-one wants someone looking over their shoulder, you even want your guru to just sod off for a bit and let you try stuff out yourself. and no-one wants to spend a day that could have been productive teaching, unless they want to be a teacher. there are a lot of them, you can find them in schools.

      programming is just not so hard it needs two, here's my requirements, sit down, headphones on, later here's my code. Test and review are all the checks I want, not some bad-breathed bearded anal guy who always has his way of doing something and will accept no other harping on behind me.

    7. Re:Ask Slashdot: Have you used Extreme programming by Horny+Smurf · · Score: 1
      smarties aren't smarties because they write good code. They write good code because they're smarties.


      I think Brookes (Mythical Man Month) claimed a 50 x difference between the best programmers and mediocre programmers. Do you really think having joe superprogrammer dictate code to joe retard is going to help joe retard's skills?


      I think you should take a refresher course in economics. Focus on the "division of labor" part.

    8. Re:Ask Slashdot: Have you used Extreme programming by Anonymous Coward · · Score: 0

      I agree 100% with you except instead of headphones on, I require a cone of silence and often a faraday.

      In a less than ideal world, a room of white noise (coffee house) becomes the cone of silence and very expensive and bad wi-fi (t moble) becomes the faraday shield.

    9. Re:Ask Slashdot: Have you used Extreme programming by javatips · · Score: 3, Insightful
      The concept of pair programming already exist in a good team. No need to force people to work all their time in pair.


      When you have a good and balanced team, pair programming will occur naturally. At some point someone is having stuck on some problem (design, bug, ...). In genral, the person will ask one of his fellow team member help to solve the problem. Natural Pair Programming! This is much more effective than having 2 persons work on the same problem (which is trivial 80% of the time).


      I believe that Natural Pair Programming with mentoring and code review are a lot better than full-time pair programming. This will help junior developer get up to speed more quickly without having to have two brains waisting their time on trivial problems.


      I also like the idea of the other poster saying that you can have one developer write the Unit Test while the other write the business code (you should inverse roles often though). This also benefit having two brain work on different thing while maintaining synergy and increasing the odd of catching bugs.

    10. Re:Ask Slashdot: Have you used Extreme programming by pong · · Score: 2, Interesting

      I think that is an incredibly simple and extremely powerful idea!! Sometimes when you have been programming for a while you just need the mental rest you get from working on your own. I think that the next time I feel like a break while pair programming, I will try to suggest to my pair-programming partner that we split up and one of us focus on the tests while the other is doing the production code.

      I think it could be especially useful when you are working on a problem that you are not really sure how to solve. The one person can write a test suite, which is a really good way to work out the most flexible and useful interface, while the developer does some prototyping/sandboxing.

      Thanks for the great idea!

    11. Re:Ask Slashdot: Have you used Extreme programming by Don+Calamari · · Score: 3, Insightful

      How true. Everybody knows the most profitable companies are run by drooling troglodytes. I'm just kidding, I'm sure you mean the prima donnas who nobody can stand...

      Anyway, I've found you simply cannot get 2 good coders by shackling one good and one poor coder together. The bad one generally doesn't learn anything and the good one just gets frustrated and angry.

      Pair programming might work if the poor coder had a desire to learn, but it's been my experience that this usually isn't true. Learning to be a good coder does not happen by proximity and osmosis.

    12. Re:Ask Slashdot: Have you used Extreme programming by Anonymous Coward · · Score: 0

      Why not just fire the "less skilled" (see incompetent .Com web developer) and leave the one that can produce alone. Better yet fire the "less skilled" one and get a real programmer to replace him/her and get 10x as much done. Pair programming bah! If I wanted to teach I would've become a teacher.

    13. Re:Ask Slashdot: Have you used Extreme programming by Anonymous Coward · · Score: 0

      >>Eventually you have two smarties.

      Think of the risks, man! What if instead of two smarties you wind up with two dullards who can't code diddley-squat?

      >>repeat

      Ye Gods! If those two dullards corrupt two more dullards, and those dullards all corrupt two MORE and so on, then within weeks you have the TOTAL BREAKDOWN OF SOCIETY! Just a bunch of dullards running around shouting at each other about TQM and ISO9000 and who ate the last cream-cheese danish! ANARCHY!!!

    14. Re:Ask Slashdot: Have you used Extreme programming by Don+Calamari · · Score: 1

      These are programmers. Remember? There are no hot ones, except me, yeah only me...

    15. Re:Ask Slashdot: Have you used Extreme programming by geoffspear · · Score: 1
      Wouldn't it be better for a project to get rid of the bad programmers and let them go off and learn how to code for themselves, instead of having a good programmer dictate code to them?

      Most people, I think, can type their own code a lot more efficiently then they can dictate code to someone else. Unless they learned to code using some sort of voice recognition system instead of a keyboard.

      --
      Don't blame me; I'm never given mod points.
    16. Re:Ask Slashdot: Have you used Extreme programming by Anonymous Coward · · Score: 0

      No kiddin homes first it was tha CIA witha crack now a brotha gotta worry bout tha man makin mad money off of da backs of da smarties?

    17. Re:Ask Slashdot: Have you used Extreme programming by bunratty · · Score: 4, Insightful
      The point of pair programming is not to force programmers to communicate with each other. Pair programming is "the knob turned to 10" on code reviews... if code reviews are good, then do them all the time, as a programmer is first writing the code.

      If you don't do pair programming, you need to replace it with a less extreme version of code reviews, such as simply reviewing each patch before it is checked in. The type of pair programming you describe involves no code reviews, and therefore is no substitute for pair programming.

      --
      What a fool believes, he sees, no wise man has the power to reason away.
    18. Re:Ask Slashdot: Have you used Extreme programming by bokelley · · Score: 3, Insightful

      Right. Also, I forgot to mention how incredibly important it is to switch between being the tester and being the coder. If you don't do this then it's too easy for both parties to be lazy, and there's no way to check or enforce the quality of code.

      At my current job, I've actually outsourced the implementation of the tests (because we're a very small shop) but I'm making the product manager the only interface with the test developers. This keeps me honest, and has the "nice" side effect of making me document all of my interfaces and APIs since the other developer isn't even in the office.

      One benefit of doing this with two programmers on-staff, as I prefer, is that when somebody leaves a project, there shouldn't be a huge drop in knowledge. I left a project a few months ago that was done this way and the remaining programmer, who was quite junior, was able to keep on going without much trouble since she had been exposed to both the testing and development aspects of the project.

      --
      warning: epoll_wait is not implemented and will always fail
    19. Re:Ask Slashdot: Have you used Extreme programming by Anonymous Coward · · Score: 0

      You don't really have to sit at the same computer. But you do need to constantly review each others' code. So much so, that you almost forget who wrote what. You know your partner's code so thoroughly it's as if you wrote it yourself.

      Both people in the pair take full responsibility for all code written by the pair. You can never say "oh, John wrote that bit..." in response to a bug or a question.

    20. Re:Ask Slashdot: Have you used Extreme programming by chromatic · · Score: 1
      I would have to say that pair programming isn't really worth it. I personally can't stand the lack of productivity that is inherent to having two programmers sit around and watch each other type.

      Non sequitur. Your first sentence talks about pair programming. Your second sentence talks about something that is almost entirely unlike pair programming.

      Pair programming is "Hey, let's talk about this problem and write some code as we're going along!", not "Hey, sit behind me and shut up unless I make a typo!" If someone's made you do the latter and called it "pair programming", he was quite wrong.

    21. Re:Ask Slashdot: Have you used Extreme programming by Bigbaz · · Score: 1

      We've been using a modified XP process at work for a little over 2 years now, and I've got to agree with you on the benefits of pair programming. It is difficult at first to give up control of the keyboard, and at first I felt a little strange telling someone else how they should do something. Generally, I'm a hands on kind of guy, I would rather just do something myself than have to explain to someone else why they should do it and how to do it.

      That said, I have really come around, and now I love pair programming. The newer people in our group get to learn from us, and we get to make sure they learn our way of doing things. We also learn from them, when they bring new ideas and methodologies and such. Plus, when we do our designs, we've got two sets of eyes making sure everything is covered, and to make sure we adhere to our design. And we know the code is good, because we've got two developers looking at it all the time.

      Not to say it's a perfect world, of course. We still have conflicts and disagreements and all that, and scheduling time to work with a partner is difficult when everyone is so busy, but we get it done, and I believe the product is superior to what we put out before.

      No development process will be a perfect fit in every organization and situation, just like no stock $OPERATING_SYSTEM distribution will suffice for every application. You try it, you learn what needs to be changed, and you change it. Then you keep changing it as you go along.

    22. Re:Ask Slashdot: Have you used Extreme programming by bokelley · · Score: 2, Interesting

      That is a good point. I forgot to mention the other important part of this, which is that people switch roles often on the same component. This is my version of turning the dial up to 10. If you think about it, the point of a code review is to make sure that code is clean and legible (and more or less efficient) so that maintenance is easier. What better way to do this than force people to modify each others' code on a regular basis?

      --
      warning: epoll_wait is not implemented and will always fail
    23. Re:Ask Slashdot: Have you used Extreme programming by twocents · · Score: 1

      I equate Pair programming to brainstorming: necessary but not used during the entire process.

      The web is an entire world filled with programming resources, and is easily accessed to most programmers. With this resource at hand, don't we all already have help when we need it? Are we not already working with one another?

      Perhaps I miss the point.

    24. Re:Ask Slashdot: Have you used Extreme programming by AJWM · · Score: 5, Insightful

      Who hates the idea of pair programming? Smarties ofcourse. They dont want to lose what they feel makes them special.

      More likely they're just driven insane by having to wait on the other person. Depends on how bad an impedence mismatch you have. Programmer productivity can vary by an order of magnitude or more between individuals (so called "superprogrammers", although the term is silly). If you have one of the latter, no amount of "skill transference" is going to bring the former up to the same speed, any more than teaming someone with an IQ of 150 with someone with an IQ of 110 is going to raise the latter's IQ to 130. (It might, through frustration, lower the former's though ;-)

      On the other hand, if you're just talking about a couple of average programmers, one of whom has a couple of years more experience, then yeah, it makes sense.

      They are bad for business anyways.

      Depends. Nobody needs prima donnas, of course (well, except ballet companies, I suppose ;-) but do you just want a stable of predictable but average programmers, or do you want to hold on to those "smarties" who, in a pinch, can deliver good code faster than any eight other programmers put together?

      (Of course, you may not have the choice. Superprogrammers aren't nearly as prevalent as the number of average programmers who think they're "super" would indicate ;-)

      --
      -- Alastair
    25. Re:Ask Slashdot: Have you used Extreme programming by letxa2000 · · Score: 1
      Pair programming is uncomfortable on our reduced space. And it's noisy. Are the inconveniences worth it?

      If I'm at a computer and NOT typing, I'm falling asleep. Honestly. I've had people try to explain their code to me when they left a company and I literally had to try to stay awake, and that might have only been for a couple of hours. If I had to watch someone else work for hours on end I would be bored and want to do some real work--if I was able to stay awake.

      Theoretical programming styles don't interest me much, and probably each applies to certain projects better than others. But I definitely would not work for a company that wants me to sit around and watch someone else work, nor would I employ someone to sit around and watch someone else work.

    26. Re:Ask Slashdot: Have you used Extreme programming by Paradise+Pete · · Score: 1
      Eventually you have two smarties. Repeat.
      They are bad for business anyways.

      So then your business process produces things that are bad for business?

    27. Re:Ask Slashdot: Have you used Extreme programming by bokelley · · Score: 1

      There are definitely situations where that works, and I have had good experiences with that. However, I would separate out "pair designing" and "pair debugging" from "pair programming".

      When I run into a problem, it's always nice to discuss it with someone. I like that. I don't need to be forced to "pair program" to have these conversations. Similarly I don't need to "pair program" to help other people solve their problems, often interactively. What I don't like about pair programming as a methodology is that it hides incompetent programmers, reduces the learning that comes from failing at a certain approach, and discourages leaps of faith.

      --
      warning: epoll_wait is not implemented and will always fail
    28. Re:Ask Slashdot: Have you used Extreme programming by Theodrake · · Score: 1

      The problem is we need to get rid of those mediocre programmers. But too many government projects depend on body count to get a profit. To many managers depend on having large staffs to get promoted. Until the U.S. government will let a company charge a 40 - 50% markup and use 1/5 the staff on a project it ain't gonna happen.

    29. Re:Ask Slashdot: Have you used Extreme programming by Anonymous Coward · · Score: 0

      There was a senior programmer in my shop who would dictate the code I should be writing to me when I asked for help. The only thing I learned from that man is not to ask him questions. I don't learn by having my hand held. I don't have to think when Mr. Senior Programmer is telling me what I should be thinking, all I have to do is type. Once I learned that this man wasn't helping me, I advanced in leaps and bounds.

      At some point (like once you advance beyond basic programming logic) you have to cut the programmer loose and let him learn like your senior programmer learned, time and experience.

    30. Re:Ask Slashdot: Have you used Extreme programming by Surt · · Score: 1

      Pair programming worse than halved the productivity of a project I worked on. I suspect it works best in environments with a lot of incompetent people, as long as you pair off the incompetents with the more competent. My environment was full of more competent individuals, so the code-review benefits were not only not positive they were net negative as people were forced to do things by compromise which could better be done by just having one individual do it 'their way'.

      Bottom line: since pair programming is about teaching and code review, if your process doesn't derive significant benefit from these then you may well just be halving (or worse) your programmer efficiency.

      Ask yourself: how much of my staff is skilled and experienced? how often do code reviews turn up major/minor errors.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    31. Re:Ask Slashdot: Have you used Extreme programming by ibpooks · · Score: 0, Offtopic
      If your partner is really hot, then yes.

      Yeah, but who can code with a boner?

    32. Re:Ask Slashdot: Have you used Extreme programming by arivanov · · Score: 1
      Are the inconveniences worth it?

      Yes, they are.

      We have used it long before XP and in a completely different context - complex mathematical problems as well as data aquisition and process control systems. When the logic and the underlying math are hair-raising having another set of eyes following the development is extremely beneficial. Also, some people have a talent to drive and some people have a talent to navigate. This also means that you are usually either the pilot or navigator and there is no such thing as scheduled swap as it does not make any sense. Sometimes the navigator gets the keyboard, but this is only when the pilot does not see what the navigator is trying to explain.

      Note that this is not XP at all. XP is an approach designed for cases which can be split into a multitude of extremely simple problems. In XP you need a pair in order not to stray and cut corners in development because it looks easy.

      This IMO still leaves a considerable chunk of software development that is not useable for pair programming. It is not so simple that XP works. It is also not complex enough to warrant a copilot. It is the middle ground. There, writing solo, was, is and shall be the best approach. Grafting XP on it only leads to low efficiency solutions.

      --
      Baker's Law: Misery no longer loves company. Nowadays it insists on it
      http://www.sigsegv.cx/
    33. Re:Ask Slashdot: Have you used Extreme programming by Anonymous Coward · · Score: 0

      Anyway, I've found you simply cannot get 2 good coders by shackling one good and one poor coder together. The bad one generally doesn't learn anything and the good one just gets frustrated and angry.

      Well try this: put together two coders, one who has more experienced, but one who is less experienced but learns quick. Though I've never been involved in XP, I have learned a lot from having my boss or an experienced coworker sit with me and dictate what they want done as I go and do it. This has helped a lot, especially in learning how to debug and test. It helps with coding as well, and actually helps concentrate on the work at hand. Often times, I'm the "better" coder (faster, more up to date with current languages, I write cleaner code, and quicker at figuring out new things), but I'm relatively inexperienced, so having someone with experience help me along is good. And a lot of times they learn from me as well.

      That said, I do get annoyed sometimes, and don't get anything solved until the other person leaves me alone to figure it out.

      I don't know how anyone can manage to be paired all day long, though, and that aspect of XP seems a bit too much. A little bit of pairing is good. Having two people involved with each others work is good. Communication is good, as is learning from each other. I think giving both people a computer and having them next to each other may be a better approach. But even then, sometimes it helps to be left alone to concentrate on a problem.

    34. Re:Ask Slashdot: Have you used Extreme programming by adamruck · · Score: 1

      You are wrong, sorry. Programming in pairs is fundamentally better then programming alone. My computer science teacher once showed our class a movie clip of a basketball team practicing, he told us to count the number of times they dribbled the ball. We all did our best to count. When the movie was done he asked us if we noticed anything odd. We all said no. He played back the tape, turned out a big fuzzy bear maskot walked through the court. None of us noticed becuase we were all so focused on the counting. The partner catches the bear becuase when you work with partners you dont work on the exact same block of code. If you have a good partner you can accomplish some amazing coding.

      I dont know about that whole learn through pair programming thing though. Sounds sketchy to me.

      --
      Selling software wont make you money, selling a service will.
    35. Re:Ask Slashdot: Have you used Extreme programming by chromatic · · Score: 2, Insightful
      What I don't like about pair programming as a methodology is that it hides incompetent programmers, reduces the learning that comes from failing at a certain approach, and discourages leaps of faith.

      I'm not sure I follow your reasoning.

      How does pair programming hide incompetent programmers? If you're switching pairs often, everyone will have the chance to work with everyone else.

      Do you prefer a learning style that requires everyone to make the same mistakes? In my teams, I prefer not to make mistakes at all. In practice, I'll settle for making a mistake once then letting everyone know what it was and how to avoid it. Given experienced programmers, it's pretty handy to start down a path and have your pairing partner say, "Wait... we did something like this before. Here's how we solved it then."

      I don't know what you mean by "discourages leaps of faith" at all. That sounds like a positive thing to me. I'd rather go by the empericism of the test suite than mystical intuition that can't be verified. XP's pretty firmly in the realm of "solving the customer's actual problems" than any Kierkegaardian philosophy.

      Admittedly, I'm a fan of pair programming. I've used it on a couple of projects and plan to use it on several more in the future.

    36. Re:Ask Slashdot: Have you used Extreme programming by Nept · · Score: 2, Funny

      except if one programmer doesn't like slashdot, it will make the other more productive...

      --
      "Teachers leave us kids alone ..." - Roger Waters, Pink Floyd
    37. Re:Ask Slashdot: Have you used Extreme programming by Black+Parrot · · Score: 1


      > > Are the inconveniences worth it?

      > If your partner is really hot, then yes.

      The Thebans figured that one out many centuries ago...

      --
      Sheesh, evil *and* a jerk. -- Jade
    38. Re:Ask Slashdot: Have you used Extreme programming by bmj · · Score: 1

      I would have to say that pair programming isn't really worth it.

      It's certainly not worth it all the time, but there are times when it can boost productivity. Let me first say I've never worked in a pure XP environment, but on several projects we've cut & pasted from XP and used what works well for us.

      Pair programming can work well when you're still developing the logic that will drive the application. Why? Because at that point, you're not coding for 8 hours straight. You're coding a bit, running some tests, then tweaking. If you work well with your partner, you've constantly got a sounding board for ideas, and chances are, you'll crack the egg sooner rather than later. Sure, you could both work on the same problem space separately and compare notes at the end of the day, but I think had you been working together, the problem would have been solved much sooner.

      Although it's not a pure XP situation, pair programming works quite well when you've been handed someone's else code. While working on a particular project, my group was handed code from the client for a sub-project that they had completed, but were unhappy with (they were not a development shop by trade), so suddenly we were responsible for righting the wrongs. It was VB app (and we were doing web development for them, and we weren't VB specialists), and we gave them a fairly conservative time estimate. The manager wasn't particularly happy to see us working in pairs (didn't seem productive) but we got the sub-project completed well under budget.

      My version of pair programming is to have one developer write a test harness while the other one develops the actual code to be tested. This forces each of them to communicate with each other, generally via a very informal spec or direct communication with the client.

      I like that idea.

      --
      Whereof we cannot speak, thereof we must be silent. --Ludwig Wittgenstein
    39. Re:Ask Slashdot: Have you used Extreme programming by adamruck · · Score: 1

      why look at each others code? why not just work on different sections, and then review when those functions are done? Who cares how your partner did it as long as it works? You might as well write it yourself then. Bugs can be worked out by both people, but it is not required that each partner should know every detail of the whole project though.

      --
      Selling software wont make you money, selling a service will.
    40. Re:Ask Slashdot: Have you used Extreme programming by pgrdsl · · Score: 1
      The best pair programming occurs when you have two equally skilled people whose skill sets overlap but aren't the same.

      The worst is when one of the pair is a chimpanzee and the other is expert: you end up with a confused chimpanzee and a suicidal expert. Oh, and no code.

      I find pairing works for short stretches, followed by periods where the members of the pair can wander off, do a bit of solo coding/thinking/design, and then join up again when appropriate.

      Successful pairing is not a student-teacher relationship - it is best when it is a joining of equals. If you want "teaching", send them on a course.

    41. Re:Ask Slashdot: Have you used Extreme programming by AFirmGraspOfReality · · Score: 1

      Nice troll. "Who cares what your partner did as long as it works?" Nice. Remind me not to hire you. All of these points are poor practices in general, not just in XP.

    42. Re:Ask Slashdot: Have you used Extreme programming by GoofyBoy · · Score: 1

      >The Thebans figured that one out many centuries ago...

      If I ever do pair programming, it is NOT going to be in a small enclosed cubicals which promote "innocent misunderstandings".

      --
      The surprise isn't how often we make bad choices; the surprise is how seldom they defeat us.
    43. Re:Ask Slashdot: Have you used Extreme programming by koreth · · Score: 1
      One problem with pair programming is that it's impossible to do fully if you let any member of your development staff telecommute, ever. At my current company, the fact that the developers can work from home a couple days a week if they choose is a big morale booster (some of the programmers live a long distance from the office and traffic can be nasty) but it makes it impossible to fully embrace XP since the telecommuters are working without partners and you end up with code that hasn't gone through the pair-programmed design and review process.

      The middle ground is to pick our pair-programmed projects. Pieces of code that are likely to involve integration of lots of parts of our system benefit more from pair programming than relatively standalone modules. There are plenty of each on our to-do list, so there's always something for the stay-at-homers and the 9-to-5ers to do that suits their respective styles.

    44. Re:Ask Slashdot: Have you used Extreme programming by WotanKhan · · Score: 1
      More likely they're just driven insane by having to wait on the other person

      Exactly. If skill transfer is the goal, there are much more efficient ways of going about it. Personally, I am a blindingly fast typist, and I do my best developing in sort of a flow state where I am coding nonsequentially and moving around within the environment with the agility of a video game. I don't see achieving this in a pairs environment.

      On the flip side, I learn best by starting with a well designed, fully realized and functional product, cloning it and modifying it to do something else. Some explanation and documentation from the developer is always great, but there is nothing like reading good code. Trying to communicate code via speech is just a recipe for frustration, not efficient learning.

    45. Re:Ask Slashdot: Have you used Extreme programming by johannesg · · Score: 1
      Start collecting newspaper articles about people massacring their coworkers. Leave them carelessly lying around the office, and tell little stories about people who "just snap" after taking too much pressure. Gently suggest that pair programming can be pretty pressurable to programmers (who are usually most comfortable when locked into their own mind with noone around to bother them).

      If that doesn't help, "work the system". If pair programming is good, programming with three people must obviously be better. See how many people you can get clustered around a terminal. There is no system that cannot be perverted by ruthlessly following its own rules...

    46. Re:Ask Slashdot: Have you used Extreme programming by Anonymous Coward · · Score: 0

      Pair programming is ok if your programmers are average or below average. If you have very good programmers then skip the pair programming, they'll get sick of it an leave as soon as they can. Also don't vary the level of the Pair. The better programmer will be frustrated and the lesser programmer will be overwhelmed.

    47. Re:Ask Slashdot: Have you used Extreme programming by ubikkibu · · Score: 1

      You get used to pair programming, at least most folks do. It is much more intense (and productive) than solo coding, so rarely do we do it for a full 8-10 hour session. But then again, you don't need to because you often find you've gotten as much done in a couple hours as you would have in a full day anyway...plus tests!

      Some people resist it, but generally speaking it is a healthy disturbance for everyone who's willing to give it a shot.

      This whole "XPR" recommendation as reflected by the reviewer sounds worthless anyway. XP practices can and generally are taken out of context, not always "cranked up to 10" anyway, and can improve things even if adopted only piecemeal. Beck and others have provided guidelines for adopting those parts of XP that make sense for you. And no one is more aware of XP's failings and gaps than the XP community.

      This seems to me like a redundant book that posits a rabidly zealous, uncompromising community of XP folk that simply doesn't exist, and offers a "solution" that is well within the scope of what XP proponents argue for regardless. Skip.

    48. Re:Ask Slashdot: Have you used Extreme programming by richieb · · Score: 1
      I'll tell you - people. no-one wants someone looking over their shoulder, you even want your guru to just sod off for a bit and let you try stuff out yourself.

      Wait until you have to write some that has to be 100% solid when it's installed at your biggest customer site. Then you will want about 5 people looking over your shoulder checking what your write.

      The other plus to pair programming is that there is another person that really knows the code, so you can take long lunches and vacations.

      --
      ...richie - It is a good day to code.
    49. Re:Ask Slashdot: Have you used Extreme programming by nullard · · Score: 3, Interesting
      At my current job, we have three developers. We work on projects as a group, on three seperate machines near each other.
      The steps we follow:
      1. We are all involved in project design.
      2. One of us writes up the requirements.
      3. The others review it.
      4. Two of us write the code while the other designs tests.
      5. The tester tests the system then works with the coders to fix the problems.
      6. Repeat last step until the bugs are gone and the project is ready for beta
      7. Beta testers test.
      8. All three developers work on the final bug fixes

      The client approves a demo app after step 3. The client approves the beta version before the testers see it. The client is involved in beta testing.

      This system seems to work well for us. The 3-way version of pair programming is beneficial to stringent testing. The fact that we use our own machines (but are free to walk over to any of the other developers) lets us parallelize the development project. Since adopting this system at the suggestion of our manager, our turnaround time has dropped dramatically. Aditionally, our code is better before we hit the beta stage. The last project we did had almost no bugs turn up in beta. The constant black box testing durring development followed by white box testing and fixing before the beta ensured that the code was really good before the testers saw it.
      --


      t'nera semordnilap
    50. Re:Ask Slashdot: Have you used Extreme programming by eatdave13 · · Score: 1

      Wolverine can do it, why can't you?

      --
      "Verbing weirds language." -- Calvin
    51. Re:Ask Slashdot: Have you used Extreme programming by Anonymous Coward · · Score: 0

      But that does not fit the sacred words of the XP gods. You will make them very angry by such a deviant behavior. You must follow their dictates without variation or its not XP. XP is the best way to program and will always be the best. It says so in the XP books that are written by the XP gods themselves.

      Blugh.....I can't count the programming religions I have seen since I started programming in 1965. None of them achieved more than a fraction of their hype. XP is only one of the newest of counless such religions. There is no such thing as "one size fits all". Especially the silver bullet kind that expects to achieve good results without knowledge, skill, understanding, logic, effort, discipline, or contact with reality.

    52. Re:Ask Slashdot: Have you used Extreme programming by natet · · Score: 1

      It really depends on the individuals involved. I have the opportunity to work with my best friend of 10 years. We think a lot alike, and often find ourselves doing pair programming without even thinking about it. For us it is very effective. Often just haveing someone there to bounce ideas or problems off of leads to a solution.

      --
      IANAL... But I play one on /.
    53. Re:Ask Slashdot: Have you used Extreme programming by rowanxmas · · Score: 1

      Why isn't the knob turned to "11" ?

      And no, its not your dial that's wrong.

    54. Re:Ask Slashdot: Have you used Extreme programming by blakestah · · Score: 1


      Programming is inherently a solo act. Pair programming is not only less efficient, it is 4 times less efficient. Every time you interrupt a programmer's train of thought you are losing time more certainly than when he picks up his Coke for a drink. XP pair programming is an incredibly stupid idea, which is why no one NOT ASSOCIATED with XP ever gives it a positive third party review. If you try it, well, sorry to hear that, but if you try it, you will NEVER want to pair program again.

      Also, refactoring can be good, but it takes a lot of time and effort to make code cleanly work, and that effort is usually duplicated when you re-factor. The cost in time is HUGE, and it should not be taken lightly.

    55. Re:Ask Slashdot: Have you used Extreme programming by TrekCycling · · Score: 1

      Nevermind the fact that you often have people (usally the smartie, in my experience) who think their way of typing, running the IDE, the keyboard, etc. is the ONLY way and that any lack of efficiency is terrible and you can develop a REALLY bad programming environment. I've been on the other end of that. A perfectly competent programmer with some amped-up developer behind me who can't stand the slight inefficiencies in the way I operate the computer (not talking about actual code, but I don't use keyboard shortcuts enough or multi-task quite well enough). That can be very stressful and... frankly... silly.

    56. Re:Ask Slashdot: Have you used Extreme programming by buckinm · · Score: 1

      Who cares how your partner did it as long as it works?

      Because if your partner (or you) happen to be short-sighted, the code may not work well, or might be hard to extend in the future.

      but it is not required that each partner should know every detail of the whole project though.

      Yes, but it sure makes it easier for each partner to move on to other things, as the knowledge is never only held by one person.

      --
      This isn't any ordinary darkness. It's advanced darkness.
    57. Re:Ask Slashdot: Have you used Extreme programming by kilroy_hau · · Score: 1

      It's noisy beacuse you have to talk all the time to the other person.

      Imagine several teams of pair programmers, all in a reduced space, all talking about their particular task at the same time

      --


      Kilroy was here!
    58. Re:Ask Slashdot: Have you used Extreme programming by Cederic · · Score: 2, Insightful


      >> it hides incompetent programmers

      Actually, it exposes them quicker, as their incompetence becomes immediately apparent to their partner.

      Further, it gives the partner an opportunity to improve them and reduce their incompetence.

      If that doesn't work, then they're hopelessly incompetent, and you're no worse off than had you not programmed (and indeed, much better than if you'd found out 8 months into development when you did your first code review)

      >> reduces the learning that comes from failing at a certain approach

      Actually, it increases the learning - that learning is spread around the whole team in short order. The team learn collectively from their failures, instead of each individual having to make them all in turn.

      >> and discourages leaps of faith.

      I'm not sure what you're getting at here. I have been sat with a partner while he's said "go with me on this one for ten minutes, I want to try something". I shut up, I watch, I learn, I see how he's intuitively solved a problem or implemented a mechanism and saved a ton of work.

      Or I've been driving, and I've asked my partner, "I know we should methodically trace through this bug, but I reckon I can find it by guesswork - gimme a couple of minutes to have a go". Two minutes later, bug fixed, several hours of painful tracing averted.

      It's about building good communication within the pair, in having faith in each others abilities. What you've been describing is not pair programming.

      ~Cederic

    59. Re:Ask Slashdot: Have you used Extreme programming by Anonymous Coward · · Score: 0

      Actually, I've done a variation of pair programming.

      I was working on a project where we each had our own computers, but we sat about 5 feet apart, worked constantly together and constantly passed code/ideas/diagrams back and forth.

      It was a pretty good situation as it caused us each to stop and think an extra moment before presenting something to the other as "the solution". It also served well to keep us each on task as it's difficult to get distracted (on email, slashdot, news, etc) when you know that you have to keep up with/deliver pieces to someone else.

      Of course, it probably didn't hurt that she was an attractive, intelligent blond... alas, she was/is married. (That's why I'm an AC on this one.)

    60. Re:Ask Slashdot: Have you used Extreme programming by kilroy_hau · · Score: 1

      sounds like you made up your mind *before* trying it.

      Err. Well. You got me there.

      The fact is I haven't tried it. But I made my homework. I have STFW and found mixed reviews and opinions about pair programming. That's why I'm asking here, to get more mixed reviews :-P

      But seriously, I really don't believe that pair programming is such a good idea, and I was told that it only works if you really believe it works (no kidding, those are the exact words of the project leader), and of course this made me doubt even more.

      --


      Kilroy was here!
    61. Re:Ask Slashdot: Have you used Extreme programming by default+luser · · Score: 1

      I have to second this concept. The software development group I work for understands that each programmer has different skills to leverage, so this "Natural Pair Programming" approach is the norm.

      I may call others aside for input, or be called aside myself for as much as an hour or two a day, but that time is extremely productive, and raises the productivity of the rest of my day.

      Coincidentally, I have also worked on a project where one writes the unit test and one writes the program code. There were some caveats though: if you're looking for efficiency, then keeping one on the unit test and one on the code full-time is best. If you're looking for team redundancy, then this is not a good approach unless you hand off between test and program coding so you get a feel for both. If your partner isn't going to be there in 3 months when you're %75 done, then you better know both the code and the test aspects.

      --

      Man is the animal that laughs.
      And occasionally whores for Karma.

    62. Re:Ask Slashdot: Have you used Extreme programming by doinky · · Score: 1

      Fabulous. So now our profession is nothing more than short-order fry cook. No possibility of turning on the headphones and going into the zone. No chance of browsing the web for new and interesting por^H^H^Hstuff.

    63. Re:Ask Slashdot: Have you used Extreme programming by doinky · · Score: 1

      If pair programming becomes required; don't we both have to take our long lunches and vacations at the same time?

    64. Re:Ask Slashdot: Have you used Extreme programming by stew1 · · Score: 1

      What you describe isn't [good] pair programming.

      When you're *really* doing pair programming, you and your partner are talking constantly and shoving/grabbing the keyboard back and forth between each other. Most programmers are familiar with "flow" or "the zone" or "hack mode" -- alive in the code and dead to the world. When two people are in "pair-flow", the results are astonishing. It takes a lot of work and management to get two people to that level of intellectual comfort, but it's worth it. I'm not doing pair-programming currently, and I miss being able to plug my brain into my former colleagues'. Achieving pair flow makes up for any lost productivity inherent in halving the number of things a team is working on (and there are actual university studies which show that pair programming makes up for initial productivity hits in the long run, due to a lower bug rate).

      One problem with pair programming is that it's intellectually and emotionally exhausting, especially for your average introverted programmer. One of the places where XP needs to be refactored is in giving coders a chance to rest and recuperate while still on the job. The Sustainable Pace practice counteracts this to a certain extent, but not fully, in my experience.

      The other poster is wrong when s/he claims that pair programming isn't about increasing communication. In fact, that's one of the largest benefits. Fred Brooks showed that communication overhead is indeed the essential problem of team programming. Pair programming lets you skirt around Brooks' Law, in certain situations.

      Jon

    65. Re:Ask Slashdot: Have you used Extreme programming by Anonymous Coward · · Score: 0

      Yeah, but who can code with a boner?

      Boner?? Don't you mean a joystick?

    66. Re:Ask Slashdot: Have you used Extreme programming by OldAndSlow · · Score: 1

      If your partner is really hot, then yes
      I'm really hot, would you pair with me?

      Really, really hot; sweating like a pig, and I need a shave. Come on, let's pair.

    67. Re:Ask Slashdot: Have you used Extreme programming by dubl-u · · Score: 1

      Pair programming is uncomfortable on our reduced space. And it's noisy.

      Reduced space is bad. To do pair programming right, you need plenty of space, enough so that both people can sit side by side and see things well. I recommend a 6' x 4' table if you're using CRTs (with an LCD, you can use a shallower table).

      Although it seems annoying it first, you'll get used to the conversation around you. Indeed, when I work in a silent area now, I really miss the background discussions, as they help keep me in touch with the rest of the team.

      But if it still seems noisy after a while, ask yourself, "Is it really noise?" All of the conversation around you should be related to what you're working on. On-topic conversations shouldn't bother you, but off-topic stuff often will. XP is best done in a project room, a room (or area) specifically devoted to a single project.

    68. Re:Ask Slashdot: Have you used Extreme programming by dubl-u · · Score: 1

      Give the less skilled one the keyboard. Force the skilled guy/girl to have to communicate all typing through the less skilled guy/girl.

      This happens some in pair programming, but it's not the only way to do things. I'd say I spend maybe 5% of my pairing time dictating something. More common is when the person who knows whats going on seizes the keyboard and says, "Let me show you what I mean."

      My general rule of thumb is that they keyboard should change hands every 10 minutes or so. Otherwise it's too easy for the driver to forget about the navigator, or for the navigator to zone out.

    69. Re:Ask Slashdot: Have you used Extreme programming by richieb · · Score: 1
      I think XP programmers are promiscous, so they can pair with more than one partner. Hmm..... this gets worse and worse...

      --
      ...richie - It is a good day to code.
    70. Re:Ask Slashdot: Have you used Extreme programming by JohnwheeleR · · Score: 1
      XP was developed because consultant programmers found requirements change frequently regardless of the solidity of upfront design schematics. Why? Hell if I know. Maybe it's because programming is a new disipline. Maybe it's because clients can't forsee all they want without interacting with something. I don't know. I do know that working months on something, showing it to a client, and them hating it sucks (especially when it meets the requirements you worked out with them). It sucks to go for months after deployment adding new features and refining others. It is painful, leaves the codebase in a convoluted state, and makes programmers and clients resentful of one another.

      XPs principles make it easier to cope with changes. It doesn't completely throw out the notion of an upfront design; however, it stresses we constantly improve the design while we code (design and implementation are concurrent activities). That's why pair programming makes sense to me. Group dynamics and synergy maximize the quality of a design.

    71. Re:Ask Slashdot: Have you used Extreme programming by CrazyWingman · · Score: 1

      Actually, yes, pair programming does have its place. I'm writing a compiler right now with a couple of teammates for a class, and there are just certain parts where it REALLY helps to have someone looking over your shoulder. I mean, when your writing regexp's for a scanner it's REALLY easy to mess something up, and can be rather difficult to find it.
      I won't argue that it definitely takes some getting used to. I, like everyone else, am someone who would rather go off and code on my own and then review the code later. I don't like having someone say "hey, you forgot a semicolon there" right after I hit enter. Chances are I realized it too, and will be hitting backspace in the next half second to correct it anyway. But, this is something that a pair has to work out. There is work to be done getting used to both the typer and the watcher positions.

    72. Re:Ask Slashdot: Have you used Extreme programming by Nucleon500 · · Score: 1

      VNC, anyone?

    73. Re:Ask Slashdot: Have you used Extreme programming by bokelley · · Score: 1

      I can totally see that - makes a lot of sense. I guess my point is that if you're not doing intricate develoment, then it's a waste of time.

      --
      warning: epoll_wait is not implemented and will always fail
    74. Re:Ask Slashdot: Have you used Extreme programming by iroberts · · Score: 2, Insightful
      Pair programming is not only less efficient, it is 4 times less efficient. Every time you interrupt a programmer's train of thought you are losing time more certainly than when he picks up his Coke for a drink.

      I've done some pair programming, and I have to disagree here. It's true that the "passenger" will interupt the "driver", but it will not necessarily interrupt the train of thought. Indeed, frequently comments will be along the lines of "why not just do instead?". Moreover, the "passenger" can often help keep track of the big picture, allowing the "driver" to focus on details without getting lost.

      This is not to say that pair programming is perfect. For certain drudge work, it's definitely not efficient. Even with two coders who respect each other and get along well, it can be very emotionally draining. But I've almost never felt that my pairing partner and I could have developed *and debugged* code more efficiently by working separately. Indeed, we tended to write remarkably bug-free code when we had a "second pair of eyes".

      One thing that I think is necessary for pair programming to work well - both developers need to be as "egoless" as possible. Only when each person can truly listen to and fairly evaluate the others comments while in "the heat of battle" will pair programming work well.

    75. Re:Ask Slashdot: Have you used Extreme programming by koreth · · Score: 2, Interesting

      Enabling two people to interact with a single computer isn't the problem. Enabling two people to interact effectively with each other is. VNC and speakerphones are fine if one person sits and silently watches over the other's shoulder until they see a typo. But effective pair programming, as I've observed it, is a much more interactive process with lots of "hang on, let's take a step back here" moments that seem to happen a lot more readily in person.

    76. Re:Ask Slashdot: Have you used Extreme programming by slashdot_commentator · · Score: 1

      Are the inconveniences worth it?

      If your partner is really hot, then yes.

      And given that programmers are overwhelmingly male, I don't think much more than 10% of the population will agree with you.

      --
      There is no America. There is no democracy. There is only IBM and AT&T and DuPont, Dow, General Electric, and Exxon
    77. Re:Ask Slashdot: Have you used Extreme programming by William+Tanksley · · Score: 1

      4 times? Cite your source, please. The rest of that paragraph seems equally unlikely (I've seen positive reviews of PP, including one positive study), but I'll let that float until I get a backup to that number.

      Also, refactoring can be good, but it takes a lot of time and effort to make code cleanly work, and that effort is usually duplicated when you re-factor. The cost in time is HUGE, and it should not be taken lightly.

      You're confusing refactoring with rewriting, aren't you?

      -Billy

    78. Re:Ask Slashdot: Have you used Extreme programming by 110010001000 · · Score: 0

      Ah! Your computer science teacher! Now THERE is someone who knows about good coding.

      Besides, your story makes zero sense. The ENTIRE group missed the mascot. NO ONE in the entire class of X people caught it. If anything you are proving the reverse.

    79. Re:Ask Slashdot: Have you used Extreme programming by CarlBenda · · Score: 1
      I pair programmed with a kid who got a math degree from Caltech and spoke three languages. Definitely very smart. Context though is everything. Smart at what? This kid couldn't program worth shit. He smelled which made things worse to pair with him. After a while I got off on telling this "smart" guy we needed another test. He fell for it all the time and our productivity with it. I consider myself a good programmer. You don't have to be "smart" to realize a dumb move. The "smart" guys are the ones who will stick with a stupid move no matter what.

      Give me five people who program well and have code reviews. You'll get tons of code out of a well working team because producing code that's good makes them feel special.

    80. Re:Ask Slashdot: Have you used Extreme programming by blakestah · · Score: 1

      4 times? Cite your source, please.

      Just devel times at one site, depending on whether the programmers were paired or not. The pair takes twice as long as a single programmer, which is four times the man hours.

      Maybe for debugging it is a smarter idea, but I doubt it.

      You're confusing refactoring with rewriting, aren't you?

      No, I've had to refactor before. But when only one of the pair thinks a refactor is necessary, a warning bell oughta ring.

    81. Re:Ask Slashdot: Have you used Extreme programming by Anonymous Coward · · Score: 0

      From personal experience, I can say that it is just as stressful/frustrating to the "amped-up" programmer. It feels like driving at 5 mph on an empty highway.

    82. Re:Ask Slashdot: Have you used Extreme programming by Anonymous Coward · · Score: 0

      >> ...within weeks you have the TOTAL BREAKDOWN OF SOCIETY! Just a bunch of dullards running around shouting at each other about TQM and ISO9000 and who ate the last cream-cheese danish! ANARCHY!!!

      "There is another theory which states that this has already happened."

      (apologies to the late Douglas Adams)

    83. Re:Ask Slashdot: Have you used Extreme programming by Anonymous Coward · · Score: 0

      Get another job. Please. You are getting in people's way.

    84. Re:Ask Slashdot: Have you used Extreme programming by tcopeland · · Score: 1

      > It's noisy beacuse you have to talk
      > all the time to the other person

      Hm. Yup, pair programming definitely implies a lot of interaction with another
      person.

      > all in a reduced space

      This seems to be the problem.

      > all talking about their particular task
      > at the same time

      I think this ends up being a bit of a good thing - if you hear me talking about
      the Frob and how it doesn't have a getFiddle(), it's easy for you to pop up and
      say "I just added one!" or whatever. Improved communication... good stuff.

    85. Re:Ask Slashdot: Have you used Extreme programming by daecabhir · · Score: 1

      There is another advantage to the process that you have described... it is easier to implement for teams that for a variety of reasons cannot work physically together. However, by rotating the responsibility for the test harness and the coding of the application, it would appear that you do get a fair amount of benefit. Thanks for the insight!

      --

      -- daecabhir (this mind intentionally left blank)
    86. Re:Ask Slashdot: Have you used Extreme programming by ebh · · Score: 1
      Pair programming is "the knob turned to 10" on code reviews.

      As a sound technician, I know that turning the knob to 10 isn't necessarily what you want. Take an ugly sound and turn it to 10 and you now have an ugly, loud and distorted sound.

      As a kernel programmer (being a good instance of a system where no one person can know everything), I know that the best code reviews are done by teams of engineers who look at the code from different points of view.

      In addition to people who can easily find common coding errors, you also want people who can spot locking and semaphore problems, backwards-compatibility breakage, subtle interactions with other subsystems, use of deprecated interfaces, etc.

      If I'm a file system programmer paired up with another file system programmer (because we're doing file system work), then we're liable to have a lot of the same blind spots, so there are whole classes of bugs that can leak through.

      "Thank you for finding that off-by-one error. Now I know that the spinlock I'm holding forever is the correct one."

    87. Re:Ask Slashdot: Have you used Extreme programming by pmz · · Score: 1

      And given that programmers are overwhelmingly male...

      Then, they can share one chair. Four arms typing would be a boost of productivity, anyway.

    88. Re:Ask Slashdot: Have you used Extreme programming by adamruck · · Score: 1

      Yes actually he is a very good professor, the reason everyone missed it is becuase we were all focused on the same thing. If he had said just watch this however you want, we would have picked it up right away.

      --
      Selling software wont make you money, selling a service will.
    89. Re:Ask Slashdot: Have you used Extreme programming by Anonymous Coward · · Score: 0

      You can see some good information on successful (and not so successful) pair programming examples at:

      http://c2.com/cgi/wiki?PairProgrammingCaseStudy

      Mike

    90. Re:Ask Slashdot: Have you used Extreme programming by 110010001000 · · Score: 0

      Yes, much like two programmers who are fixated on the same code? I would rather have two programmers independently working, each reviewing the other via independent code reviews.

      The point is moot, since XP is stupid and is just a fad anyway. It sells books though.

    91. Re:Ask Slashdot: Have you used Extreme programming by AJWM · · Score: 1

      Interesting anecdote, but your point was...?

      You'll get tons of code out of a well working team

      Sure, that's well documented in studies of software engineering economics. So is the fact that in a field like programming, there can be an order of magnitude difference in productivity between two individuals. If you have people like that, you're better off organizing the team like Mills' "Chief Programmer Teams" (what Brooks calls "Surgical Teams").

      I don't think anyone has investigated whether that difference correlates with being a smelly polyglot mathematician in either a positive or negative sense. I rather suspect it doesn't correlate at all. My guess, though, is that high IQ helps, but is not the sole predictor. (I know plenty of high IQ people that can't program their way out of a paper bag, so to speak.)

      --
      -- Alastair
    92. Re:Ask Slashdot: Have you used Extreme programming by Anonymous Coward · · Score: 0

      "Anway, what good hacker wants to watch someone else type?"

      Not that I necessarily agree with the practice of paired programming, but that attitude is part of the problem. Personally, I don't want to work with a "hacker". I want to work with someone who is willing to spend the time to design code and implement it properly, instead of sitting at his computer hacking away until he gets something "that works".

  6. Sometimes it is good re-inventing the wheel by Anonymous Coward · · Score: 0

    I've read many books of this type but this one stands out. Its not just another "lets think of it in another fashion" book. Instead of just saying that "hey lets reinvent the wheel" it points out what is wrong with the "wheel". Its tells you the shortcomings of today's practices and most importantly, it describes how one can make programming a bit less tedious.

    All in all, a great book.

  7. You put your chocolate in my peanut butter by Anonymous Coward · · Score: 5, Funny

    XP and refactoring. Two over-blown buzzwords that go great together.

    the customer (and users) usually do have a pretty good idea what they want from a new system

    This a most telling quote as most developers have never talked to an actual customer in their entire career.

    I think the next programming movement should be called XTTFC for Extreme Talking To a Fucking Customer.

    1. Re:You put your chocolate in my peanut butter by mrtroy · · Score: 1

      XP and refactoring are buzzwords...

      But if you plan on coding efficiently and making if a dynamic and scaleable system is required, they are both essential.

      After all we dont want any "bad smells" (XP phrase) to occur, this can result in "decaying code" (XP phrase)

      If you dont use XP and refactoring, your code may work, but it will suck. Even if you dont call it that, any good programmer already does 99% of the things in XP and refactoring, it is just an attempt to set good practices for the IT world.

      Unlike building a bridge or house, there are little good practice suggestions available for coding, everyone seems to want to keep secret the best way to do things.

      --
      [I can picture a world without war, without hate. I can picture us attacking that world, because they'd never expect it]
    2. Re:You put your chocolate in my peanut butter by bmj · · Score: 1

      This a most telling quote as most developers have never talked to an actual customer in their entire career.

      I agree. Having done freelance work, I've seen plenty of clients that know they most definitely want 'X', but beyond that, they're not sure. Chances are, since they aren't thinking like developers or software architects, they aren't thinking through the ramifications of particular decisions. They could be either overanalyzing a particular use case, or not thinking through it enough. Actually, chances are, they just want a system to "generate this information from this other information, and email to these people, and maybe generate some reports here." They may even have idea what might look pretty on their desktop, but they haven't thought about potential security issues, other uses for the data, etc. As you work through the problem, you'll open new cans of worms for them daily.

      --
      Whereof we cannot speak, thereof we must be silent. --Ludwig Wittgenstein
    3. Re:You put your chocolate in my peanut butter by McLoud · · Score: 1

      This a most telling quote as most developers have never talked to an actual customer in their entire career.

      What? All of them want the same thing: the system should do everything, and still give us a reason to have the job.

      --
      sign(c14n(envelop(this)), x509)
    4. Re:You put your chocolate in my peanut butter by macshit · · Score: 1

      I haven't the faintest clue about XP (other than the many interesting comments in this story), but refactoring seems like just good common sense. Code evolves; help it do so cleanly.

      --
      We live, as we dream -- alone....
    5. Re:You put your chocolate in my peanut butter by blakduk · · Score: 1

      But the "Extreme" in XP is why it is attractive
      to 20-somethings. It creates an image of some
      geek jumping out of a plane with a surfboard,
      when what they're really doing is changing the
      indentation on their code. The use of the word
      "extreme" is a marketing exercise. Were it called "mature programming" or "white-socks-with-sandals programming" the number of adherents would be less.

    6. Re:You put your chocolate in my peanut butter by j3110 · · Score: 1

      I agree with you, developers generally don't talk to the customer. If you had actually talked to several customers (I have to deal with nearly 30 in my main project), I think you would get the point that the customer generally doesn't know what they want. After years of dealing with them, I've gotten a handle on heading off their requests with features before they can ask for them usually. It saves time in the long run if you design a flexible model to begin with; instead of scrapping portions of the project, adapt them. Make your model vague. My favorite is creating N:M relationships with the relation table containing an ID defining the relationship. That way you can relate different sets of objects in different ways, but the same code can show which objects are related and how.

      Basically, I like to believe that XP is a few notches too far up on the design issue, but not because the customer knows what they want, but rather because you can design a flexible archetecture. I've only met one customer that knew what they wanted, and that was because they wanted a duplicate of something else, except they wanted it stable and fast.

      --
      Karma Clown
    7. Re:You put your chocolate in my peanut butter by Doctor+Crocodile · · Score: 1

      there are little good practice suggestions available for coding I was going to say 'total crap', but you aren't too far off the mark. I know he's got a M$ background, but read ANYTHING by Steve McConnell, especially 'Code Complete' or "Rapid Development". There's a LOT of other stuff but it's all geared to specific languages. McConnell's examples are understandable by all.

  8. Definition of a review by sphealey · · Score: 4, Insightful
    Perhaps I have been reading the New York Review of Books too long, but when I read a "review" I like to see some quotes from the actual book, some arguments for and against, some footnoted references to counter-arguments (it is fine if the reviewer considers the counter-arguments weak, as long as they are noted). In other words, something more than a prose advertisment.

    sPh

    1. Re:Definition of a review by Rick+the+Red · · Score: 1, Offtopic

      Then write a book review yourself. Slashdot doesn't hide the link.

      --
      If all this should have a reason, we would be the last to know.
    2. Re:Definition of a review by Epu · · Score: 1

      You have time to read NYT reviews *and* slashdot?

  9. Dont forget by UrgleHoth · · Score: 1

    That XP is just fashionable
    Take that you XP sealot!

    --

    Dogma - "let's just say we'd like to avoid any empirical entanglements."
  10. Factual errors by linuxislandsucks · · Score: 3, Informative

    there are numerous factual erros on what xp is in this book..

    One example..if using xp must pari program..

    wrong! XP like any software process allows you take and use only those features that work with your project something this book author forgets to point out...

    --
    Don't Tread on OpenSource
    1. Re:Factual errors by tcopeland · · Score: 4, Insightful

      > XP like any software process allows you take
      > and use only those features that work with
      > your project

      Sure, you can do whatever you want. But XP without pair programming isn't XP, it's.... something else. "Pretty Adventuresome Programming", maybe.

      Some folks don't like XP because it's hard - it's hard to write unit tests, and it's hard to pair program and share knowledge and so forth. That's fine... but if you're rejecting XP because you don't like doing those things, don't blame XP.

    2. Re:Factual errors by MacGabhain · · Score: 1

      If memory serves, Beck disagrees.
      Unit testing frameworks can be put in independently of the rest of the XP system. Pair programming maybe. Everything else is only postulated to work on an all or nothing basis.

    3. Re:Factual errors by polaar · · Score: 1

      So: should they rewrite the book completely?

    4. Re:Factual errors by Anonymous Coward · · Score: 0

      Ummm... no. You can't pick and choose the practices of XP. This has come up for dicussion numerous times... e.g. "I do unit testing, therefore I'm sort of doing XP." The conclusion has been that if you are not doing all 12 practices to some degree of rigour, you are NOT doing XP.

    5. Re:Factual errors by Znork · · Score: 1

      "it's hard to pair program"

      Actually, I dont think it's hard to pair program. The difficult part of pair programming is finding the right combination of pairs. Stick the wrong people together and you get a pair that is less efficient combined than either would be on their own. Stick the right pair together and you get more done than both of them working separately.

    6. Re:Factual errors by AuMatar · · Score: 1

      No, if you're rejecting XP because you don't like those things you are EXACTLY RIGHT to reject XP. As you said- those are two core components of XP. If those two components of XP do not work for you, then XP as a whole will not work for you. The fault there is in XP.

      Newsflash: there is no holy grail of software processes. Different processes work better for different team sizes. Different processes work better for different project types. Different processes work better for different teams, due to the personality of the team members. Expecting XP to be any kind of a silver bullet is sheer and utter stupidity. It will work well for some projects, depending on the team. It will fail horribly for some projects, depending on the team. For those teams it fails for, the fault is in XP.

      --
      I still have more fans than freaks. WTF is wrong with you people?
    7. Re:Factual errors by lobsterGun · · Score: 1

      XP isn't called 'extreme' because it's risky or adventureous. It's 'extreme' because it takes the best practices of the industry and uses them all.

    8. Re:Factual errors by tcopeland · · Score: 1

      Yup, true, maybe "it takes self-discipline to pair program" would have been a better way to put it.

    9. Re:Factual errors by tcopeland · · Score: 1

      > The fault there is in XP

      Hm. Why does the fact that someone doesn't like XP imply that the problem is in XP? I don't like hockey, but that doesn't imply that something's wrong with hockey.

      > For those teams it fails for, the fault is
      > in XP.

      Well.... if a team says "we're doing XP" and then doesn't follow the XP practices... I don't think that that can be chalked up as an XP failure.

    10. Re:Factual errors by tcdk · · Score: 1

      Now where are those mod points, when you need them?

      I quite agree. Actually if you read the first XP book, one of the main point are that if you follow all the ideas, they merge together and support each other.

      There's a nice diagram in the book somewhere that show how the different methods support each other.

      But then again, you don't have to do all of them "extremely". Just doing all of them just a little, bit will be a lot better than big-ball-of-mudd or the usual chaos development method used.

      In most cases added as much as possible of the xp methods to your standard waterfall, spiral or iterative development process will give you a lot.

      I've developed software professionally for 15 years and I've used XP for the last 2-3 years. It that doesn't mean that I think XP is the end all of how to develop software. It's right for the things that I do, when used in moderat amounts combined with whatever it gets to get management to accept it.

      (try to tell a govermant org that they don't have to write a big contract and that they just have to pay us by the hour and every time we give them something of value. They will nod and go "that sounds nice, but can we get back to the big contract that will cover my ass 100%, even if the project fails badly, now? I know that it raised the chances of the projekt failing, but it will cover my ass, so I don't care.").

      --
      TC - My Photos..
    11. Re:Factual errors by tcopeland · · Score: 1

      > Just doing all of them just a little, bit
      > will be a lot better than big-ball-of-mudd

      +1, Insightful.

      I find that my projects are a lot better when I write lots of unit tests for them... I can't do pair programming, but I do what I can.

      > try to tell a govermant org that they don't
      > have to write a big contract

      Right on. Just sign the contract and then do as much XP as possible. They'll be happy with the product, and you'll be happy with the follow-on work :-)

    12. Re:Factual errors by AuMatar · · Score: 1

      The fault is that XP does not work for that team and that project. The fact is that XP does not work everywhere. How wide a problem set it works on is debatable (and I'd probably be at the low end of that debate, as I'd hand in my resignation effective immediately if asked to pair program), but the fact is that it does not work on the majority of projects.

      Now, is this a fatal flaw in XP? No, it isn't. Every process has this flaw. But it is a failing in the process itself, not the people or the implementation, as so many XPites like to spin it.

      --
      I still have more fans than freaks. WTF is wrong with you people?
    13. Re:Factual errors by tcopeland · · Score: 1

      > The fact is that XP does not work everywhere

      But rejecting XP and then saying "XP doesn't work"... how does that show that XP is flawed? Or maybe I'm misunderstanding. But your next point is far more interesting....

      > as I'd hand in my resignation effective
      > immediately if asked to pair program

      Why? What if you were pair programming with, say, Don Knuth? Or John Carmack?

    14. Re:Factual errors by AuMatar · · Score: 1

      Doesn't matter. It isn't a matter of liking/respecting my partner (although that does factor in, but lets assume a coworker I like/respect for the sake of the discussion). The main matter is a combo of:

      1)Boring. Boring, boring, boring. I've watched people code before. In fact, I'm good at watching people code and fixing their mistakes, I've won awards for my work on tutoring projects. But I don't like to do it (watching other people code, not tutoring. I enjoyed that).

      2)Having someone standing staring at my work. I hate people peering over my shoulder with newspapers. With computers its worse.

      3)I work best when I can take micro breaks- code a bit, check my email, code some more, check slashdot, code some more, check my guild forum. The microbreaks allows me a chance to switch tracks for a moment, and helps me avoid burnout. Frequently I'll think of an entire new approach to a sticky problem on one. These are near impossible to take paired- too many of the things are private.

      4)I like working to music. Can't do that if I need to discuss with a partner

      5)I think differently than most people. Not necessarily better, but differently. Pairing me up with someone means I will be spending large amounts of time discussing what Im doing, or clarifying suggestions

      6)I'm a private person. I enjoy my privacy. I'm more than happy to discuss issues with any of my coworkers, but I prefer to be left alone and just get my work done to the social bs layer pairing causes. Especially if my partner is not a friend.

      7)I dislike havoing to clear or announce to my partner every time I need to go to the washroom, grab a pop, make a personal phone call, or god forbid leave early a particular day.

      Basically, pair programming does not work for me. I'd go so far as to say if the programming profession required it, I'd change careers rather than put up with it. I'd find working that way soul sucking, I would not enjoy my job under those conditions (and if I don't enjoy my job, why should I do it? Not to mention a happy employee is a far more productive employee).

      Actually, come to think of it, I don't think I know anyone irl who has ever enjoyed pair programming. I'm sure (well, obviously there are) there are people who do, but I think the vast majority of developers fell my way about it.

      --
      I still have more fans than freaks. WTF is wrong with you people?
    15. Re:Factual errors by chromatic · · Score: 1
      I've watched people code before.... Having someone standing staring at my work.

      I dislike those things too.

      I like pair programming.

      What you describe is not pair programming.

    16. Re:Factual errors by AuMatar · · Score: 1

      But it is. And yes, I have done pair programming, so I know what Im talking about.

      --
      I still have more fans than freaks. WTF is wrong with you people?
    17. Re:Factual errors by tcopeland · · Score: 2, Informative

      > I've watched people code before

      That's not pair programming, though. If you're pair programming and you're bored, say so and drive for a bit.

      > Having someone standing staring at my work

      Hopefully they'd be doing more than just staring... hopefully you and the other person would be discussing the code.

      > when I can take micro breaks

      Yup, ain't much time for Slashdot when you're pair programming.

      > music

      Unless you turn it down to be somewhat quiet.

      > I will be spending large amounts of time
      > discussing what Im doing, or clarifying
      > suggestions

      And what would be the result of that? Maybe some good stuff - i.e., improving the communications skills, getting better at teaching, etc? No harm done there.

      > I'm a private person

      Yeah, but the code is public - at least within your project. You don't have to talk about your inner feelings, just discuss method naming and such. In other words, be business-like.

      > every time I need to go to the washroom

      You: "I gotta take a break".
      Other person: "See ya in 10 minutes".

      No problem.

      > pair programming does not work for me

      It does for me - the interchange of ideas, the focus, benefitting from the other person's ideas and such - it's good stuff.

      > I'd change careers rather than put up with it.

      Think some more about why you hate it so much. Maybe there's something to it :-)

      > anyone irl who has ever enjoyed
      > pair programming

      Chalk me up as one who does.

      On the other hand, I don't pair program all day long - just in little segments of time. So hey, what do I know.

    18. Re:Factual errors by AuMatar · · Score: 1

      >That's not pair programming, though. If you're pair programming and you're bored, say so and drive for a bit.

      And when he gets bored in approximately 5 minutes?

      >Hopefully they'd be doing more than just staring... hopefully you and the other person would be discussing the code.

      Doesn't make it any less annoying

      >Yup, ain't much time for Slashdot when you're pair programming.

      Which would be bad for my overall productivity and code quality. I don't need slashdot, but I do need the micro breaks. 5 minutes can do a lot to stop you from feeling mentally run down.

      >Unless you turn it down to be somewhat quiet.

      Whats the fun in that? :)

      Actually, i have trouble concentrating on 2 simultaneous audio sources. It'd need to be one or the other, which wouldby default need to be my partner.

      >And what would be the result of that? Maybe some good stuff - i.e., improving the communications skills, getting better at teaching, etc? No harm done there.

      Loss of productivity as I spend 10 minutes on something that takes 1 to code.

      >Yeah, but the code is public - at least within your project. You don't have to talk about your inner feelings, just discuss method naming and such. In other words, be business-like.

      You miss the point. I don't want people bothering me all day long. If I wanted that, I'd be in sales.

      >> every time I need to go to the washroom

      >You: "I gotta take a break".
      >Other person: "See ya in 10 minutes".

      And a 10 minute loss of productivity for both of us. Not to mention the annoyingness of it. And the loss of another 10 when he does the same. And the fact that these breaks take you out of the zone.

      >> pair programming does not work for me

      >It does for me - the interchange of ideas, the focus, benefitting from the other person's ideas and such - it's good stuff.

      Good for you. No sarcasm there, if it works for you, use it. I just get annoyed at the XP zealots who think its the best way for everyone. It isn't.

      >On the other hand, I don't pair program all day long - just in little segments of time. So hey, what do I know.

      This may be a factor. I do code all day long. Two hours or so a week of meetings, and a small amount of time each day answering email, discussing issues, etc. Say another 5 a week. And a few a week on other related stuff liek documentation. But by and large Im programming 7-10 hours a day. I think I'd strangle anyone I was with for that long daily, if I didn't drive him to strangle me first!

      --
      I still have more fans than freaks. WTF is wrong with you people?
    19. Re:Factual errors by tcopeland · · Score: 1

      > Loss of productivity as I spend 10 minutes
      > on something that takes 1 to code.

      Bah! I doubt it'd be that long. And even if it was, there'd be two people who had looked at it and understand it. And it'd probably be better code. No mallocs without frees. No ternary expressions. All that.

      > these breaks take you out of the zone

      Possibly, but I find it's a lot easier to get back in the zone if I'm working with someone. Otherwise I'm liable to extend that break for a lot more than 10 minutes. Or start off on some adventure of Factory classes and other such stuff that I end up deleting an hour later.

      > I do code all day long

      Me too, mostly Java and Ruby, and some C. But not in pairs. Only occasionally.

      > I think I'd strangle anyone I was with
      > for that long daily, if I didn't drive
      > him to strangle me first!

      Nice :-) Hey, we can pitch pair programming to manager types as a headcount reducer!

    20. Re:Factual errors by AuMatar · · Score: 1

      An interesting thought here- perhaps inclination for pair programmingis personality based? I know I'm heavily INTJ. A large percentage of programmers are INTJ or INTP. From some of your comments on people, I'd assume you're an Exxx (in basic terms, E=extrovert, I=introvert)? That can make a huge difference in something like this. Probably not the only difference, but possibly a strong one. I remember the one person here who was excited about trying it (although he hended up hatingit) was a definite extrovert.

      --
      I still have more fans than freaks. WTF is wrong with you people?
    21. Re:Factual errors by tcopeland · · Score: 1

      Yeah, I think I'm E[something]. Maybe ESTP. I wonder if there's a study out there on that. I Googled on "programmer MBTI chart" but came up dry.

      I agree, it could make a difference... on the other hand, it might benefit both an introvert an extrovert programmer to sit down together and try to get something working. I don't know... I guess I just find that if I can explain something to someone I understand it a lot better. And the other person usually makes some insightful connection that I've missed. That's part of why I like open source programming... just seeing what other folks chip in with is nifty.

    22. Re:Factual errors by chromatic · · Score: 1

      Tom responded with what I should have responded. My comment was pretty terse and inaccurate. I should have said "Just watching someone code over his shoulder isn't pair programming" the impression I got from your first two points.

      Your other points are a matter of opinion and preference; there are some people who honestly try pair programming and really dislike it. That's fine. It's definitely not for everyone or every situation. I work mostly from home these days and wish I could pair more often.

    23. Re:Factual errors by daveisoverlord · · Score: 1

      But XP without pair programming isn't XP, it's.... something else. "Pretty Adventuresome Programming", maybe.

      OK, but what if it wasn't true pair programming. What if it was just two people working really hard on a problem? Would that be "Pretty Concentrated Programming"?

      Because I would love to use PCP at work.

      --
      The perception of reality is more important than reality itself.
  11. XP is the best by stratjakt · · Score: 1, Funny

    Microsoft really outdid themselves!

    --
    I don't need no instructions to know how to rock!!!!
  12. Middle ground? MIDDLE GROUND?!? by burgburgburg · · Score: 4, Funny
    Have you not been paying attention? This is the land of EXTREEEEEMMMMEEEE!!!!.

    Reasonable, well thought out, non-extreme methods mean the terrorists have won. Oh, wait. That's a different article.

    Anyway, how do you scream at the top of your lungs "MIDDLE GROOOOOUUUND"?

    1. Re:Middle ground? MIDDLE GROUND?!? by Anonymous Coward · · Score: 0

      Spoooooooooooooooooooooooooooooooooon guaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaard!!!!!!!!!! !

    2. Re:Middle ground? MIDDLE GROUND?!? by kurosawdust · · Score: 1
      Anyway, how do you scream at the top of your lungs "MIDDLE GROOOOOUUUND"?

      It's a Zen koan, man...kind of like how you would scream "I am drinking in MODERAAAAATIONNNN!" at a frat party.

      Of course you might just get your ass kicked for that.

    3. Re:Middle ground? MIDDLE GROUND?!? by Anonymous Coward · · Score: 0

      I just pictured "Macho Man" Randy Savage screaming that with all those veins popping from his neck and now my monitor has coke all over it.

    4. Re:Middle ground? MIDDLE GROUND?!? by Idarubicin · · Score: 1
      Anyway, how do you scream at the top of your lungs "MIDDLE GROOOOOUUUND"?

      "CANADA!"

      --
      ~Idarubicin
  13. the /. icon (offtopic) by Anonymous Coward · · Score: 0

    hey, the /. favicon's got a transparent background! W00t! (?)

    Maybe a result of eXtreme Programming in the /. code monkey dept?

  14. Balance by randall_burns · · Score: 3, Interesting

    The XP guys _have_ made a mark in the world. Now, how that is going to work out longer term, remains to be seen. XP _is_ influecing stuff like IBM's Rational Unified Process.

    I tend to like XP. I haven't worked in an XP shop, but I have used it in class projects and some project of my own.

    Right now, lots shops have processes that are non-existant or chaotic--that is what XP really needs to be compared against. XP isn't "the emperor" more like an upstart prince edging in on the territory of being eyed(but not governed) by Emperor RUP.

    My gut is that was is motivating books like this:
    is the fact that XP is being adopted in places where stuff like RUP just would never get a toe in the door in its present state.

    The major stages of the opponents of an invention:
    a) it won't work
    b) its evil
    c) its not really new
    d) we invented it

    This stuff strikes me as somewhere between stage a-b.

    1. Re: Balance by Black+Parrot · · Score: 1

      The major stages of the opponents of an invention:
      a) it won't work
      b) its evil
      c) its not really new
      d) we invented it
      Except for some inventions it's:

      a) first they laugh at you
      b) then they forget you

      It's not obvious yet that XP follows your map rather than mine, though a bit of familiarity with the history of sna^w overhyped methodologies might help guide a gambler's bet.

      --
      Sheesh, evil *and* a jerk. -- Jade
    2. Re:Balance by Cap'n+Canuck · · Score: 1

      Rational is supposed to have a module that incorporates XP into its Rational suite of tools (even into its RUP), but somehow I just don't see IBM/Rational/RUP and XP as bedmates.

    3. Re:Balance by Cederic · · Score: 1


      RUP was developed to sell Rational tools. I mistrust it for that reason.

      XP was developed out of the practical pragmatic experience of several exceedingly good developers. I trust it because it makes immense sense to me.

      I've tried both. I tend to use a mix of techniques from each, and some from elsewhere. Given the choice between pure RUP and pure XP, I'll pick XP - but I'll ask for a good coach to help my team get up and running on it.

      ~Cederic

  15. XP by CGP314 · · Score: 1, Funny

    Sounds just as bad as windows XP

  16. Sheesh. by Earle+Martin · · Score: 3, Insightful
    "I should point out that I get a couple of small mentions in this book (the authors quote an email from me), and I also happen to agree with a lot of what the authors say. But I'll try to be as impartial as I can with this review."

    If there was a book called "Why Linux Sucks", and I contributed to it, and I agreed with it, would that make me a fair reviewer for it? You can find links to some possibly less biased reviews at softwarereality.com. It's also worth reading the comments on the Case Against XP article on the same site, by one of the authors of the book.

  17. Nothing beats... by boomgopher · · Score: 5, Insightful

    having a team of programmers who:

    Like to program,
    are properly trained and schooled,
    who are paid enough,
    and are given enough time to do the job right.

    Everything else is fluff or a fad.

    --
    Your hybrid is not saving the environment. Its purpose is to make you feel good about buying something.
    1. Re:Nothing beats... by ViolentGreen · · Score: 0

      Well of course that's the optimal situation. In reality, companies do not have infinite resoures and time to complete each project. I know very little about XP but it seems that one of it's benifits is it's light on time.

      --
      Not everything is analogous to cars. Car analogies rarely work.
    2. Re:Nothing beats... by Anonymous Coward · · Score: 0

      Couldn't agree more. No management gimmick is going to make a team work better than having a bunch of smart, qualified, clever, and motivated workers on your team.

      However, someone might reply, "Of course, but the question is 'What system will make the best use of the workers I have?'"

      It's like asking "What's the best form of government?" and receiving the reply that the best thing to do is fill your country with good, honest, law-abiding citizens. Great, but what do I do with the imperfect citizens I have?

      If you don't have a bunch of smart, qualified, clever, and motivated workers on your team, there is no silver-bullet- no managment gimmick that will score you an automatic win. The trick is to have a smart, qualified, clever, and motivated manager who can pick and choose pieces of various management gimmicks and tailor them to the team he/she is working with.

      If you have a crappy team and a crappy manager, I don't care what method you use, you're screwed.

    3. Re:Nothing beats... by AJWM · · Score: 1

      Having a design (or at least a set of requirements) probably helps too.

      Perhaps you're of the old school and were rolling all the other job titles like analyst, architect, designer, coder and tester into the "programmer" umbrella, but these days that term is mostly synonymous with "coder" with a bit of "designer" thrown in. (Come to think of it, even in the old days "analyst" was separate, and I've had the job title "Programmer-Analyst" -- which is not a psychiatrist for coders ;-)

      --
      -- Alastair
    4. Re:Nothing beats... by pong · · Score: 1

      You "design" point is not orthogonal to the items in the list in the post you responded to. So while "a design" is certainly valuable the OP indicated a set of circumstances that in his experience would lead to success. Most likely this succes would incorporate "a design".

    5. Re: Nothing beats... by Black+Parrot · · Score: 2, Funny

      having a team of programmers who:

      Like to program,
      are properly trained and schooled,
      who are paid enough,
      and are given enough time to do the job right.
      Heh. I thought you were serious until I got to that last one.
      --
      Sheesh, evil *and* a jerk. -- Jade
    6. Re:Nothing beats... by Herbmaster · · Score: 1
      That's great, until you realize:

      You have no idea how to hire good programmers without getting a bunch of bad ones too.
      You don't have any money to pay programmers until you've already developed something you can sell.
      If you have enough time to do the job right, it's because you don't know what your customers want yet. By the time the job is done right, you'll need more time to make the job right again, because "right" has changed.

      Seriously, the first one is the important one. You can't just get programmers who are properly trained and like to program. HR is notoriously incompetant. Even with good hiring practices, half of everyone you hire will be not nearly as good as your project requires. Pair programming is one way to address this: out of any given pair, one programmer will be more talented than the other. If you're lucky, this will improve the quality and quantity of output from the two programmers. If not, you may discover you need to go back to the hiring stange to replace the lesser of the two.

      --
      I'm not a smorgasbord.
    7. Re:Nothing beats... by Felonious+Ham · · Score: 1

      Um.... sure. But the point of any process (and maybe XP in particular) is to elevate the efficiency of all developers on a project to some acceptable minimum. It's trivial to say, "given enough time and talent anything can be done right." What's tough is guaranteeing quality under tight constraints with a team with different abilities.

    8. Re:Nothing beats... by DunbarTheInept · · Score: 1

      The problem is that programming and design are NOT seperate jobs. Asking someone who can't program to be a designer results in designs that always take a brute-force simpleton approach when the right answer might be more elegant than that. And if you're doing a waterfall method, the coders who know better can't do a damn thing to fix the design. The common business practice is to take someone who programs and "promote" him to do nothing but high-level design documents and never again touch a compiler. After about 10 years you are left with a designer who doesn't know how to code anymore and is still trying to design as if for COBOL when the language actually being used is C (as an example). The idea that someone can be a good designer without occasionally dropping down into the 'gruntwork' of coding is like saying someone can be a good physicist without ever doing any math.

      --

      Don't label something "offtopic" unless you know the topic well enough to tell what's on topic.

    9. Re:Nothing beats... by macshit · · Score: 1

      Any company that pays that much attention to job titles is probably already beyond hope...

      --
      We live, as we dream -- alone....
    10. Re:Nothing beats... by AJWM · · Score: 1

      Oh, they're separate jobs, yes, but with overlapping skill sets. I'll certainly agree with you that a designer who hasn't gotten his hands dirty with code in several years is probably going to turn out suboptimal designs. Likewise, a programmer who knows nothing about design is going to have to be spoonfed everything.

      But they are separate jobs. A designer certainly has to know the capabilities and paradigms of a given language and APIs, just the same way as a bridge designer has to know the properties of steel and concrete, and usual construction techniques. But just as the latter doesn't have to know how to pour concrete or weld steel (although it certainly helps if they've done that at some time in their career), the former doesn't have to know details that a programmer should, such as how to write a makefile or configure Ant.

      --
      -- Alastair
    11. Re:Nothing beats... by AJWM · · Score: 1

      On the other hand, a company that pays no attention to job titles and swaps around, say, secretaries and developers because they both just sit at keyboards all day is probably also beyond hope.

      Job titles serve a purpose, but sure, they shouldn't get in the way, either.

      --
      -- Alastair
    12. Re:Nothing beats... by dubl-u · · Score: 1

      a team of programmers who [...] are given enough time to do the job right.

      Heh. Safe of you to say that, as it never happens. Work always expands to more than fill the time available.

      In my experience, one of the best things about XP is that it provides excellent mechanisms for scope control and quality control. With most projects I've seen, if the estimates are off teams make it up by writing crappy code and planning to "fix it later" (i.e., never). But with XP, quality is always kept at a high level, and scope is cut to match the time available.

      If wewant to have enough time to do the job right, we have to adopt processes that make that happen. Expecting product managers to just give us enough time to do things right is like expecting a fox to guard the henhouse.

    13. Re:Nothing beats... by esnyder · · Score: 1
      Like to program,
      are properly trained and schooled,
      who are paid enough,
      and are given enough time to do the job right.
      Seems to me that it's the are properly trained and schooled part that is under discussion. What methodological tools (ie. XP, etc.) can programmers use to best do the job right?
      --

      Emile Snyder
      www.talentcodeworks.com

    14. Re:Nothing beats... by Kalani · · Score: 1

      The idea that someone can be a good designer without occasionally dropping down into the 'gruntwork' of coding is like saying someone can be a good physicist without ever doing any math.

      Remember Faraday? He was that guy who took Newton's old post as the head of the Royal Society.

      --
      ___
      The ends are ape-chosen, only the means are man's. -- Aldous Huxley
    15. Re:Nothing beats... by inha · · Score: 1

      I agree with you, except for:
      ...just the same way as a bridge designer...

      Software is not a bridge. We have hundreds of years of experience in building bridges, but only few decades in building software. We actually do not know how to build a software, not even what a software is. That's why, on new software projects, the only way to find out a decent design is to implement it. How can something that is unknown be designed?

      For software already implemented we can use all these fancy design methods to reimplement it, because then we have a slight idea of what we want. But software designers are not like bridge designers. Bridge designers know what they are doing.

      Then there is this suggestion that maybe we shouldn't be modelling our art as another branch of engineering...

    16. Re:Nothing beats... by PurpleWizard · · Score: 1
      I would add

      "and understand the problem"

    17. Re:Nothing beats... by AJWM · · Score: 1

      We have hundreds of years of experience in building bridges,

      And yet they still sometimes fall down. See e.g. Tacoma Narrows, Kanas City Hyatt Skywalk, etc. (These were design failures, not maintenance failures; plenty of bridges fail through wear and tear and bad maintenance, whereas with software "bit-rot" doesn't really happen if you don't change anything.)

      We actually do not know how to build a software, not even what a software is.

      Speak for yourself.

      the only way to find out a decent design is to implement it.

      Design by trial and error? I don't think so. If you can't come up with a software design, it's because the problem (the requirements) is itself not well understood (unless you're just an incompetent designer). Now true, there have been many attempts to design software for problem domains that were not well understood (which certainly includes some business situations as well as hard problems like machine vision or natural language understanding). But if you don't understand the problem domain, you shouldn't be trying to design software for it in the first place (except as a research tool to help better understand the problem domain, perhaps).

      How can something that is unknown be designed?

      Remember those "analysis" and "requirements gathering" steps?

      For software already implemented we can use all these fancy design methods to reimplement it,

      Why reinvent the wheel? Change the first part to "for well understood problem domains" and I'll agree.

      But software designers are not like bridge designers. Bridge designers know what they are doing.

      See examples above. And read some Petroski.

      --
      -- Alastair
    18. Re:Nothing beats... by inha · · Score: 1

      ..."bit-rot" doesn't really happen if you don't change anything.

      If we don't do anything to our part of software, it doesn't rot. Unfortunately, our part of the software is not the only part of the software. How could we prevent the rotting of other parts effecting our part? What an interesting question, isn't it?

      Speak for yourself.

      I do. So, could you please tell, what is a software. Is it only the code? The compiled or the source? Or does it include something else? Why?

      Remember those "analysis" and "requirements gathering" steps?

      Are you suggesting the dumbed-out-boehm-waterfall model? I didn't think so. Even the original Royce's waterfall model had at least two iterations: first to try out (with waterfall model) how to implement the software, then to use waterfall to implement the software.

      Design is always trial and error, or at least based on it. I just would like it to be "trial and error by implementing" not "trial and error by stickmen and ellipses." In other words, "design with concrete facts, not with vague drawings." One of my former colleagues had this admirable habit of never to suggest any design proposals without first trying them out.

      You said really strong and wise advices ("if you don't understand the problem domain" etc.), and I couldn't agree more. All I'm saying is: implement first to find the way to understand the problem domain. This implementation just has to be thrown away, otherwise it comes to be the product, a badly designed product.

      Why reinvent the wheel?

      Look around. Are we using just one web-browser? Just one word processor? Just one operating system? Playing just one FPS or racing game? Reinventing the wheel seems to profitable, money talks. I don't like it either.

      Change the first part to "for well understood problem domains" and I'll agree.

      Yes, I should've said so. Thanks for the correction.

      And read some Petroski.

      Thanks, I will. You might like trying Feyerabend.

  18. ditto... by Anonymous Coward · · Score: 0
    1. Re:ditto... by Anonymous Coward · · Score: 0

      me, too

    2. Re:ditto... by Anonymous Coward · · Score: 0, Funny

      You guys are all wrong.

  19. OT: Sir Haxalot (was RE: Amazon Link) by TheFlyingGoat · · Score: 0, Offtopic

    Get over your damn karma whoring. Every single post of yours is an alternate link. Having excellent karma is fine and all, but try posting some useful content in trying to gain it. You're not much better than the trolls and crap flooders. Think about it, and at least try posting some additional info with your links. Perhaps a 'this link is better because...' or 'the book is only $x over here and they ship faster'. NOT posted anonymously because I know this will get modded down and I want to make a point with it.

    --
    You have enemies? Good. That means you've stood up for something, sometime in your life. --Winston Churchill
    1. Re:OT: Sir Haxalot (was RE: Amazon Link) by Anonymous Coward · · Score: 0

      The pathetic thing about Sir Haxalot is that he has posted 208 comments and not yet received the +1 bonus. It shouldn't take more than 50 post to get +26 karma. You can do it in a lot fewer posts even if you have nothing original to say.
      Yes, but half my comments are troll comments, so there you go.

    2. Re:OT: Sir Haxalot (was RE: Amazon Link) by Anonymous Coward · · Score: 0

      Jesus, I just metamodded the parent and I am the one who posted it. Come on /. coders, you can't moderate a post made from the same ip, why can you metamod one?

    3. Re:OT: Sir Haxalot (was RE: Amazon Link) by Anonymous Coward · · Score: 0

      Way to choose a plagiarist.

  20. Is this a review or a rebuttal? by Maclir · · Score: 3, Interesting

    I would have like to have seen less of the pre-emptive rebuttal and more reviews on some of the findings and recommendations.

    Drop the dogma and theology, and give us the hard core, nitty-gritty, down and dirty facts.

    1. Re:Is this a review or a rebuttal? by blakestah · · Score: 1

      The hard core, nitty-gritty, down and dirty facts are that the use of XP is four times as slow, irritating as can possibly be, and would not EVER be allowed by the vast majority of seasoned programmers.

      Next time you are programming think of what it would be like to have someone looking over your shoulder arguing about class definitions or variable names. Projects take two programmers twice the time as the better of the two would use to do it alone. The best is when you get stuck halfway through a re-factor and just waste time backing the changes out so the code works again.

      XP is a solution looking for a problem, it probably needs refactoring itself. Next time someone recommends it, ask for a successful neutral third party evaluation (ie: one not associated with the XP program). You won't find such a positive eval because they do not exist.

      XP is kinda like an informercial gone bad.

    2. Re:Is this a review or a rebuttal? by William+Tanksley · · Score: 1

      The hard core, nitty-gritty, down and dirty facts are that the use of XP is four times as slow, irritating as can possibly be, and would not EVER be allowed by the vast majority of seasoned programmers.

      These are not facts, mister. They're not even true; all but the last bear not the faintest nodding acquaintance with reality. The second has the dignity of being mere opinion, but it's patently obvious that it's not a tenable opinion for anyone who's experienced any of the programming world -- no matter WHAT your preferences are, there are FAR worse abuses to suffer under than XP's benevolent regime. The first is, of course, out-and-out false.

      Next time you are programming think of what it would be like to have someone looking over your shoulder arguing about class definitions or variable names.

      It hurts when you do that -- don't do that. Don't hire programmers who never shower, either. If you get a dud, fire him.

      Seriously, industry best practice is peer review. Pair programming is a chance to do peer review constantly, NOTHING MORE. If you can do a peer review right, you can also do pair programming right.

      Projects take two programmers twice the time as the better of the two would use to do it alone.

      No, but a FAR closer brush with the truth than before. Empirically, each task takes a little shorter than the best of the two would have taken, BUT the quality of the code produced is dramatically higher, resulting in fewer tasks needed to get the same functionality (less bug-catching, less rework to add missed functionality) and much lower maintenance costs -- and remember, maintenance accounts for the vast majority of the cost of a project.

      The overall cost, up to but not including maintenance, of a project incorporating pair programming but not other parts of XP, seems to be about the same as non-pair programming.

      The best is when you get stuck halfway through a re-factor and just waste time backing the changes out so the code works again.

      Backing changes out is easy. Just thank your lucky stars that you have version control and a solid, well-used and maintained test suite. The "best" part is when you're working on aged, un-refactored code and have no choice but to accept it, because you've decided not to refactor!

      XP is a solution looking for a problem, it probably needs refactoring itself.

      News flash: the problem's here, and it's been here a long time. Don't know if XP is a solution.

      Next time someone recommends it, ask for a successful neutral third party evaluation (ie: one not associated with the XP program). You won't find such a positive eval because they do not exist.

      What is "the XP program"? Or are you just referring to anyone who's said anything positive about XP?

      Other than that: yes, there is a paucity of studies on XP; whether good, bad, or ugly. There have been a few studies on some of the components of XP, such as pair programming (my statements above are based on one such). Most of what you can find is groundless ranting.

      Look for the people who've tried it. Personally, I've done everything but pair programming. My personal process now includes Test-Driven-Development just as a default, with other elements incorporated as I have the opportunity.

      -Billy

    3. Re:Is this a review or a rebuttal? by blakestah · · Score: 1

      Personally, I've done everything but pair programming.

      You haven't nearly lived the XP experience.

  21. Maybe he shouldn't have reviewed it... by matchlight · · Score: 3, Insightful

    After reading the disclaimer "I should point out that I get a couple of small mentions in this book (the authors quote an email from me), and I also happen to agree with a lot of what the authors say. But I'll try to be as impartial as I can with this review." I was a little skeptical. It's pretty easy to enjoy a book that uses your ideas for content. I know it's not an entire book written around one e-mail but it's always a nice stroke to the ego to be found printable. That aside I think that although he did point out that the the writer is fair in his addressing the good and bad of XP and that the review is likely close to the truth, I feel as though the reviewer has taken more than great lengths to defend the book against the nay-sayers and "zealots". I'd like another review before running out to pick it up.

  22. Re:XP Programming by Anonymous Coward · · Score: 1, Informative

    I have been using XP where I work for over a year now and I must say it is the worst enviroment I have ever worked in. It seems XP is for people who just want to write code and not think about serious design issues or future planning. In the future when looking for a job I will make sure that they DONT use XP. More and more it appears to me that XP is for the hacks out there that never bothered to learn how to do real design work.

  23. Bollocks to "software development practices" by Boss,+Pointy+Haired · · Score: 2, Informative

    Look,

    Nobody should shun any alternative aproach to software development in favor of established "software development practices" when a huge percentage of projects, very very close to 100%, come in late and massively over budget .

    1. Re:Bollocks to "software development practices" by MosesJones · · Score: 1


      Not at my place, 97% on time, 94% satisfied customers.

      And that is using RUP.

      --
      An Eye for an Eye will make the whole world blind - Gandhi
    2. Re:Bollocks to "software development practices" by Anonymous Coward · · Score: 1, Interesting
      It's the old logical fallacy:

      Traditional software development has problems so we must do something different.
      XP is something different.
      Therefore, we must do XP.

      It shouldn't come as a big shock that, even though XP is different than the waterfall development model, it is possible to develop overbudget and over schedule applications using XP.

    3. Re:Bollocks to "software development practices" by Gwala · · Score: 3, Insightful

      Prehaps that has something to do with the fact that most budgets and deadline's are horribly out of proportion to begin with?

      -Gwala

      --
      #!/bin/csh cat $0
    4. Re:Bollocks to "software development practices" by pcraven · · Score: 1

      I agree. RUP is great. Any member of your team that isn't really productive, and you have them start creating these RUP artifacts. It gets them out of the way.

      Long live the old user and functional requirement documents!

    5. Re:Bollocks to "software development practices" by Anonymous Coward · · Score: 0
      Nobody should shun any alternative aproach to software development in favor of established "software development practices" when a huge percentage of projects, very very close to 100%, come in late and massively over budget .


      Fine then, my new programming practice will be to stay at home, drink single malt scotch and watch Bogart films. You are not allowed to shun this programming practice because a huge percentage of projects using established practices come in late and are massively over budget.
    6. Re:Bollocks to "software development practices" by erioshi · · Score: 2, Interesting
      That's exactly on target! A good example of this is a project I was asked to become involved with a couple of years ago. The client needed a small, not-too complex database to track and report on customers going through a training program that included a social services component.

      When I was first asked into the project I was shown a "waterfall" application that another firm had developed for them that was over budget and significantly failed to meet the business need. I was asked to re-estimate the project and determine between saving and scrapping the failed code. Considering the falied app only aligned with about 30% of the specified need, we chose to dump the app.

      Of course by now alarm bells are going off inside my brain (how can a vendor land that far off target, etc.) and I start to do some digging. It turns out that the vendor they selected was fairly inexperienced, but more importantly the product had been produced using an estimate of about 1/4 the cost estimated by a far more experienced firm, and much closer to my own expectations. Even further digging turned up that the client didn't even have a firm grip on the details of internal the process they were trying to automate. Process changes and adjustments were ongoing, and asside from a few key elements, virtually everything else was subject to "interpretive need"; meaning the rule was whatever best suited the audience or need at the moment.

      Of course the new client was hoping I could find a magic wand and produce their project while meeting the unrealistic proposal of the less expensive vendor in this environment. Eventually I was able to develop a product that met the bulk of their need; but it was done with the understanding that until they clearly defined their needs, development and adjustments would need to be ongoing.

      The project has been ongoing for almost 2 years now, and meets about 95% of the business needs. About 35% of the development has been part time, as we have figured out what they really want (and need). The remaining needs have been defined and are being developed for as they define the busniess rules.

      The point to all this being that many times the client doesn't understand their own needs well enough to provide a spec that can be developed to. If you can't understand the problem fully, it's tough to produce an estimate for a solution.

      I've seen plenty of methodologies that say something similiar to "at point X you can estimate to Y hours (or dollars), +/-100%"; that may be true, but it's a tough sell. In the world of small business, most customers would call that "bunk".

  24. XP v the Engineer by MosesJones · · Score: 2, Interesting


    I'm one of those people who have seen XP tried and failed, and to be honest I never found it a suprise. I was educated to be a software engineer, and that the best way to deliver software effectively is to understand the problem domain. Iterative models like RUP or DSDM are great ways of delivering functionality quickly... XP is not... however there are some ideas in XP that are completely un-original that can work

    1) Pair programming - first seen in the "Surgical Team" idea from the mythical man month

    2) Unit Tests upfront - first seen in the 60s with the moon landing and space programmes.

    3) Iterations - First seen during the 80s with the rise of object oriented systems

    The ONE original idea in XP is simple...

    You don't need requirements before you start coding. For godsake that is a friggin DILBERT cartoon.

    XP assumes the John Wayne school of hacking, just hack hack and your talent will get you through. The reality is that if you are brilliant ANY process would be okay, and if you aren't you need more process to make sure you don't FUBAR things.

    I loathe XP, its a strong word but to me it represents the Microsoft view of software in its documented form. Quality doesn't matter, it isn't engineering...

    Its just lobbing together some-stuff.

    I'm an engineer... what are you ?

    --
    An Eye for an Eye will make the whole world blind - Gandhi
    1. Re:XP v the Engineer by tcopeland · · Score: 4, Insightful

      > the best way to deliver software effectively
      > is to understand the problem domain

      That's part of the process, yup. And there's a lot of other stuff, too.

      > You don't need requirements before you
      > start coding

      What about the planning game? What about user stories? Read this for better information on XP requirements gathering.

      XP has the concept of figuring out what customer want... but XP doesn't demand that you and the customer pretend that every detail of the system is in a bunch of white binders filled with stuff like "the system shall...". Instead, you and the customer work together to develop a system that meets the customer's ever-changing requirements.

      > if you aren't you need more process to
      > make sure you don't FUBAR things

      That's the beauty of XP - it assumes that we aren't geniuses and thus we use unit tests, refactoring, pair programming to keep the code under control.

    2. Re:XP v the Engineer by Quill_28 · · Score: 1

      I understand you are not fonding of XP in general

      How do you feel about:

      1) Pair programming

      2) Unit Tests upfront

      3) Iterations

      Do you feel these are good things?

    3. Re:XP v the Engineer by Anonymous Coward · · Score: 0

      I have to respond to this because if you did not have requirements up front, you were not practicing XP.

      XP does not advocate "shoot from the hip" John Wayne programming at all. Concerning requirements, it merely takes the pragmatic approach that in many business environments, the requirements for the entire system cannot be known up front because the stakeholders do not know precisely what they want up front. Consequently, XP is not obsessed with gathering volumes of details right away and architecting the entire system first thing out of the gate.

      Additionally, XP understands that in many business environments, requirements are refined or outright changed while the project is being developed. Like many other methodologies, it deals with this, in part, by using iterative development.

      XP insists that the high-level requirements for the entire project are expressed up-front in the form of user stories. However, the stakeholders may add or remove user stories as the project progresses in response to business needs (e.g., changes in the target market). Therefore, XP promotes gathering detailed requirements one iteration at a time for only the user stories being implemented in that iteration. Some XP sources suggest that the stakeholders put together a preliminary list of the stories they want done the following iteration, so that the team can plan ahead a little.

      I do not think that XP is a great choice in many software development environments, but I have grown tired of it being criticized on conjecture, hearsay, and "evidence" based on poor implementations. From my personal experience, I would condemn RUP on the same merits.

      I am a software engineer. It is my responsibility to give all development processes a fair shake, understand the needs they address, identify the best practices they have to offer, and them apply then as the environment or situation warrants.

    4. Re:XP v the Engineer by AFirmGraspOfReality · · Score: 1

      Engineer. So what. Honestly, no offense, but I hear that all the time. "I'm an engineer, ergo, I know what I'm doing". Well, not always. Park your ego at the door. In the real world, where I've been working for a great while, the "customer" does not always know what they want up front. Sure, they have a vague idea, but the story tends to grow in the telling. That's why XP is helpful...build what the customer wants now, and be able to toss things out that don't fit anymore. XP demands requirements, just not everything all-at-once. XP is NOT hack,hack,hack. It's the opposite...you build clearly define solutions to clearly defined problems...I there is no random hacking involved. As you know, software is a bit more "vague" than say, building a bridge. The Tacoma Narrows bridge was built using "sound engineering" principles, and heck, so are the Space Shuttles. A process that fails to adapt to new situations..agility...is doomed to fail. XP, while not perfect (and it ain't) is at least agile enough to adapt to change. If something messes up, you generally don't have too far to fall. I do agree with you though on having brilliant people...any process will work and you can say the process was the key to success. XP is light and agile enough to be a process that will not cover up (or build up) the true nature of the team. Oh yeah, I'm a software engineer as well. I got good by listening to people who know more than I do. Do the stuff that works and keep an open mind. Don't ever stop learning...

    5. Re:XP v the Engineer by modok · · Score: 1

      One historical correction (at least I think it is) is that surgical team is not much like paired programming.

      It has been years since I read the book, but I think the idea behind the surgical team was to have a master surgeon who would straighten stuff out to make things consistent and cohesive. So he performs reviews (design/code). A more reactive approach as people do work before showing it to the master surgeon. I do not remember any other multiple-developer interaction besides this.

      Paired programming, on the other hand, seems more proactive. It allows the work to be reviewed "real-time". I am not a huge fan of paired programming, but I do think it creates better designs (it is not as helpful in improving implementation -- unit tests is the solution to improving implementation).

      Also as an aside Beck, Cunningham, and co. were not the first people to do paired programming. There is some older ACM article that did it (first thing I read on it) before them. I am sure that author was not the first to do it either...

      PS - I am not an XP guy (though it offers plenty of food for thought).
      PPS - Notice how many times the reviewer used 'Zealot' in the review....was he reviewing the book or the XP community?

    6. Re:XP v the Engineer by lobsterGun · · Score: 1
      You say:

      You don't need requirements before you start coding


      and later...

      Quality doesn't matter


      I say:

      Dude.

      XP is all about requirements and quality. You meet with the customer every day. You have regular meetings to evaluate progress. You write exhaustive unit tests. You perform daily integrations.

      You havn't seen XP fail. What you saw wasn't XP. I don't know what it was.
    7. Re:XP v the Engineer by ExMember · · Score: 1
      The ONE original idea in XP is simple...

      You don't need requirements before you start coding. For godsake that is a friggin DILBERT cartoon.

      Dilbert is only funny because it's true.

      You are never going to get complete (and correct) requirements. To compensate, you need to need to be able to work from partial requirements, and iterate on the product as you go along.

      A not-entirely-side benefit of this is that your product is well designed and flexible, well suited to adapt to different enviroments, gain more capabilities, and live happily through a long and healthy maintenance stage, not die young, another victim of add-hoc additions, to be replaced by an expensive and unproven rewrite.

      If you really have no requirements, you are already done. Otherwise, satisfy the requirements you have, in a way that makes it easy to adapt to the ones you haven't recieved yet. No, it's not easy. No, it's not always successfull. But it works a hell of a lot better than a strict waterfall method for most projects.

      No, this is not an endorsement of XP.

      -- A Fellow Engineer

    8. Re:XP v the Engineer by zootread · · Score: 0, Flamebait

      How do you feel about:
      1) Pair programming

      If my partner is a hot blonde who periodically sucks my dick while I code, I fucking love it.

      2) Unit Tests upfront

      Unit test my fucking cock!

      3) Iterations

      See #1 above regarding the hot blonde and her iterations of cock-gobbling.

      Do you feel these are good things?

      Yes, I like blowjobs.

      --
      Zoot!
    9. Re:XP v the Engineer by jbrians · · Score: 1

      it represents the Microsoft view of software in its documented form
      Microsoft doesn't use XP (the programming method - they do use the operating system :).

      --
      "Faith strikes me as intellectual laziness." -Robert A. Heinlen
    10. Re:XP v the Engineer by kelzer · · Score: 1

      I'm one of those people who have seen XP tried and failed, and to be honest I never found it a suprise. I was educated to be a software engineer, and that the best way to deliver software effectively is to understand the problem domain.

      That's great if you're going to spend your whole career programming for a single problem domain, or in the worst case one or two problem domains for a fairly long period - say 3-5 years. If, like many, you need to program for many problem domains, then XP works quite well (when implemented correctly), because it acknowleges that the true expert in the problem domain is going to be an end user of the system. So XP expects an on-site "customer" to be involved in the development process.

      Iterative models like RUP or DSDM are great ways of delivering functionality quickly... XP is not...

      I think the many people who have successfully delivered useful software quickly using XP would disagree with that.

      . . . however there are some ideas in XP that are completely un-original that can work

      If you've read Beck's book, you know that he points out several times that the individual components of XP are nothing new - but that the synergies from doing them all together are what's important. For example, refactoring doesn't add anything, and may even be harmful, if you don't have automated unit tests.

      You don't need requirements before you start coding. For godsake that is a friggin DILBERT cartoon.

      Of course you need requirements. It's just that XP recognizes that requirements are going to change constantly, so the methodology is designed around that inevitability. I don't know where you got that idea, but it seems to me that you (like most of XP's critics) haven't read Beck's book.

      Quality doesn't matter, it isn't engineering...

      Half the process is about quality! Team programming means you have two heads working together to come up with a superior design, while doing real-time code reviews. Test First means you build automated unit tests and you run them all any time you change something to be sure you haven't broken anything. Refactoring is all about improving quality - otherwise why do it? Short iterations with lots of feedback before the entire project is done improves the likelihood that the customer is going to get something that meets their needs, not something that just fulfills the requirements document that they signed off on.

      --

      ---------------------------------------------
      SERENITY NOW!!!!!!!!!!!!!!!!
    11. Re:XP v the Engineer by taybin · · Score: 1

      XP doesn't claim that these are original ideas. It is a collection of what could be called "best practices". It then takes those practices to extremes. Thus the name.

    12. Re:XP v the Engineer by randolfe · · Score: 1

      >What about the planning game? What about user stories? Read this for better information on XP requirements gathering.

      The prima facia error in the XP "methodology" insofar as requirements gathering is an assumption of accepting that specifications cannot, or should not be fully described. An equally valid argument is that detailed requirement specifications are difficult to arrive at largely due to their importance as to the quality of the system which will be the outcome of the project.

      >Instead, you and the customer work together to develop a system that meets the customer's ever-changing requirements.

      Again, it is the failure to determine a set of governing rules--whether algorithmic or heuristic--that results in "ever-changing requirements". A number of great methodologies, for example Schaler-Mellor, present a far more rational mechanism for factoring out dynamic components of business process. It is surprising to find that, in nearly all cases, the "ever-changing" dynamic nature the customer thinks defines their problems are in fact typically comprised of over 90% static structure, with a very small amount of true variability.

      What XP does, in essence, is treat the symptoms, not the core problem.

      >That's the beauty of XP - it assumes that we aren't geniuses and thus we use unit tests, refactoring, pair programming to keep the code under control.

      Beauty is in the eye of the beholder. Although true genius is not necessary to conduct solid analysis and design, properly schooled education, and patiently earned experience are. Put more simply, the answer to the pervasive lack of solid talent in the areas of system architecture, analysis, design and engineering is to cultivate more of it, not to race to the lowest common denominator, which is exactly what XP encourages.

      FYI: I saw Kent speak in Erfurt, Germany last year. It was very gratifying to see just how wholly without merit the entire XP cult proved to be when faced with the scrutiny of university academics and industry scientists who spend their entire careers developing better means and methods.

    13. Re:XP v the Engineer by Etyenne · · Score: 1

      I'm an engineer... what are you ?

      I'm not, like most writing code.

      --
      :wq
    14. Re:XP v the Engineer by murdocj · · Score: 1

      Actually what Brooks proposed was more radical. The comparison he made was between surgery and hog butchering. Typically coding is done like hog butchering, with everyone grabbing a knife and hackng away. In Brooks' model, the master surgeon would in fact be the person doing most (or all) of the coding.

      The other folks would then be support personnel whose job in life is to make the master surgeon as productive as possible. This includes someone building test cases, a "language lawyer" who would research arcane programming language issues, someone doing documentation, etc etc etc. There might also be an assistant surgeon reviewing code and writing some.

    15. Re:XP v the Engineer by thanq · · Score: 1
      You don't need requirements before you start coding. For godsake that is a friggin DILBERT cartoon.

      Just as you don't need to know where you are going when you get into your car in San Francisco and drive to Toronto.

      "Ooh man, you mean we are going to Tijuana?"


      Requirement gathering IS crucial, but often does not need to be completed in 100% before you develop a prototype or write code that illustrates the concepts of operation of the project. If you don't have requirements, you may as well be building an ICBM while a vacuum cleaner is what is needed.

    16. Re:XP v the Engineer by tcopeland · · Score: 1

      > detailed requirement specifications are
      > difficult to arrive at largely due to
      > their importance

      Hm. So they are important because they're hard to get? By that argument, wouldn't pink elephants be even more important to the project?

      > for example Schaler-Mellor, present a far
      > more rational mechanism

      I accept that this is your opinion, but it'd be more interesting if you were able to support it.

      > are in fact typically comprised of over 90%
      > static structure, with a very small
      > amount of true variability.

      That begs the question of how we discern those requirements, and how we (and our code) react to them when they change.

      > not the core problem

      What do you regard as the core problem?

      > Although true genius is not necessary to
      > conduct solid analysis and design,
      > properly schooled education, and
      > patiently earned experience are.

      How useful is that upfront "solid analysis and design" when faced with changing requirements and implementation details? Does it end up sitting on the shelf in large white binders? If so, was it worth the cost?

      > the pervasive lack of solid talent in the
      > areas of system architecture, analysis,
      > design and engineering

      These skills are important - so important, in fact, that every developer should continually develop and refine them. Which is what XP encourages. Design, architecture, analysis - all of these are continually examined on an XP project.

      > the entire XP cult

      Tsk tsk!

    17. Re:XP v the Engineer by BrentN · · Score: 1
      FYI: I saw Kent speak in Erfurt, Germany last year. It was very gratifying to see just how wholly without merit the entire XP cult proved to be when faced with the scrutiny of university academics and industry scientists who spend their entire careers developing better means and methods.

      Just out of curiosity - when was the last time you saw any "university academic" contribute anything that was useful in the real world?

    18. Re:XP v the Engineer by Anonymous Coward · · Score: 0

      XP assumes the John Wayne school of hacking, just hack hack and your talent will get you through. The reality is that if you are brilliant ANY process would be okay, and if you aren't you need more process to make sure you don't FUBAR things.

      Nooo, that's not XP. XP is not "John Wayne".

      In XP you do some planning and design up front. However you do it in the customer's language instead of some ambiguous monstrosity like UML. You learn user stories and break your problem down into simple tasks. Then you do the tasks.

      I'll give an analogy: have you ever read the Patterns book? No, the ORIGINAL one by Christopher Alexander, about architecture. He gives an example of using his techniques to design a mental hospital. Him and the doctors went ON-SITE and stood and walked around and moved rocks around until everybody agreed where the buildings should go, based on the land and the layout and the trees, etc.

      This is a much different way of designing a building than having a guy in another state looking at site plans and drawing elevations with made-up landscaping, etc.

      I feel XP is more like the former: you get with the customer and you feel like you're both working on the same problem together. YOu communicate and you get your design not in abstract UML diagrams, but as an UNDERSTANDING of the customer's problem.. "of course you'll need multiple shipping addresses per customer, that's all that makes sense" "yes the book author accounts and customer accounts should both be subclasses of Account, that's clear now." ... etc.......

      And Unit tests! Wow!! If you've never done the test-first design you don't know what you're missing.. it almost doesn't *matter* how the code it written... as long as it passes the test it can be dropped into the program with confidence.. this is a discipline that must be mastered, but it's worth it!

      XP is great because it takes out the crap and just leaves the stuff that matters, then cranks them up.

      PS: I'm an engineer (electrical) but I program now. I don't consider any of the methodologies I learned as an EE to apply to programming. The term "Software Engineer" makes me chuckle.

    19. Re:XP v the Engineer by randolfe · · Score: 1

      >Just out of curiosity - when was the last time you saw any "university academic" contribute anything that was useful in the real world?

      Of course, that is pure bait. I am not an academic, however, like anyone else in technology, I make use of myriad academic contributions on a daily basis. You surely don't believe that the existing telecom/datacom infrastructure, for example, evolved as some XP hack, do you? Where did the browser itself come from? Microsoft? Netscape?

    20. Re:XP v the Engineer by randolfe · · Score: 1

      >> detailed requirement specifications are
      >> difficult to arrive at largely due to
      >> their importance

      >Hm. So they are important because they're hard >to get? By that argument, wouldn't pink >elephants be even more important to the project?

      I was merely intending to imply the intrinsic difficulty obtaining upfront specifications bespeaks their complexity. Gathering requirements and factoring specifications for a complex problem domain is a difficult process. I'm sorry if this appears to me a truism. My point is that, because it is hard, it is not without value, rather it hints at the contrary. Example: Pet Rock--not hard to gather specs, also not important; Space Shuttle--very difficult to gather specs, but paramount.

      >> for example Schaler-Mellor, present a far
      >> more rational mechanism

      >I accept that this is your opinion, but it'd be >more interesting if you were able to support it.

      Sorry if my typo threw you. Google search "shlaer mellor" for any number of resources that might be of use educating you. I am not a Shlaer/Mellor expert, but I have implemented projects using Shlaer, Booch, Unified, SDLC, Method/1, and XP, and I have extensively studied all those methods. Rather than suggesting that I provide evidence for you, which requires your understanding of alternatives to evaluate, I recommend the converse. Remember, the burden is not upon me to prove the negative.

      >> are in fact typically comprised of over 90%
      >> static structure, with a very small
      >> amount of true variability.

      >That begs the question of how we discern those >requirements, and how we (and our code) react >to them when they change.

      It begs nothing. By reducing the dynamic problem domain by perhaps up to nine-tenths, the amount of truly invented code which must be produced is reduced proportionately. I won't go into information theory proofs to support everything, but I trust you are familar with the notion that the more variable/complex a system, the more error prone.

      Further, you seem to equate a "changing requirement" to a dynamic system component.

      >What do you regard as the core problem?

      Just that; XP fails to discern the value of engineering process by every crying about changing business function. Of course business function changes, but that does not mean it's dynamic, or that it needs to be coded at all.

      >> Although true genius is not necessary to
      >> conduct solid analysis and design,
      >> properly schooled education, and
      >> patiently earned experience are.

      >How useful is that upfront "solid analysis and
      >design" when faced with changing requirements
      >and implementation details? Does it end up
      >sitting on the shelf in large white binders? If
      >so, was it worth the cost?

      Firstly, my binders were never white. More importantly, your argument is ultimately circular. The end reduction of that argument is that a business should never implement a system because they can never endevour to document/specify their process. Perhaps the issue with such fickle business is not its approach to developing systems at all?

      >> the pervasive lack of solid talent in the
      >> areas of system architecture, analysis,
      >> design and engineering

      >These skills are important - so important, in
      >fact, that every developer should continually
      >develop and refine them. Which is what XP
      >encourages. Design, architecture, analysis -
      >all of these are continually examined on an XP
      >project.

      Your turn to provide the evidence on that one. I've read at least three XP tomes, and aside from superficial treatment of the subject, I fail to recall where this is the case.

      >> the entire XP cult

      >Tsk tsk!

      Sometimes, it is necessary to call things out for what they are. I could have said fad, en-vogue style

    21. Re:XP v the Engineer by MosesJones · · Score: 1



      It was XP, it had multiple client interactions, and thus multiple client agendas. The Unit tests were binned more regularly than the code as the parameters kept changing.

      That was one. Another was a small team of 6 people doing "pure" XP, planning game etc etc.... we got to the end of 6 months (the clients deadline) and everyone was STILL bloody farting about doing code.

      XP is about giving the _impression_ of quality and requirements. In reality it is about meetings and hacking.

      --
      An Eye for an Eye will make the whole world blind - Gandhi
    22. Re:XP v the Engineer by BrentN · · Score: 1

      Of course its partially tongue-in-cheek, but there is a kernel of truth there. You see, I -was- an academic - got my Ph.D. and all. And discovered that the useful work was being done in the "real world." You have a skewed view of things. You name a fair number of real contributions from academia, but fail to measure them against the piles and piles of steaming horse dung that is also generated by academia. If you did that, you'd notice that things like Mosaic (or for that matter, Akamai) come very very few, and frighteningly far between.

    23. Re:XP v the Engineer by tcopeland · · Score: 1

      > because it is hard, it is not without value

      Maybe it's hard because there's a better way to do it - i.e., develop requirements incrementally.

      > the burden is not upon me to prove the negative

      Right, but you asserted that Shlaer/Mellor provided a more "rational" approach without supplying any details of how.

      > the more variable/complex a system,
      > the more error prone.

      Sure. But how does that relate to gathering tons o' up front requirements? And does doing big design up front help us understand a system better than if we learn and adapt as we go along?

      > you seem to equate a "changing requirement"
      > to a dynamic system component.

      Nah, I'm with ya there. Pluggable this, dynamic that, scripted business rules, etc.

      > they can never endevour to
      > document/specify their process.

      Ah, but XP doesn't assert that they can never specify their process - just that their process can be better specified by running code and unit tests than by a large set of [insert color here] binders. Filled with UML diagrams. Billed at $200/hour. Not that I don't like money.

      > Your turn to provide the evidence

      Here you go. "So XP uses a process of continuous design improvement...".

      > XP will fade way, and actually quite soon

      Could be! As you say, time will tell.

    24. Re:XP v the Engineer by William+Tanksley · · Score: 1

      the best way to deliver software effectively is to understand the problem domain.

      I agree with you, and it seems that XP agrees with you. The difference is that XP doesn't assume that you can afford to become an expert BEFORE you do any work in the problem domain, and XP admits that the final expert in the problem domain is the person who's having the problem.

      The ONE original idea in XP is simple...

      I agree that XP contains almost no new ideas... I think the only really new thing is simply the synthesis.

      You don't need requirements before you start coding.

      Whoah. Where'd you get that idea? That's not part of XP -- on the contrary, doing XP without User Stories would be ... bizzarre. No, impossible. All of the practices are built around NOT writing code that doesn't solve a user story.

      XP assumes the John Wayne school of hacking, just hack hack and your talent will get you through.

      Nope, XP is a documented process requiring discipline and support. I've seen it elaborated to CMM level 5, although I've never seen it used at that level. If you follow it as documented in the typical XP references, you'll be operating at just under CMM level 3; to get to level 3 you'll have to formalise a few things and write some documentation. Several level 4 KPAs are also addressed by basic XP practices.

      -Billy

    25. Re:XP v the Engineer by randolfe · · Score: 1

      I agree entirely. Where I disagree with you is that I believe that the "piles of steaming horse dung" are a necessary component in the entire process of innovation. Myself, I prefer the money and lifestyle to be had in the "real-world". But, if not for the academics and all their follies, I do not believe I would enjoy the perhaps skewed life I am so fortunate to lead.

    26. Re:XP v the Engineer by randolfe · · Score: 1

      Great debate! I am encouraged [for once] at the level of discourse we engaged in here. The past year or so I have become increasingly apathetic about the /. community. Perhaps my cynicism is unfounded. Thanks for the link.

    27. Re:XP v the Engineer by tcopeland · · Score: 1

      > I am encouraged [for once] at the level
      > of discourse we engaged in here

      Likewise! Best regards; see you in future discussions :-)

  25. Not gonna happen... by C+Joe+V · · Score: 1
    In fact this book is pretty damn wonderful. I know, it may sound a bit gushing, but before you review my review, give the book a read yourself.

    I seriously doubt anyone will do that. In fact it's pretty likely people will opine on the book without having read either the book or the review! Are we going to see "RTFB" in book review discussions now?

    Not only did the reviewer gush about the book, there was a little bit of gushing about the book's message (and bashing of its predicted detractors) that wasn't really informative about the book itself at all. It would have been better to devote more space to discussing what the authors actually said, so I'd have some incentive to read the book other than the satisfaction of seeing my point of view supported.

    JCV

  26. Then how come every shop doing XP *INSISTS* on it? by Svartalf · · Score: 1

    It's such that pair programming is SYNONYMOUS with Extreme Programming.

    Every shop I've talked to, up to this date, about a job that did XP as their development methodology were strongly into the pair-programming along with everything else. I'm not sure WHY they seem to think that pair-programming is an absolute must with XP, but all the shops using it seem to think so.

    --
    I am not merely a "consumer" or a "taxpayer". I am a Citizen of the State of Texas
  27. Oh well by coolmacdude · · Score: 1

    What XP Set out to Fix
    XP set out to fix a lot of things.

    How XP Fixes it
    Unfortunately it fixed few of them.

    --

    -You may license this sig for only $6.99.
  28. Somewhere in between by heroine · · Score: 1

    The real answer is somewhere in between XP and formal architecture. You need practical experimentation and you need design together to finish anything. A purely extreme programming environment would go around in circles without heading to a goal. A purely architectural environment would never get a practical solution.

  29. Am I the only one who gets funny images from XP? by CosmeticLobotamy · · Score: 1

    When I hear XP, I always imagine big, swooping camera movements at weird angles with a big, flashy logo and an over-excited announcer for a guy debugging a double-freed pointer.

  30. Re:Extreme Programming Refactored? by tonyMontana69 · · Score: 0

    Its good to see some Impson fans out there ;)

    --
    "My shit always works sometimes!"
  31. My experience by OYAHHH · · Score: 5, Interesting

    I cannot attest to actually having been involved in any project which used XP as defined but I can say the following about what I consider similar:

    I used to work at a company that strangely enough fostered both getting things done quickly for some projects while fostering a long drawn out method for other projects.

    The company was a consulting firm which always needed an answer yesterday for this or that problem.

    They also wrote fairly large simulation packages for the FAA. Some of these projects would go up to three years. Lots of planning etc. was usually done.

    Regardless of which type project I worked on I always tended to be the type who would get something working quick and then iterate over it several times if necessary.

    Others tended to be going at what I considered to be a snails pace mode. They would plan for days, weeks, months on something that I never considered worth that much planning.

    I could usually have a pretty good prototype working with a couple of major revisions made before the "planning types" could even get out a initial prototype.

    But, over the years I noticed that I (and those like me) tended to get "officially finished" in about the same amount of time that the annoying guys who planned everything out to the Nth degree got finished.

    Was my product any better than their's? No not really.

    Which methodology was better? It's hard to say, I know I certainly always liked to utilize new methodologies that worked well while they liked to stick with the tried and true.

    About the only thing that I can say is that my internal company clients usually appreciated that they had something to work with earlier rather than later.

    They knew it was a rough version, but hey, if you need it now, you need it now. And two years from now may not pay the bills.

    So, lots of times I came out looking like a hero.

    But, looking back on it now I'd have to say that my own personal version of XP wasn't any better than my counterpart's long drawn out process, at least in terms of a final product.

    My $0.02 worth.

    Sorry if I was too far off-topic...

    --
    Caution: Contents under pressure
    1. Re:My experience by LoFat+ByLine · · Score: 1

      I guess it depends on context. Making my customers wait two years for a finished product was never a viable option. As you point out, a lot of clients would rather have a working beta than nothing at all; this is generally because software tends to get written to meet needs that exist today, not to address needs that someone thinks they'll have in a couple of years. In that context, your version of XP would in fact be better than the heavily planned out methodology, especially since the finished version was of equivalent quality (BTW, what does finished software look like? I've never seen any :) )

      But then that tends to be the problem with discussions of methodology: context tends to be ignored, I think mostly because it gets in the way of sweeping judgements (XP is good for everything! XP is good for nothing! etc)

    2. Re:My experience by Idarubicin · · Score: 1
      I could usually have a pretty good prototype working with a couple of major revisions made before the "planning types" could even get out a initial prototype.

      But, over the years I noticed that I (and those like me) tended to get "officially finished" in about the same amount of time that the annoying guys who planned everything out to the Nth degree got finished.

      Was my product any better than their's? No not really.

      ...About the only thing that I can say is that my internal company clients usually appreciated that they had something to work with earlier rather than later.

      They knew it was a rough version, but hey, if you need it now, you need it now.

      Ah. The Microsoft model. Release early, release often, release buggy. Slap something together fast, and then debug and patch like crazy.

      On the other hand, you're willing to acknowledge that the intermediate versions aren't a final product. Indeed, depending on the circumstances it's usually good to get regular feedback from the customer, and the best way is often to use a mockup. Still, a lot of people have trouble finding all of the hidden bugs that creep in when they start with quick'n'dirty and try to turn it into a production system....

      --
      ~Idarubicin
    3. Re:My experience by MisterFancypants · · Score: 1
      Ah. The Microsoft model. Release early, release often, release buggy.

      Microsoft model? Isn't this one of the catchphrases of OSS? Release early, release often? The buggy part is assumed for either group...

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

      some thoughts:

      1) who enjoyed their work more? You or them? I bet you did.

      2) who could deliver a subset of the requirements first? You I bet, since you probably had the subset written already, while they had to retool the design first.

      3) sometimes stuff with stable known requirements doesn't need an XP-style model .. but most stuff isn't like that.

      4) what you were doing was not really XP .. there's a lot more to it. Did you do the unit tests? did you interact closely with the customer in a close loop? Did you bring your peers in and help them understand your code so that they could work on it too? etc.

      Don't confuse "rapid prototyping" with XP...

    5. Re:My experience by uberR0ck · · Score: 1

      Agreed from my perspective.

      But there are other factors to consider.

      Which project team was having more fun? I will bet it was yours. Your late nights were likely scattered across the calendar and when you wanted them, instead of just slamming the developers in the last few months.

      The other thing is that you actually delivered business value sooner and at the end of the same time period required less revision to go to phase II of the system.

      I know there are thrill seekers out there, I am one, but when it comes to my job, I would rather ride a barrel down a shallow set of rapids than a waterfall to make the same change.

  32. Re:XP Programming by inertia187 · · Score: 2, Insightful

    But "real design" doesn't work, at least, not very well.

    "Real design," as you call it, requires that you keep to yourself, code code code in secret and hope what was defined in the beginning is still what the customer wants.

    XP requires everyone to stretch beyond the "standard" development method. But for some reason, developers don't think they need to stretch.

    The lack of future planning in XP is not a flaw, it's like that on purpose. I believe that hacking is the best most ideal way to code. XP facilitates hacking on a company wide scale, so even non-developers understand the progress being made.

    --
    A programmer is a machine for converting coffee into code.
  33. Loverly Staw Man you have there. by MacGabhain · · Score: 3, Insightful
    As Doug Rosenberg says "I don't want to be nearby when somebody decides to deploy an air traffic control system or some missile-targeting software that has been developed with no written requirements, and where the programmers made the design up as they went along." At least don't say you weren't warned!

    XP, like any other process, fits some places and doesn't fit others. While some XP nut-cases may claim otherwise (just like people who market Rational products may claim that RUP should be used for everything), I've never seen the claim made in the pro-XP literature that XP was good for everything.

    XP is appropriate for projects where:

    Requirements are likely to change or are not well understood.

    The customer is readily available

    The team is reasonably experienced in the tools being used

    etc

    Air traffic control and missile guidence, while hopefully satisfying the third item up there, don't satisfy the first two. The customer is generally unavailable (I'm guessing here), and the requirements are understood remarkably well. Further, since these would be critical government projects, you wouldn't even have the choice to use XP. Heavy up front documentation is the only way to go on them.

    Perhaps a better statement would be "I'd hate to be around when a major company decides to deploy an accounting system that has been developed with written requirements that aren't in the form I'm used to (user stories) and where the programmers modified the design to suit shifting requirements as they went along." Except, of course, that that is exactly how XP got started and it worked just fine (on a project that had previously been failing).

    1. Re:Loverly Staw Man you have there. by midav · · Score: 1
      XP is appropriate for projects where:

      Requirements are likely to change or are not well understood.

      If there is a one thing which renders XP almost completely useless, it IS that it works only in cases where requirements are not likely to change when defined and the whole system is understood.

      Otherwise, it is inevitable that (and I saw it over and over again) the result of those 2-week iterations is just a huge unmaintainable pile of hacks upon hacks which reaches critical mass long before implementation is completed.

      I am not saying that it is not a problem with classical approach, but at least if you spent some time on engineering instead of coding and developed some kind of framework allowing flexibility, you might have been much better off at the end.

      The problem with XP is that it encourages fast building of extremely (no pun intended) rigid applications, which are a nightmare to extend or maintain, so, unless, you are planning to leave project early, i am not even sure, how you can consider XP as anything more serious then a hype.

  34. Definition of a review Review by thrillbert · · Score: 3, Funny

    I don't think he want's to review his own book, that would mean too much reading. He's opting for the easier way out, which is to review the review.

    So to continue the trend, I will review the review of the review:

    I feel the author was self serving while complaining about the original review. Although this review may not have been a "New York Times" quality review, the substance of the book was aptly reviewed, making the review of the review quite useless.

    ---
    Tomorrow we review the review of the SCO code by SGI.

  35. Pairing works...sometimes by AFirmGraspOfReality · · Score: 3, Insightful

    I've been though a lot of XP. I feel pairing is one of the more crucial aspects of XP. In other words, if you don't pair, you're not doing XP. Make no mistake, pairing is not for everyone. Do you have a cranky,maverick,social misfit who writes brilliant code? Let 'em...don't try to force 'em to pair. Pairing works when a) the people want to pair, b) the people are socially compatible. Pairing forces you to code...no surfing or other dicking around. One coder grabs the keyboard/mouse and does some work, say throwdown a new class or method. Or, more likely, code the test class first. Keep going until you feel "empty" or tired, then pass the torch. The other coder watches and contemplates the code, and offers advise. They are an instantiation of YOUR coding conscience. Coding alone, you may say to yourself "fsck it..i'll clean it up later", but while pairing, the other coder's duty is to say "why are you doing it that way? How about this?" and so on. It has to be COLLABORITIVE, not COMBATIVE..although that happens. If you pair, make sure pairs are always rotating...don't let the same folks always pair. Keep the pairing times short...half day is plenty. Pairing helps to eliminate "hot spots" in the skill set...i.e. experts in one area. It will not eliminate it...people will naturally gravitate to the things they like. Pairing will tire you out, as you tend to "go hard" (==productive) for the day. I think some of the best code I've written was while pairing...if I factor in time spent/unit coded. I've written some brilliant stuff alone, but it took longer. REMEMBER: the other half of the pair who does not have the keyboard must stay involved...question the codier, try to find flaws. They are not just sitting there watching the other half. If you see a pair talking to each other and looking at the screen and pointing, and passing the keyboard back and forth, and just cranking...you've got a good pair. Pairing works, if the pairs work. read this too: http://www.objectmentor.com/resources/articles/xpe pisode.htm

    1. Re:Pairing works...sometimes by adamruck · · Score: 1

      ive done alot of programming in pairs, and rotating sucks! When I find a good partner I wont switch.

      --
      Selling software wont make you money, selling a service will.
    2. Re:Pairing works...sometimes by AFirmGraspOfReality · · Score: 1

      Yeah, I feel your pain. But that's a short-term benefit, not long-term strategy. There will always be one or two "strong" people that are a blast to work with, with (seemingly) less capable people as well. I guess it depends on the size of the team...but you should switch to give the rest of the team the advantage of your talent and experience.

    3. Re:Pairing works...sometimes by adamruck · · Score: 1

      well when I said a good partner I didn't mean a guru, I meant someone thats good to work with and that I communicate well with.

      --
      Selling software wont make you money, selling a service will.
  36. Paired Programming by Anonymous Coward · · Score: 1, Insightful

    > For example, not everyone likes to pair program
    > (with two people sitting at one computer). It just
    > isn't for everyone.

    You know, there are places where pair programming is very helpful. It's part of the job. This whole touchy/feely "it's not for everyone" stuff is BS...it's for people who want others to work around their quirks. We're not freakin' artists, we're software engineers.

  37. Major problems with this book by HenryFlower · · Score: 4, Informative
    The XP advocates are not as far out or as hard line as one would think reading this review, or the book to which it refers (disclaimer: I've not read the book, but have read much of the source text which appeared on the authors web site). There are debates on the extremeprogramming Yahoo group constantly about how far to push emergent design versus design up front (one of the major advocates of XP, Martin Fowler, takes a dissenting view on this matter), about pair programming and how to manage people who don't pair well, etc. There is also a fair bit of self-directed humor by the major advocates for XP. XP needs thoughtful critique, and books (such as Pete McBreen's) that do this are well received.

    The web-posted material on which this book is based is not a thoughful critique. It is parody, yes, but not a critique. One of the central points made is that XP requires, e.g., strong unit testing and refactoring to work. Yep. If you don't do that, XP doesn't work well. Yep. These are points no XP advocate denys. The material ends up making the claim that if you don't do XP you can't do XP. This is quasi-interesting, if utterly obvious, but not the basis for a book-length attack on XP.

    Skip this book and buy McBreen's if you want to read a critique. Join the Yahoo group and state your critique thoughfully, and read how some of the major thinkers in XP respond. Then make up your mind.

  38. Re: Who hates pair programming? by Anonymous Coward · · Score: 0
    Who hates the idea of pair programming? Smarties ofcourse. They dont want to lose what they feel makes them special.

    No, the people who hate pair programming are those of us who spend too much time reading slashdot every day!

  39. Re:STOP COPYING ME! by Anonymous Coward · · Score: 0

    No, it's not, the guy is in Michigan.
    It's Slashdot user ih8apple.

  40. Extreme Programming XP by maxconsulting · · Score: 2, Funny

    I think Extreme Programming XP made some significant improvements over Extreme Programming 2002, but it will be better when the .NET framework comes in the box in Extreme Programming 2003

  41. A place for everything by DaveAtFraud · · Score: 2, Interesting

    The "waterfall" was great for determining exactly what the user wanted but then ended up delivering it five years later after the requirements had changed.

    "Use-case" analysis was great for determining how the user would interact with the system but tended to automate the existing processes instead of figuring out how automation could make the process unnecessary.

    OO was great for implementing the non-reusable objects determined to be needed by "use-case" analysis (see previous item).

    Too many shops implement XP as an excuse for not understanding the user requirements but just bashing out a bunch of high quality code that solves *the wrong problem* in a short amount of time. This isn't a criticism of XP so much as a criticism of the way it is misused (as has every other innovative software development technique).

    The basic problem is and always has been that inventing the future is difficult mainly because the future has a habit of changing while we're busy trying to invent it. No technique other than a time machine will ever solve this problem because it is inherent in the invention process.

    --
    They that can give up essential liberty to obtain a little temporary safety deserve neither safety nor liberty.
    Ben
    1. Re:A place for everything by israfil_kamana · · Score: 1

      So what you're saying is that the bottom line is:

      (wait for it)

      Solid judgement based on experience, and an evaluation of the circumstances of the project at hand?

      Wow... coooooool. It only that weren't such a bloody revolutionary idea. Mindless applications of processes and methodologies is bad. Clue? Mindlessness. Creating a quality artifact requires judgement, experience, thoughtfullness, analysis, consultation, colaboration, and estimation. All of these are the products of experience.

      I propose a new methodology, which I shall designate the SANE-M. It requires that you start learning, fail a lot, learn from your mistakes, find mentors, learn from them, go off and be extreme and youthful, fail some more, learn some hard practical lessons, then, after about five to ten years, start doing projects with a flexible mind, having exposed yourself to a wide variety of project types, styles, personalities, funding levels, timescales, etc. You are likely to evolve your own project-specific method in colaboration with other experienced participants, and such a project is likely to succeed (if it has all the required ingredients to succeed). A baker who has never made pumpernickle will probably screw it up even if he has a recipe.

      Wait! Method re-name. The new name should be "Life" or maybe "Professionalism".

      i.

      --
      i - This sig provided by /dev/random and an infinite number of monkeys at keyboards.
    2. Re:A place for everything by DaveAtFraud · · Score: 1
      Solid judgement based on experience, and an evaluation of the circumstances of the project at hand.

      It must be revolutionary otherwise more people would be doing it! Management keeps looking for a way to not have RFC 1925 apply to their particular pet project because, if it does, it will cost too much and take too long. The evangelists for each new methodology always sell it as a "silver bullet" that will circumvent RFC 1925. No one has come up with one yet and my bet is that there isn't one.

      --
      They that can give up essential liberty to obtain a little temporary safety deserve neither safety nor liberty.
      Ben
  42. XP is a buzzword for what is common sense by semanticgap · · Score: 1

    Everyone I have come across in person who claimed to have used XP turned out to be someone who didn't have a clue.

    On the other hand I know plenty of people who use what could be termed XP on daily basis, yet I doubt they ever read XP books or even care about it.

    In general XP is a buzzword for the managerial types, the process described therein is pretty much common sense with a bunch of bells and whistles attached.

  43. Re:$4 less and free shipping by Anonymous Coward · · Score: 0

    It's the same IP address as /. user ih8apple.

    What a coincidence.

  44. Re:XP Programming by Anonymous Coward · · Score: 0

    The subject is "XP Programming" which means Extreme Programming Programming. Oops.

  45. Re:Am I the only one who gets funny images from XP by Anonymous Coward · · Score: 0

    When I hear XP I think blue screens. But when I hear Extreme Programming, I picture teenage kids strapping themselves to heavy gear and occasionally falling and scraping their knees.

  46. It's just an excuse by curtlewis · · Score: 2, Interesting

    Extreme Programming or Rapid Application Development is just an excuse to bypass solid process in order to ship faster. Does it do the job better? No.

    General problems with the approach:

    Design on the fly. You get less features, more hastily implemented. Code is less maintainable.

    Without a plan up front, you have QA scrambling to keep up. Testing is full of gaps in coverage. Product is more buggy as a result.

    The only real benefit is shipping faster. You make everyone work harder and get an inferior product as a result. I suppose Marketing will be happy with that as long as the customers will pay for it.

    Personally, I prefer doing the job WELL, not just doing the job, but I seem to be in the minority in the development industry these days. I know a lot of engineers would prefer to do the job well, but go along for whatever reason.

    Having been involved in development for about 10 years, I've seen product quality decline over the years. Products in general have become more complex, but defects have increased substantially. I'd like to see a lower level of defects maintained and value to customer in stability, reliability and functionality/features increased.

    Call me a dreamer.

    1. Re:It's just an excuse by chromatic · · Score: 5, Insightful
      I'd like to see a lower level of defects maintained and value to customer in stability, reliability and functionality/features increased.

      How would you achieve this? I'd probably do things like:

      • Set coding standards and follow them.
      • Work on a small piece at a time and get it right.
      • Get the customer involved in making sure every piece is right.
      • Deliver working code to the customer every couple of weeks.
      • Have every piece of code reviewed for cleanliness, correctness, and good team style.
      • Have a comprehensive test suite at the programmer level.
      • Develop a comprehensive test plan at the feature level by working with the customer.
      • Revise the design and code as necessary to meet the customer's current needs.
      • Make sure that architects code and coders do architecture have every technical person participate in the whole project, design and coding.

      Of course, by the time you do all that, you've got the heart of XP.

    2. Re:It's just an excuse by ubikkibu · · Score: 1

      > [XP] is just an excuse to bypass solid proces
      > in order to ship faster.

      Trolling, trolling, trolling. Convenient that you don't describe "solid process." These same conventional processes have so far caused what you later complain about: buggy, unpredictable software.

      "Ship faster" has actually become the overriding norm since we moved to the Internet Age. From a purely business point of view, time to market often legitimately overrides other concerns such as quality, feature-completeness, etc. Yes, it's frustrating, but not nearly as frustrating as being out of work because your company couldn't demo at the trade show and sign up paying customers.

      > Having been involved in development for about 10
      > years...

      Aaahh, nevermind sonny. I see the problem now. Good luck testing!

    3. Re:It's just an excuse by Anonymous Coward · · Score: 0

      First XP != RAD. Very different.

      > Without a plan up front, you have QA scrambling > to keep up. Testing is full of gaps in >coverage. Product is more buggy as a result.

      Not really. If you understood what XP is, you would realize that there is no QA, that is done through testing by the programmer.
      Infact, before any code is written, automated test code is developed. Only when a feature has passed the automated test is the code ready for release.

      > Design on the fly. You get less features, more > hastily implemented. Code is less maintainable.

      Again, XP addresses these issues through "stories", which are customer written feature descriptions, similar to use cases. Therefore you get the features the customer wants, if not the customer is on site to fix the problem. The code is maintainable because of refactoring, CRC cards and test automation.

      I suggest you look further into what XP really is saying.

    4. Re:It's just an excuse by Anonymous Coward · · Score: 0

      I know I'm wasting my breath but read something about XP, don't just regurgitate rubbish others have told you...

      Design on the fly. You get less features, more hastily implemented. Code is less maintainable.

      User Stories and short iterations give you exactly the features you NEED and no more. You get them quickly so the customer can begin using them. Less redundant features means less code which is easier to maintain. Fixed iterations and sustainable pace reduces hastily implemented features and unrealistic deadlines.

      Without a plan up front, you have QA scrambling to keep up. Testing is full of gaps in coverage. Product is more buggy as a result.


      XP advocates programmer tests. There is no QA. Test first development means complete test coverage (optimistic I agree) which results in better code. User acceptance tests mean the customer tests what they think is important and tests the programmers tests.

      If you are going to attack something at least take the time to understand it.

    5. Re:It's just an excuse by Anonymous Coward · · Score: 0

      >General problems with the approach:
      >Design on the fly. You get less features, more >hastily implemented. Code is less maintainable.

      That does happen, until you learn how to do it right. Incremental design works if you know what you are doing.

    6. Re:It's just an excuse by justins · · Score: 1

      Maybe, but it sounds a lot less eXtreme when you describe it that way. =D

      --
      Now before I get modded down, I be to remind whoever might read this that what I am saying is FACT. - bogaboga
    7. Re:It's just an excuse by Anonymous Coward · · Score: 0

      You know, I ran a project that did almost all of those things and it didn't have the feel of XP at all. (Agile and XP aren't synonymous.)

      XP per se mandates no code ownership, collective responsibility for architecture and design, and pair programming. The tests act a safety net for people messing with each other's code. As such, XP appeals to what I call the "test and refactor" camp.

      Just my plug nickle.

      One more traditional approach uses a team lead/architect to coordinate the work and ensure consistency in the overall design. Individual developers are somewhat specialized, focussing on a few areas of the system or process. The safety net is strict OO and design by contract. Work flows through the team in a pipeline (requirement through to prod) tracked through a Scrum-like "work backlog". This process is better suited for developers who like to plan out their work, work alone and have some ownership over their work. I call them the "code craftsmen".

      Both approaches are Agile, yet they have completely different vibes. Whether either will work for you depends on your team and your project. (But if you've got a mix of test-and-refactorers and code craftsmen on your team, look out!)

  47. The real question... by Anonymous Coward · · Score: 1, Funny

    What do the programmers in India think of XP and pair programming?

    My bet is they just laugh at the crazy Americans and say "No wonder we're getting all their work..."

    1. Re:The real question... by peter303 · · Score: 1

      In India it is "mass programming".
      Everyone in one big room.
      Pair programming is realtively sedate then.

    2. Re:The real question... by anothermuse · · Score: 1

      > What do the programmers in India think of XP and pair programming? They were doing probably it first. I was developing software with an Indian company based in Madras, in 1980's. Because there were more programmers than computers, they had two coders to a box. I was amazed to see one type in a line and the other hit return key.

  48. Re:XP Programming by AKAImBatman · · Score: 3, Interesting

    > But "real design" doesn't work, at least, not very well.

    Says who? Works pretty well for me. My team and I are generally *more* productive when we design *before* we code. Ever hear the saying, "Measure seven times, cut once"?

    > "Real design," as you call it, requires that you keep to
    > yourself, code code code in secret and hope what was
    > defined in the beginning is still what the customer wants.

    *cough*bull*cough*shit*cough*

    A development *team* usually consists of a point person through whom the specs are communicated, an architect who puts together the high level system design (including interfaces if possible), coders who take their cue from the architect, and testers who make sure that the code meets the specifications - thus closing the loop. There is a LOT of communication going on there. However, your team is only as strong as its weakest link. I'll give anyone the boot who can't accomplish their job (as is all to often the case from "wanna get rich, but don't know how to program/test/communicate" kids coming out of school these days).

    > The lack of future planning in XP is not a flaw, it's like
    > that on purpose. I believe that hacking is the best most
    > ideal way to code.

    Dear Lord. You people are INSANE. When the f**k are managers going to stop hiring people who actually know more than themselves about programming? No self respecting manager should EVER allow juniors like this guy to decide how development should progress.

  49. Analogies... by Anonymous Coward · · Score: 0

    Is it just me or is half of the review just analogies that describe the word 'extreme'?

  50. anyone who says "don't read this book" by dbrower · · Score: 4, Insightful
    has questionable intellectual honesty. One of the best things you can do to validate your belief in something is to occasionally understand the criticism of it by people who really do question it, not the quibbles of fellow believers.

    It's why Liberals need to listen to Rush now and then. It's why neo-cons should read Franken.

    So anyone using XP who says "don't read this book" is probably delusioinal in several respects.

    As another poster remarked, though, it's a bit annoying to read a review that does not include snips of key points and some analysis. This is endemic in /. reviews. Reviewers, please go look at the form of articles in the Sunday Book Review and follow it!

    -dB

    --
    "It if was easy to do, we'd find someone cheaper than you to do it."
    1. Re:anyone who says "don't read this book" by demian031 · · Score: 1

      It's why neo-cons should read Franken.

      Al Franken isn't last-name-only-worthy. as a conservative i think he's good, he's funny i like his books. but he's not tolstoy or wilde.

    2. Re:anyone who says "don't read this book" by jjohnson · · Score: 1

      But "Rush" is first-name worthy?

      --
      Anyone who loves or hates any language, platform, or manufacturer, doesn't know what they're talking about.
    3. Re:anyone who says "don't read this book" by Anonymous Coward · · Score: 0

      Rush has better drugs.

    4. Re:anyone who says "don't read this book" by DunbarTheInept · · Score: 1


      It's why Liberals need to listen to Rush now and then.

      Lots of Liberals listen to Rush quite a bit. They've got a lot of catchy songs, and there's that whole Candian thing they've got going that Liberals like so much.

      --

      Don't label something "offtopic" unless you know the topic well enough to tell what's on topic.

    5. Re:anyone who says "don't read this book" by sholden · · Score: 1

      As another poster remarked, though, it's a bit annoying to read a review that does not include snips of key points and some analysis. This is endemic in /. reviews. Reviewers, please go look at the form of articles in the Sunday Book Review and follow it!

      This masterful review has "snips" of key points for example.

  51. XP = invitation to hack? by rumblin'rabbit · · Score: 1

    The trouble with XP, fast prototyping, and similar methods, is that they are too often interpreted as an invitation to program by the seat of the pants - that is to say, to hack. I've seen too much success with up-front design, received too much valuable advice from users before coding ever began, to abandon it. It's good to see a middle ground proposed.

    1. Re:XP = invitation to hack? by Queuetue · · Score: 1

      XP is essentially an invitation to hack - with testing up front.

      Refactoring is hacking, often in it's purest form - the tests make sure you don't break anything that someone cared enough about to specify.

      If your tests are inadequate, bulk them up. If your code breaks tests, back it out. Otherwise, hack away!

    2. Re:XP = invitation to hack? by kelzer · · Score: 1

      Refactoring is hacking, often in it's purest form

      No, refactoring is about improving the code. If it looks like a hack, then refactor it to fix it. The end result of refactoring should be clean code, and a clean design. That's pretty much the antithesis of hacking.

      I've seen 2 different descriptions of what refactoring is all about. 1) Remove duplication. 2) Apply design patterns. An argument could probably be made that the 2 are actually ultimately attempting to achieve the same goal.

      --

      ---------------------------------------------
      SERENITY NOW!!!!!!!!!!!!!!!!
    3. Re:XP = invitation to hack? by rumblin'rabbit · · Score: 1

      In my post I did not say that XP was hacking, but that it invited it by making the refactor step easy to skimp on. Anyway, I believe good basic design comes from standing back (waaaay back) to get the big picture, something code-refactor-repeat does not lend itself to.

  52. zealotry by dreadway · · Score: 1

    >>>(an aspect which seems to be proving almost heretical among some XP advocates).

    From the review I gather the reviewer really likes to call XP proponents 'zealots', doesn't like pair programming, and really likes the book... all for fairly vague or undisclosed reasons. I read the build-up of implied negative things about XP as a Straw Man fallacy.

    Who cares if XP might not be as rigid or lacking as implied by the review? Does it matter if innumerable IT depts and s/w houses absolutely treasure the old ways of scheduling, implementing, and maintaining software? And that at least some of them are at least marginally successful? Immaterial! Can programmers ever figure out how to program on their own, or in groups, or in the project/company of the PHB? That's indeed a tough one, and it's obviously necessary to combat with some arbitrary, unquestioned ideology.

  53. Re:$4 less and free shipping by Anonymous Coward · · Score: 0

    and how exactly did you determine his IP address? and did it ever occur to you that the IP address might be masked or shared on some corporate intranet?

  54. Re:XP Programming by pchasco · · Score: 1

    > The lack of future planning in XP is not a law, it's like
    > that on purpose. I believe that hacking is the best most
    > ideal way to code.

    This guy obviously hasn't adopted any of these projects where the previous programmer shared his philosophy. If so, then he would quickly change his tune.

  55. "On-Site Customer" by Joseph+Vigneau · · Score: 2, Informative

    This a most telling quote as most developers have never talked to an actual customer in their entire career.

    "On-Site Customer" is one of the tenets of XP.. Of course, this isn't always practical, but having instant access to the customer is one of the things that makes XP work...

    1. Re:"On-Site Customer" by kelzer · · Score: 2, Informative

      "On-Site Customer" is one of the tenets of XP.. Of course, this isn't always practical, but having instant access to the customer is one of the things that makes XP work...

      Can't remember which XP book it was in but one of them stated that if necessary you can use a proxy for the customer. I think they gave an example of an internal project manager or business analyst. Obviously, the more the proxy knows about the customer's business, the better.

      --

      ---------------------------------------------
      SERENITY NOW!!!!!!!!!!!!!!!!
  56. Summary of replies by Anonymous Coward · · Score: 0

    start with
    1)Indication that the person writing the response has not worked with/read about/heard of the topic at hand. This is often implied and on many occassions is even explicitly provided.
    follow with
    2)A divisive and stongly held opinion based on reading the first line of the review and the mastery that only the previously mentioned lack of understanding can bring.

  57. Re:XP Programming by inertia187 · · Score: 1

    You're right. XP projects are incompatible with this. If none of the developers were on the original project, and the project is suddenly passed on to a completely new team, the project is pretty much toast.

    The advise XP gives is to avoid this. If a new team is to take over a project, it should happen slowly and over time. If this is not possible, and this is my advice, not XP, the project should start over, using the original project only as a guide.

    --
    A programmer is a machine for converting coffee into code.
  58. Pair programming == punishment by Ars-Fartsica · · Score: 4, Insightful
    The bottom line is that no exceptional programmer is ever going to be forced to have someone watching everything he types.

    You know, sometimes we just want to pick our noses or read a news story on the web. Pair programming makes this impossible as there is always some idiot practically sitting on your lap. This is why it will always be perceived as punishment.

    1. Re:Pair programming == punishment by Cederic · · Score: 3, Interesting


      Have you ever actually tried pair programming?

      I'm not an 'exceptional programmer' - I'm just a fucking good one.

      When pair programming, I benefit from the expertise and experience of another developer. I avoid making silly mistakes, because he spots them for me. I don't write as many bugs, because he spots them. I don't dither about variable names, or whether to refactor a method, or which algorithm to use - because I have someone to help me keep focussed, someone that helps me make swift decisions, that keeps me on track and moving forwards.

      Sure, sometimes I want to read a news story on the web. That's why when pair programming we take a break every hour or two. It depends on the progress we're making, how focussed we are, whether we've got the code to compile and pass all its tests.

      Pair programming is not punishment. It's an enlightening experience, a joy to participate in, something I want to do more often.

      Nobody is such an exceptional programmer that they can't learn from someone who still needs to look up the language syntax. Lose your ego, open your mind, and actually try PP.

      ~Cederic

    2. Re:Pair programming == punishment by rsborg · · Score: 1
      You know, sometimes we just want to pick our noses or read a news story on the web

      Or post something on /.? Maybe I'm no super-programmer, but I think pair programming would be great. Often you don't realize critical design flaws until you have code review, and with instant code review, you get that. Plus, maybe you *will* have time to browse /., since pair programming does not mean that you're bound to the same desk, all day.

      --
      Make sure everyone's vote counts: Verified Voting
    3. Re:Pair programming == punishment by TimTheFoolMan · · Score: 1

      Yup. Those dang manager types... expecting us to actually do something besides /. and get paid for it!

      Tim

    4. Re:Pair programming == punishment by anothermuse · · Score: 1

      Yes, I like to pair program. My partner is a computer. I benefit from the expertise and experience of dozens of other developers who wrote the syntax checker. Some people write code like a Jazz improvisation --bouncing ideas back and forth. Others write code like a classic composer -- conceiving a grand vision for the conductor and performers. Which method is best depends on whether you plan on kickin your heels or simply kickin back.

    5. Re:Pair programming == punishment by CarlBenda · · Score: 1

      I tried it for six months. The person you replied to was right on the ball. You sound like someone with no ego who needs someone holding their hand. With someone constantly having to check your work and correcting stupid mistakes you aren't even a decent programmer. When you bore the hell out of your pair because you make so few mistakes that's when you know you are good. Pair programming should be a right of passage like training wheels. If you still need them then you haven't grown much as a developer.

    6. Re:Pair programming == punishment by xoxer · · Score: 1

      You make it sound like typing is the hardest part of developing software. If only that were true. Think of pair programming as a code review that happens instantaneously rather than weeks later when the mistakes in the design have become so much harder to fix (the 1, 10, 100 rule). Think of how much easier it is for you to offer (and your pair to accept) a suggested change before hours of work (and ego) have been invested into a particular design. Successful pair programming isn't about being a typing cop (most of the time I'd bite my tongue on stuff like that). It's about the give and take of two people trying to solve a problem.

    7. Re:Pair programming == punishment by Cederic · · Score: 1


      No ego? On the contrary. I'll back my programming ability against anybody on Slashdot. I know I can deliver high quality code to tough deadlines that actually meets business needs. I'm used to my projects hitting deadlines and going live on schedule.

      What I am capable of doing is looking critically at my own code, acknowledging where I'd do things differently next time, recognising where an invalid assumption has made the code less optimal than it could be, and accepting such criticisms from others.

      When I bore the hell out of my partner because I make so few mistakes, it's not because I can type 80 wpm, it's because I haven't been involving him in a discussion on what I'm doing, how I'm doing it, and why one approach may be better than the other.

      When my partner is boring the hell out of me by being inadequate at the keyboard, I ignore his typing problems and focus on his intent. Is the code he's writing correct - does it have bugs in it, is the design sensible, has he written adequate unit tests, should we consider another approach to the problem.

      Pair programming is not like training wheels. I'd even suggest it's worth getting junior developers up to a certain level before going full PP on them. I've yet to meet anybody who was so good at programming they wouldn't have benefited from pairing.

      ~Cederic

    8. Re:Pair programming == punishment by Anonymous Coward · · Score: 0

      The trouble is, the self proclaimed 'exceptional' programmer is often prone to writing 'exceptional' code that no-one else understands. In the real world, this is NOT a good thing. Software development should always be a TEAM effort, if it's a one-man job then the software dies with you. REALLY exceptional programming is VERY readable to any other competent programmer. Pair programming should not hinder this.

    9. Re:Pair programming == punishment by CarlBenda · · Score: 1
      I did pair programming for six months and it has been instructional watching people code. Instant code review is a bad idea based on how I've seen people code. Watch someone code and you'll see in plenty of cases that they outline (by coding "badly") what they want roughly and then fix it. This I think varies according to the experience level of the programmer. The more experience the more complete their outline seems to be at least at the method level. You can find tons of mistakes with people who code like that if you are constantly checking things. Their final work after they've gone back to double check has no problems in 80% of the cases if it compiles. The other 20% of the cases could be found running tests and conventional code reviews.

      I don't even suggest waiting after a method is written to check someone's work. In some cases an entire class is factored and refactored by the coder before they settle down to get everything right.

      The best give and take happens at the design level. A short discussion on a white board or over some paper usually can be very very helpful if each person has something to contribute. In some cases the problem is straightforward and simple so that you only need one person to express it.

      Typing is the hardest part of developing software under XP. It's sheer boredom for the programmers who are watching and realize the person typing needs time to dress the code up. It's tiring as hell for the coder typing while constantly being watched and interrupted by their partner who may just have nothing to do and feels they need to at least say something to indicate they are still breathing.

      Typing is the hardest part of developing software when you do it under XP. The rest is drudgery.

    10. Re:Pair programming == punishment by Anonymous Coward · · Score: 0

      I work in a XP / Pair Programming environment and its great.... MOST of the time. However I think XP Programming takes a couple good ideas way to far, I think you can have pair programming, but also have some upfront design and planning to go along with it.

      I totally agree, I have learned more pair programming in the last 2 years than I ever did in my first couple years of experience, however it should not be so rigid that you cannot work alone. It also isn't the end all be all of ways to keep from writing bad code. A mixture of pair programming, strict and complete code reviews, and clean / solid programming habits can do the same IMHO.

      Anyhow, if you haven't used pair programming before, you should give it a try, just remember that it's a tool, not a religion.

      Mike

  59. Two idiots don't make a genius by Ars-Fartsica · · Score: 1

    Pair programming attempts to take two mediocore programmers and create one decent programmer out of them. No senior developer is going to put up with some malodorous jerk sitting on his lap asking questions about every line.

    1. Re:Two idiots don't make a genius by Anonymous Coward · · Score: 0

      Speaking as a senior developer, I find that having to answer questions about every line of code makes my code better.

      No one is so good that they can't improve (although some may be so bad that they can't improve).

    2. Re:Two idiots don't make a genius by royalblue_tom · · Score: 2, Insightful

      Nope, pair programming takes two hackers and attempts to turn them into one disciplined programmer.

      Perhaps this way, the code will be commented, have tidy layout, and be readable. Meaningful (to more than one person) variable names might be used. Boundary checking done. Good test cases written, and used. Other programmers may be able to work on this code at a latter date. The code may do what was specified (for this particular task) as the one programmer keeps the other one focussed on the job in hand.

      If the developer is *that* senior, he should be capable of explaining what he is doing to the lesser minds in the company. Treat it as a mentor slot. And of course, that's only for 50% - the other half of the time is watching the other guy, advising, perhaps teaching, and guiding.

      The question the developer should ask himself, "Is he really a malodorous jerk, or am I so socially inept that I am unable to work with people who may not be as skilled as I am?".

    3. Re:Two idiots don't make a genius by tshak · · Score: 1

      Nope, pair programming takes two hackers and attempts to turn them into one disciplined programmer.

      Perhaps this way, the code will be commented, have tidy layout, and be readable. Meaningful (to more than one person) variable names might be used...


      It's called having people in charge of managing your code. A good software manager will dictate certain code rules, layout guidlines, etc. If I try to check in a bunch of hacked code with crazy variable names and crappy or no comments, it'll get rejected and it'll never make it to the main source tree. If I do this often enough I'm off the project, and eventually out of a job. There's no reason a $50K - $100K+ software developer should need someone watching over their shoulder to do a good job.

      --

      There is no longer anything that can be done with computers that is nontrivial and clearly legal. -- Paul Phillips
    4. Re:Two idiots don't make a genius by tigga · · Score: 1
      Nope, pair programming takes two hackers and attempts to turn them into one disciplined programmer.

      That's exactly the same as two mediocre programmers equal one decent ;))

      Perhaps this way, the code will be commented blah blah blah

      Perhaps you don't need to pay to second programmer to do this - you just need a secretary for each programmer..

    5. Re:Two idiots don't make a genius by Anonymous Coward · · Score: 0

      I like your last statement.

      What really gets to me though are the ones that spend time during pair programming complaining about pair programming being a waste of resources. I agree with you that anyone that has a problem working in a group of two definately isn't a team player. It's honestly quite hard to keep focused on a task without someone helping you out. Also you get a break from actively coding occasionally, and you don't get carpel tunnel nearly as fast. I've run into serious bugs that stem from simple mistakes that are hard to find. When it gets to the point that you spend as much time debugging stupid mistakes as you spend actually programming, maybe you should consider pair programming as actually being at least as productive as just one person.

      I'm a pretty good programmer, and I can crank out large amounts of code in just 8 hours. I did that about a month ago, and I've been back to that code debugging at least 4 hours so far. The code tested just fine until an ID field went beyond a certain amount, then it just apparantly quit working. After outputting what ID it was getting, it was sequential the way it should be most of the time, but it would jump around. It turned out to be a problem with byte ordering and converting (would get -123*256+34 occassionally). Some things unit tests just can't catch until you end up out in the real world, and those bugs cost the most. I wished I had been pair programming. I could have probably finished the original project in 6h or less if someone would have kept me focused, and I would have saved at least 2h of debugging. 12 man hours for cleaner code plus there wouldn't have been an incident with our program not working with clients, and we wouldn't have to upgrade our clients to new versions. Overall, I would say the obvious costs in inefficiency that most people notice is more than made up for in the long run. Bugs cost a lot more than they are given credit for. MS bugs bring the internet to a halt occasionally, and give them bad publicity, and cost them clients. They can be embarassing for your company or yourself.

      Pair programming generally works. Anyone naive enough to say "You're just a bad programmer because you have buggy software." or "Unit tests catch all the horrible bugs." are very bad programmers if they aren't aware that anyone and everyone makes buggy software, and they will slip through unit tests.

  60. Re:XP Programming by AKAImBatman · · Score: 1

    > The advise XP gives is to avoid this. If a new team is to
    > take over a project, it should happen slowly and over
    > time. If this is not possible, and this is my advice, not
    > XP, the project should start over, using the original
    > project only as a guide.

    Try translating that statement to dollars sometime and you'll learn pretty quick why that's not smart.

  61. "Definition of a review Review" reviewed by dillon_rinker · · Score: 3, Funny

    While the ad-hominen attack against the parent meta-review's author was on target, and the increase in the level of abstraction was intriguing (though not entirely original), this meta-review was too short to be informative.

    1. Re:"Definition of a review Review" reviewed by MalleusEBHC · · Score: 1

      While the ad-hominen attack against the parent meta-review's author was on target, and the increase in the level of abstraction was intriguing (though not entirely original), this meta-review was too short to be informative.

      I think I just figured out what alias Jon Katz has been posting under.

    2. Re:"Definition of a review Review" reviewed by Lozzer · · Score: 1

      Mornington Crescent

      --
      Special Relativity: The person in the other queue thinks yours is moving faster.
  62. Re:XP Programming by stemcell · · Score: 2, Funny

    I always thought that extreme programming was like, jumping out of an airplane with a laptop.

    Oh well, another dream shattered.

    Stem

  63. I am XP by Anonymous Coward · · Score: 0

    "XP takes the development process to the other extreme, by shortening the "waterfall" lifecycle to weeks, days, even minutes. In fact, Kent Beck describes XP as a "waterfall run through a blender." Iterations typically last for a week or two; there is a high emphasis on code quality via unit testing; and code is integrated "constantly" so that it never becomes out of synch with the rest of the project. Beck is often quoted for saying that the XP practices "turn the dial all the way up to 10" -- that is, if something is good (testing, integrating, pair programming etc), well then, let's do it all the time."

    It is funny, but this is exactly how my OpenSource development takes place - both for hobbiest and work projects. Only trick is that I am alone...

    Te"Mr. BigInt"ls

  64. Re:XP Programming by inertia187 · · Score: 0

    Try translating that statement to dollars sometime and you'll learn pretty quick why that's not smart.

    That's true, it's never smart to change teams in the middle of a project. There are always drawbacks to transition.

    --
    A programmer is a machine for converting coffee into code.
  65. What the hell are you talking about? by Anonymous Coward · · Score: 0

    The big bang/waterfall thing was mentioned at the beginning of the review as the thing that XP was designed to get away from. *Yes*, it's generally been debunked as a method, but that doesn't change the fact that it is occationally USED, and it is the thing XP was designed to be as far away from as possible. Straw man or no, it is part of what led to XP being developed. Since at this stage in the review the reviewer is explaining the XP viewpoint and the things that led to it, this is a totally reasonable thing to be bringing up.

    Well, wait, how about this: I don't think 'Absolutely' was a good first word of your title. Therefore I declined to read the rest of your "comment", and will declare you an uninformed, stupid troll.

    1. Re:What the hell are you talking about? by mihalis · · Score: 1
      I'm talking about the book review as posted on slashdot. Here is the first bit of it (emphasis mine):

      The Previous Extreme - What XP Set out to Fix

      It had previously been accepted practice to spend months (years, even, on large-scale projects) gathering requirements, then another year or two on design, before a single line of production code had been written. The infamous "big bang delivery" occurred when this gigantic monolith of a software system was finally delivered to the customer, only for the customer to retort that this was nothing like what he wanted.

      It was also accepted practice to divide the system into separate subsystems, and attempt to integrate them after several months. By this time, each subsystem would have taken on a life of its own, and integrating these disparate monoliths together gave a whole new meaning to "plug and pray."

      How XP "Fixes" It

      These statements about "accepted practice" are factually wrong since at least the mid-80s, probably earlier. XP follows on and improves upon from several, probably dozens of earlier fads all of which attempted to get away from the monolithic system design disasters.

      Now, if the reviewer had said "a common mistake is" I wouldn't have had a problem!

  66. XP: what you do at school the day before due date by Anonymous Coward · · Score: 0

    XP reminds me of the way we used to implement our
    practical assigments in University: weak design, start
    coding with your co-team friend looking over your shoulder. Sometimes
    very good results. But only because of very bright people I studied with.
    Lots of backtracking and re-implementations. So expensive on you.

  67. Someone help clarify? by LucidityZero · · Score: 1

    So, I'm sure I could google and read lots of confusing definitions, but would someone let me know if I've got this straight (I'm sure I'm not the only non-programmer here...)


    Extreme Programming = You understand what the end product is supposed to be, you start coding, churn out a basic shell of the program, then just start to flesh it out untill it meets the end critirion

    Non-Extreme Programming = You understand what the end product is supposed to be, you plan out what steps are required to reach the final goal, you plot out the structure of the code down to the individual functions, code each section individually, and then tie the code together.


    Could someone let me know if I'm right or not? Once again, I'm sure I'm not the only one that is still atleast KINDA confused, even after reading the review and other articles about XP...

    --
    Sig.i>
    1. Re:Someone help clarify? by Anonymous Coward · · Score: 1, Informative

      XP is sort of like this (according to my com sci proff)

      XP is a response to the engineering of code (which has some problems)
      It addresses the fact that the biggest problem in software development is requirements change. Intead of trying to avoid change (traditional engineering does this) XP deals with it by always having access to a customer, having short release cycles, and determining priorities for each release.

      XP grows a product, over time a framework will also grow. The key is simplicity, only building what is required at this time, not going overboard and building a big framework. (not sure I agree with all of this)

      XP is supported by pair programming - two people code togeather, one codes, other looks to see if any improvements can be made.

      and No code ownership - anyone can change anything.. this means no waiting for someone to fix problem code. (other methodologies such as feature driven development which are similar to XP, stress this is not always a good thing)

      Also, XP states that with each feature the product must be integrated and tested. This is supported through test driven development.

      test driven development means that automated test code is developed before the feature is implemented. Only after the code passes the test will the feature be complete. This gives greater feedback to the programmers.

      XP does have design documents. It has a coding standards document, a metaphor (what the product is liken to), customer "stories" that describe each feature and CRC (class responsibilities and collaborations)

      XP also suggests the use of state diagrams and using a white board to plan out features that are complex. It recommends capturing the diagram before erasing (maybe a digital camera)

      So, XP does not throw out planning. XP is not coding by the seat of your pants, and it is sort of like you described, only there is method behind what is precieved as madness. You do follow described features, and the Test Driven Development keeps the program on track.

      Having been through the waterfall'esk process several times, I cant say I disagree with what XP is trying to do. Some of it sounds flaky to me, but makes a lot of sense. The key to it is communication, you communicate more with programmers (pair programming), customers (on site customer) and get more feed back (automated testing).

    2. Re:Someone help clarify? by Fizzog · · Score: 2, Interesting

      Extreme Programming =
      1. User department has some idea of what they want.
      2. Users sit down with you and give feedback while you develop the system for them.
      3. Regression tests are created early to ensure that changes don't break anything.
      4. Another developer works with you to help eliminate coding errors, etc.
      5. Users get exactly what they *really* wanted since they were there driving the development and evolution of it.

      Non-Extreme Programming =
      1. User department has some idea of what they want.
      2. Business Analyst manages to interpret 80% of this and puts it in a Requirement spec.
      3. Systems Analyst manages to interpret 80% of the Requirements spec and puts it in a Functional spec.
      4. Coders manage to produce 80% of the features they sort of understood in the Functional spec.
      5. The users test something not at all resembling what they expected, but they are happy to *finally* get something to look at.
      6. Users end up with an incomplete, out of date piece of junk that is nothing like they *really* were hoping for in the first place.

    3. Re:Someone help clarify? by LucidityZero · · Score: 1

      Thank you! :)

      Although you appear to be slightly biased towards XP ;), atleast I have a good understanding of how it works now...

      --
      Sig.i>
  68. XP Does Work on Spacecraft Control Software by shanelenagh · · Score: 1
  69. Our development model... by StoatBringer · · Score: 0

    ...could best be described as "Anguished chaos". Our boss (who is the only person who defines the requirements) changes what he wants on a daily basis, never gives a clear explanation of what he wants, issues bug reports like "Everything is broken!" and gets irate when something which you said will take two weeks is not done within 24 hours. Really.

    --
    Cress, cress, lovely lovely cress
  70. No True Scotsman Fallacy by jjohnson · · Score: 3, Insightful

    Every time someone here said "I've seen XP, and it didn't work," the XP defenders say "what you saw wasn't XP".

    Does that mean that a necessary requirement for XP to be XP is for it be successful? In other words, the failures disqualify a process from being XP?

    Isn't that a rather self-fulfilling condition?

    --
    Anyone who loves or hates any language, platform, or manufacturer, doesn't know what they're talking about.
    1. Re:No True Scotsman Fallacy by chromatic · · Score: 2, Informative

      That's a good question.

      XP requires quite a bit of discipline, just like any good process does. The real power, I believe, comes from the interaction of the processes. For example, tt'd be crazy to refactor all of the time, unless you had a comprehensive test suite. It'd be crazy not to design ahead for features you will need in the future, unless you let the customer choose which features to add and when and if you can keep the cost of changing the code low.

      A lot of projects adopt a couple of the easier practices without really understanding why they're important and how they fit into XP as a whole. (Extreme Programming Pocket Guide spends most of its time talking about these interactions.) Without either tremendous skill and discipline or other supporting practices that provide what the unpracticed XP practices do, you're bound to crash and burn eventually.

      It's okay to pick and choose from the XP practices that your team needs most, but you have to understand what they can and cannot provide.

      I think what you're seeing is a lot of teams who like the idea of not doing a lot of up front design and getting rid of a lot of process but who aren't replacing that with the appropriate XP practices or equivalents.

      That's why when someone says "We tried XP, but our code turned into a big ball of mud", people who've used XP successfully will ask "How well were you testing?" and "Were you refactoring?" It's not that XP is always appropriate for every situation and every team. It's that if you just copy a few practices without thinking about why they're important, you can get in a lot of trouble.

    2. Re:No True Scotsman Fallacy by Anonymous Coward · · Score: 0

      "The XP that can fail is not the true XP"

      Enlightening?

    3. Re:No True Scotsman Fallacy by Anonymous Coward · · Score: 0

      well, most of the time it goes like this:

      "Pair programming suxx0rs. therefore XP suxx0rs"

      "Yeah, but XP is not just about pair programming .. it's about software programming best practices applies continuously and thoroughly, and pair programming is a great way to mentor and motivate."

      or

      "Coding without a design is just 'hacking' .. how can XP produce any good code without a design to follow?"

      "No, XP does do some design up front, but it also depends on close interaction with the customer and continuous refinement. And the unit tests and integration tests mean your code always does what it should, even if you code it fast."

      etc

      the problem is XP is not just one or two of its practices. it's ALL of them.

      it's really annoying when people judge XP on pair programming (which they usually have never even tried) or "lack of design" (which is not really true).

    4. Re:No True Scotsman Fallacy by dreadway · · Score: 1
      Actually I think it's suggested the opposite is a typical self-fulfilling condition.

      Blame the process or methodology, no matter how 'light-weight' their use of process methodology was.

      For comparison, a hypothetical project decides to use RUP (Rational Unified Process) for their methodology... their goal is to gain the benefits of RUP. The project starts off with grand methodology plans, e.g. dev iterations, analysis and design phases, lots of documentatation and artifacts. About 10% of the way in they start having problems and at 20% of the plan they figure out they'll over-shoot their allotted resources by at least 100%, e.g. dev project to be completed sometime beyond the forseeable future. So they drop the methodology and try something (anything) else. OK, given they failed while using RUP, are you ready to be condemning of RUP now?

      If XP practices don't appeal to you in part or as a package, that's quite acceptable but not much of a rationale to spout off about 'it doesn't work'.

      Isn't that a rather self-fulfilling condition?

      Well, we could always hold out hope for examples.

  71. customers know what they don't want by Anonymous Coward · · Score: 0

    From my experience, customers only have a vague idea of what they want. They have a vision floating in their heads, but they do not have the technical know how or patience to put it on paper.

    What customers do definately know is what they don't want. You can code up a user interface, and show it to them, and they can say no because it's not what they invision. It's hard to even get them to explain what they do like about the interface. They just know it's not what they want.

    And that's from the smart customers. You can get basic requirements from them, and after 20 or so tries, a user interface that passes their vision.

    From the general users, even that much is hard to get out of them. You can't even get them to explain what the current state of their software does. "Why do you even use it?" brings out blank stares. Or ask them how they use it in a typical day. I can't even get simple user stories, much less requirements and suggestions for improvements.

    I'm ranting, but if anyone knows any suggestions for getting requirements and getting the customer to talk, I'd be glad to hear them.

  72. Re:XP Programming by Anonymous Coward · · Score: 0

    Hey, redundant words are good enough for Microsoft!
    The "NT" in "Windows NT" means "New Technology".
    The Windows 2000 startup screen says, "built on NT technology".
    Thus, we have, "New Technology Technology".
    Whee!

  73. Also essential: by NickFortune · · Score: 1

    Managers who will let the programmers get on with the job
    Corporate structure that will let the management let the programmers get on with the job

    --
    Don't let THEM immanentize the Eschaton!
  74. As the pendulum swings... by chaeron · · Score: 1

    First waterfall....then XP Extreme.

    Maybe the answer is for the pendulum to swing back to a more "middle" position, which is where reality tends to reside? ;-)

    Hmm....the review of this book coupled with the precepts of the book itself would seem to presage the swinging back of the pendulum to a more "reasonable" position.

    'Bout time if you ask me. Not that you did...but having used custom processes that incorporated parts of Waterfall, Scrum, XP, Agile and more,

    I've never liked the "one size fits all" pronouncements of zealots. Be they Java, .NET, Linux, XP or any other kind of zealots.

    The answer is usually 42. How it applies depends...

    --
    .....Andrzej

    Chaeron Corporation
  75. Lies and the lying reviewers who tell them. by ubikkibu · · Score: 1

    > XP relies on everybody in the team pairing all
    > the time. So if you don't like to "pair up,"
    > what choice do you have but to leave the
    > project?

    Here's where my eyebrow first raised. Pair programming is an important part of XP, but not indispensible.

    If your ego or work habits are so inflexible you can't bear even to try pair programming, then indeed you should leave the project. But then, you should have left a long time ago because you're probably already not communicating well with the rest of the team, or sharing code or ideas, etc.

    > XPR argues that the customer (and users)
    > usually do have a pretty good idea what they
    > want from a new system.

    Here's where I decided not to read the book. There are a few statements you can make that demonstrate you have little practical knowledge of software engineering in the real world, and this is one of them.

  76. Like Java? by Anonymous Coward · · Score: 0

    If coffee is good, then drinking it constantly must be great! Turn the knobs to 11! -jk :-)

  77. Re:XP Programming by Anonymous Coward · · Score: 0

    You mean they cant suddenly decide to outsource the project to India? What a pity ;)

  78. why Extreme Programming creeps me out by Ellen+Ripley · · Score: 1
    Buzzwords:
    "methodology" -- I suggest "method"
    "empowers" -- "lets"
    "life cycle" -- ???
    "groupware" -- ???
    Philosophy:
    "XP is successful because it stresses customer satisfaction"

    "XP empowers your developers to confidently respond to changing customer requirements, even late in the life cycle"

    "Managers, customers, and developers are all part of a team"
    The What is Extreme Programming? page has these buzzwords and an "oily" tone in general. Like they're trying to sell something. Ick.

    Stressing "customer satisfaction" is a good way to get a crap product. This echoes the attitude heard from Windows apologists: "Yes, but it's good for people who don't want to learn a lot about computers." For customers to have much input into the programming process is bad even for the customer. This is like letting managers overrule engineers in the Shuttle program.

    Extreme Programming sounds like a way to pander to the egos of customers who want to "play computer", suits who think they know something and don't. Managers aren't programmers, they don't know how to program, and they should stay the hell out of the programming process.
  79. Re:$4 less and free shipping by Anonymous Coward · · Score: 0

    You're wrong...it's this guy:
    Anthony Martin, (310) 532-8393, 17450 Van Ness Ave, Torrance, CA 90504

  80. I believe in PP: Psychotic Programming by Anonymous Coward · · Score: 0

    XP is soooo waaaay old school.

  81. Obligatory Office Space quote by Flamerule · · Score: 1
    [...] most developers have never talked to an actual customer in their entire career.

    I think the next programming movement should be called XTTFC for Extreme Talking To a Fucking Customer.

    Some firms have people to do the developers' talking for them...
    Bob Slidell: "What.. what would you say... you do here?"

    Tom: "Look, I already told you! I deal with the goddamn customers so the engineers don't have to! I have people skills! I am good at dealing with people! Can't you understand that? WHAT THE HELL IS WRONG WITH YOU PEOPLE!?"

  82. Two idiots make a nice pair of twits by Demodian · · Score: 1

    Unfortunately, two mediocre programmers yield nothing but crap code. For pair programming to work well, the two would have to be very balanced with regards to each other's performace, or else there will be more work done by one or the other.

    No "sane" senior developer is going to let a junior programmer coast along on the same coding task without doing his/her fair portion of the work. I find that it to be a waste of time to have someone standing there watching me code unless I am intentionally trying to demonstrate or teach. (Especially the boss!)

    Besides, the parrot should sit on its own perch...

  83. Re:XP Programming by pmz · · Score: 2, Funny

    No self respecting manager should EVER allow juniors like this guy to decide how development should progress.

    Unfortunately, most managers were either junior programmers who weren't any good at it or non-programmers with MBAs.

  84. Why stop at 10? by greenhide · · Score: 4, Funny

    Beck is often quoted for saying that the XP practices "turn the dial all the way up to 10" -- that is, if something is good (testing, integrating, pair programming etc), well then, let's do it all the time.

    Nigel: "All the numbers go to 11..."
    Director Marty Dibergi: "I see, and most amps go up to 10. Does that mean it's louder?"
    Nigel: "Well, it's one louder, isn't it? You see, most blokes will be playing at 10...you're on 10 on your guitar. Where can you go from there?...Nowhere, exactly. So when we need that extra push over the cliff, you know what we do?"
    Marty: "Put it to 11."
    Nigel: "Exactly. One louder."
    Marty: "Why don't just make 10 louder and make 10 the top number and make that a little louder?"
    Nigel (chewing gum, pauses while he considers the question, then states confidently): "These go to 11."

    --
    Karma: Chevy Kavalierma.
  85. Re:XP Programming by I8TheWorm · · Score: 1

    Ahhhhhh, spoken like a developer with some real experience. Folks can read their "1 minute manager" programming books all they want, but most seem to be from the same snake oil vendors as the self help Dr. Phil books.

    The reason software development works the way it does now is that it has evolved over time. We, as developers, learned the hard way that you have to have detailed specs (which don't take a year to derive) for several reasons. Mainly, so everyone is clear what the program is supposed to do, and how. Also, however, it's a tool to help avoid scope creep, which can bring a project (and budget) to it's knees. Avoiding that step, or compressing it into "hours" can be disastrous.

    --
    Saying Android is a family of phones is akin to saying Linux is a family of PCs.
  86. XP wouldn't meet DO-178 requirements... by Svartalf · · Score: 0

    Which is required for any piece of aviation (including spacecraft) flight control system that is not on an experimental plane.

    It doesn't make for the stringent design specification requirements, let alone a few others.

    I definitely do NOT want to be flying on a plane or having one fly over my head that doesn't meet the DO-178 certification.

    --
    I am not merely a "consumer" or a "taxpayer". I am a Citizen of the State of Texas
  87. Another Straw Man by chromatic · · Score: 1
    The problem with XP is that it encourages fast building of extremely (no pun intended) rigid applications, which are a nightmare to extend or maintain, so, unless, you are planning to leave project early, i am not even sure, how you can consider XP as anything more serious then a hype.

    If you read past the title of any XP book, you should come across principles such as Testing, Coding Simply, and Refactoring. If you still can't manage to write maintainable code with those practices in place, might I suggest a different career?

    1. Re:Another Straw Man by midav · · Score: 1
      As a token of respect to your /. number and some other indications that you know what you are talking about, I will try to be mild.

      Please, hire me as a developer next time you are a technical manager.

      I would like, at least once in my carrier, to be able to explain to my manager that I need either three days to make the changes quick and dirty, or two weeks if I do it right and why the second approach is preferrable.

      Vadim
    2. Re:Another Straw Man by chromatic · · Score: 1

      One of the rules of XP is that developers are responsible for their estimates. If you estimate that it will take two weeks to implement a story card per team guidelines (that is, at acceptable levels of quality, testing, and accuracy that the customer and the developers have agreed to), then any team doing XP should abide by that estimate.

      The bet is that by doing it right and having a pretty good idea of how long that will take we'll attach a reasonably accurate cost to each development task. Doing it "quick and dirty" tends to build up a technical debt that will have to be paid later.

      I won't pretend that I make a good manager, but I agree with you that it's worth doing tasks right.

  88. Re:XP Programming by Anonymous Coward · · Score: 0

    Everyone out there should buy this book and give extreme programming a try. Once you try it, you wont ever go back to normal programming again, i guarantee it!

    You only read the title, didn't you?

  89. XP was a fad replacement for UML by Anonymous Coward · · Score: 0

    someone had to smack down UML. XP was the
    one to do it. It didn't matter who did it;
    one would have been invented. Might as well
    call it "eXtreme" and throw in buzzwords
    like "refactoring".

  90. Re:XP Programming by AKAImBatman · · Score: 1

    Slight correction. This:

    > When the f**k are managers going to stop hiring people who actually know more than themselves about programming?

    Should read:

    > When the f**k are managers going to start hiring people who actually know more than themselves about programming?

  91. The Emperor has a relatively decent suit by Get+Behind+the+Mule · · Score: 4, Insightful

    Unit testing, especially as a foundation for refactoring; continuous integration, read hourly builds; and the flexibility to revise design decisions when the need becomes obvious -- all of these principles are absolutely indispensible in any modern software project. Failing to do any of these things is an outrageous, inexcusable lapse. But these ideas are better understood and more obvious now than they were before Kent Beck came along with XP.

    I see all the other posts in the thread so far claiming that some or all of these concepts were known earlier, before they were emphasized by XP. But that does not discredit the approach. Frankly, there's rarely anything new under the sun, but sometimes someone has to come up with a kind of philosophy just to help us realize how effective certain ideas can be. I think all programmatic software methodologies are like this -- they try to emphasize methods that are known to have worked well in the past, and try to draw useful generalizations about them.

    Nowadays, most of the UP people are adopting many ideas emphasized by XP -- I attended a tutorial by Craig Larman last year in which he argued that no conflict between the UP and XP exists at all. But no one was saying these things before XP was articulated.

    Incidentally, I think it's clear that the waterfall is an unmitigated disaster. I was once in a project that was managed that way, a big fat loser of millions, the worst nightmare of my career, took down a whole dot-com agency. Those were the days.

    I don't agree with all of XP -- a complex system has to start with a fairly sophisticated analysis and design (but it better be designed flexibly enough to change over time if necessary). And I can't imagine pair programming, never tried it and don't want to. But even if the Emperor is not wearing purple and crimson ermine minks with linings of silver and gold, he's not naked either. On the contrary, his suit is fairly presentable.

    1. Re:The Emperor has a relatively decent suit by Mryll · · Score: 1

      Good points. I really enjoyed Larman's book on UP/UML and his take on a reasonable approach to balancing "thinking about it" versus "doing it" on a timeline. Reasonable, flexible, and diligent project management is perhaps the scarcest commodity needed for good development in a complex arena.

    2. Re:The Emperor has a relatively decent suit by Anonymous Coward · · Score: 0

      "I think all programmatic software methodologies are like this..."

      So you think all scheduling software methodologies are like this? Yea.. Hate to break it to you but that is what the word programmatic means.

  92. Re:$4 less and free shipping by Anonymous Coward · · Score: 0

    The IP address is irrelevant. Try doing some elementary detective work. From www.ccats.com, follow the link to his eBay site. Lo and behold:

    This page is maintained by ih8apple (105)

    Not so hard, now is that?

  93. XP's inventors vs. its proponents by melquiades · · Score: 1

    In my view, the underlying problem with XP is just how extreme its proponents have let it become.

    The original inventors of XP were very careful to say how they thought it was and wasn't useful. Kent Beck's "white book" gives a good list of "don't use XP if..." criteria which should have ruled out the near-disasterous project at where my company used it. As you point out, Martin Fowler and others offer different perspective, and nearly all the inventors insist on remaining flexible in the process and open to change.

    The problem is all the zealots who picked it up and ran with it, taking it to hysterical, almost religious extremes: "I hated developement and was considering a career switch until I started using XP. Now I'm happier than ever, and so is my boss!" User testimonials sounded more and more like ads for penis enlargement, or rehab.

    And what did XP's founders do to deserve this reaction? I mean, it's not like they oversold XP and tried to turn it into a cult...er....

    Well, yeah, actually, that's exactly what they did: they set it up like a cult, and got a cult-like following.

    The attitude of the XP literature is all too often overwhelmingly arrogant, self-important, marketing-focused, and insufferably holy-holy -- starting with the XP "Bill of Rights", and Kent Beck's inconceivably cocky advice on using XP. (Use it on your hardest project. Repeat.) Or Martin Fowler's laughable quote about JUnit: "Never in the field of software development was so much owed by so many to so few lines of code." JUnit is OK, but give me a break, Martin!

    It's not hard to trace the cultural history of XP from these kinds of statements to the stories I've heard from colleagues of being the victims of angry attacks at conferences for asking about where the process had failed for them, or suggesting changes.

    I think there are a lot of good ideas in XP, and I'd like to see the XP community fix its attitude problem so that those good ideas can prosper and evolve. Perhaps this book is the dose of circumspection that XP needs.

  94. ...my monitor has coke all over it. by burgburgburg · · Score: 1

    You're welcome.

  95. Re:$4 less and free shipping by Anonymous Coward · · Score: 0

    so, you're dumb enough to assume the same person has the same userID on all the major sites on the net?

  96. honest reviews?? by jlangr · · Score: 2, Interesting
    As usual, one can read the above review of Extreme Programming Refactored and the ones at Amazon, and note that the bulk of the reviews are either 5 star (like this one, claiming that the book is "wonderful"), or 1 star.

    The unfortunate thing is that most reviewers have lost all sense of reality. One would think a 5-star review represents a classic for all time--maybe something on par with Shakespeare, or (dare I suggest) Design Patterns. A one-star review represents something absolutely worthless and/or dishonest, like the half-made-up Bellisiles' book "Arming America."

    Extreme Programming Refactored is neither a classic, nor is it a complete waste of money. There are some good insights in the book, as it points out some of the pitfalls in the application of XP. It is for the most part well-written, but it also resorts to cheap shots and name calling. There are some serious problems with the book as well, including incorrect information and ignorant testimonials.

    Most honest people would agree with this assessment of the book. Unfortunately, the bulk of the reviewers aren't. Honest, that is. XP haters rate it five stars, XP lovers rate it one star. [I fall on the pro-XP side of the fence, in case you cared.]

    Even big-process bigot Steve McConnell chirps in with a 5-star review. Gosh, Steve, does that mean you think the book is a software development classic, on par or even better than your book Code Complete, which only gets 4.5 stars on average?

    In any case, I did write a review of the book at Amazon, complete with quotes and such, and I didn't give it 5 stars, nor did I give it 1 star. But I guess my review sucked, because McConnell's review got more happy-popularity-votes than mine did.

    1. Re:honest reviews?? by swordgeek · · Score: 1

      You're absolutely right, anot not just with regards to technical books. I've long since found that the 2-4 ratings are usually the ones worth reading.

      Personally when I reviewd books on Amazon and other places (before you needed to register with them to do so), I almost never gave a book either extreme. A one star book, as you say, must be dishonest, lying, and possibly dangerous. A five star book, well I can think of a few that I've given: Slaughterhouse V, Deathbird Stories, To Kill a Mockingbird, and Persistence of Vision may be the only 20th century stories I've read which qualify as Great Literature. In computer books, the only two have been Unix in a Nutshell, and the Unix Sysadmin Handbook (Nemeth et. al.). Everything else has been flawed, even the truly excellent ones; and likewise, nearly every really awful book has _some_ redeeming features.

      The problem is that if people have a strong opinion, they start to lose their rationality; and if people don't have a strong opinion, they don't bother reviewing something.

      --

      "People who do stupid things with hazardous materials often die." -- Jim Davidson on alt.folklore.urban
  97. Great review by Anonymous Coward · · Score: 0

    Looks like somebody really enjoyed the taste of the author's meat popsicle. When the author comes up for air could somebody point him to amazon, they have plenty of useful reviews there.

  98. Re:XP Programming by OldAndSlow · · Score: 1

    > But "real design" doesn't work, at least, not very well. >Says who? Works pretty well for me. My team and I are generally *more* productive when we design *before* we code. Ever hear the saying, "Measure seven times, cut once"?
    What we are missing here is the context. If you are working in a domain where you have already delivered 17 systems just like the one you are working on, then you can decide on the design up front. (As an aside, in that situation you should really just take a previous system and make it generic. That will pay off the third time you use the generic system.)
    But if you are in a domain that still has unknowns for your team, it is hard, (how hard depends on the density of the unknowns) to do a decent design (or spec!) up front. You will fill the unkowns with assumptions (sometimes without realizing it). And the assumptions are often wrong.

    So in a (small!) document-heavy development, you can expect to spend at least 40% of your effort in planning, requirements, architecture, and detailed design. And still wind up needing 35% rework. One of the nasty traps of document-centric development is that you don't know which representation of the system is canonical. If the code doesn't match the spec, which one gets changed? In a perfect world the spec is right and the code should change. But I've seen too many cases where the coder realized that the designers really didn't understand this business process and asked for something impossible/stupid/silly. So you jump through some hoops to decide to change the spec, and then jump throuch more hoops to actually change the spec & architecture & design. Which costs about 10 times what the code cost. And it holds up progress on the code while the changes are approved.

    > I believe that hacking is the best most ideal way to code.

    Then you don't know much about industrial-strength software development. Or XP. XP is a high discipline methodology. Test Driven Development (TDD) is a discipline. Merciless refactoring is a discipline. If you don't do them, you fail. Not requiring documents that (in the XP view) don't contribute as much as they cost does not equate to hacking.

    When the f**k are managers going to stop hiring people who actually know more than themselves about programming?
    Well, it seems to me that most managers I know only do that by accident.

  99. Oh Yeah? by blunte · · Score: 1

    Nobody needs prima donnas, of course (well, except ballet companies, I suppose ;-)

    Not this prima donna

    Sorry, OT, couldn't help myself :)

    --
    .sigs are for post^Hers.
  100. Re:$4 less and free shipping by Anonymous Coward · · Score: 0

    and you're also dumb enough to assume that the ccats.com is owned by the guy who has the ccats-20 referral ID? What about the other ccats copycat referral IDs? dumbass.

  101. Re:what a fag by Anonymous Coward · · Score: 0

    timothy should also point out that he lives at home with his mom.

  102. Re:XP Programming by Anonymous Coward · · Score: 0

    My team and I...

    You don't consider yourself a part of your team?

    Ever hear the saying, "Measure seven times, cut once"?

    See, this kind of thing is what XP addresses. "Measure X times, cut once" applies to WOOD. You know, a physical thing that can only be cut ONCE. Software is not wood. You can cut it again. And you will after the customer changes the requirements (or "clarifies" them).

    I'm not saying you can't start without a design, it's that the stuff I was taught in school about big design and flowcharts and UML diagrams are more like what you need to do with hardware. Software can change. Don't fight it.

    And of course not ALL software can be "hacked" together (maybe a bad choice of words by the grandparent).. I would never use XP practices on a database schema, or a real-time system, or anything with a hard spec (and no, most customer requests for a web app, shopping cart, etc., are not "hard specs").

    If your development team can function with big-design-up-front, then fine, keep doing what works. I have found that with programmers of moderate skill with a few experts in the team, XP practices work best. ESPECIALLY the test-first design. That is the best part of XP IMO, once you realize and internalize that every line of code you write should exist to pass a test.

  103. Coffeine overdose... by SharpFang · · Score: 1

    ... and sleep deprivation is dangerous to your health. Sure, if 10 is "normal maximum", turn the dial somewhere around 42 or 78, but keep it there for a night or two, then deploy damned thing and get a month off, somewhere in mountains or on a ranch.

    From company's point of view, an employee is like CPU, can be overclocked to 12-14 or so, add some extras, a cooler or a bonus and when it burns, just replace it. Not quite the employee's favourite idea though.

    --
    45 5F E1 04 22 CA 29 C4 93 3F 95 05 2B 79 2A B2
    1. Re:Coffeine overdose... by greenhide · · Score: 1

      Sorry, somehow the mod rating me +1 Funny must have made you think this was a serious posting. :-)

      It's decidedly off-topic, a quote from Spinal Tap

      Had it been modded Offtopic -1, no doubt you would have realized that I wasn't actually advocating working coders to the bone.

      After all, I am one.

      --
      Karma: Chevy Kavalierma.
  104. Re:XP Does Work on Spacecraft Control Software NOT by AJWM · · Score: 1

    That's a rocket, not a spacecraft. It's in the air for a few minutes, at most -- not on say a multiyear trip to the outer solar system or even a multiyear stay in GEO.

    Plenty of rockets do just fine with no software at all, I've launched a few of same myself.

    --
    -- Alastair
  105. Re:XP Programming by Sparks23 · · Score: 3, Insightful

    A very good point... it's interesting that many of the same people who argue against Extreme Programming being sloppy are also the sort who are die-hard supporters of the Open Source/hacker methodology of development. If it's so bad to adapt the code as requirements change, how many Open Source projects follow a large formalized design document as opposed to accepting useful patches as they come up?

    However, there's a lot more to XP, and there are some definite weaknesses in it...I say this as an XP supporter. I'm also going to make the same argument I've made in most of the previous XP articles on here; XP is absolutely great /when it works/, but it's very easy for it to fall apart, and then it is more harmful than helpful.

    I was part of an Extreme Programming team that saw both ends of the spectrum. We had internal support, we met with our customer every two weeks and had an iteration planning meeting, and we were productive beyond all reason. When the requirements for part of the project changed, we were able to adapt quickly; our code was small, reusable and modular, so we were able to quickly make adaptations when the end-goal target changed. The code was largely bug-free because of pair programming, where one would work on design while the other coded, and we caught errors much more easily. Meetings were held standing up so that no one wanted them to go on for too long, and it kept them short. Our team was responsible for our own hires, which meant we picked folks who could fit into the pair-programming model well. We took a break every two hours to keep from burning out, we had separate 'personal' spaces as opposed to the pair programming computers...

    It was one of the most rewarding development experiences I have ever been part of. Every bit of glowing, golden praise I had heard about XP working well seemed to be true.

    But things changed inside the company when management changed hands. We lost the support for two-week iteration planning meetings, and had to work in six-month intervals. We lost the ability to hold stand-up meetings and were stuck in long conference calls. Our team got too large and fragmented into smaller bits, and the pair programming model broke down. Trying to stick to XP became an exercise in frustration and warfare with management. And as we let go of bits and pieces of XP, under pressure, the remaining pieces were weakened. Iteration planning only works if you can actually interact with the customer at an iteration-level, for instance... and so our targets became less easily defined since they were set out months in advance. Made it easier and easier for specific people to concentrate on tasks than having to swap around per-session... which ended up meaning instead of knowing all the code as we had before, anyone able to take over any area, we became specialized in specific areas of the project. And so on...watching XP collapse around us. And it was depressing, really, to see what had been a productive, active environment be stifled.

    So that's my first-hand experience. When XP works...it /really/ works. But if you throw the balance off slightly, if you can't have all the prerequisites for XP, it rapidly becomes more frustrating and damaging than normal development methods are.

    And more and more, it's harder to find the support for the XP procedures in a corporate environment. Bits and pieces that are in XP -- such as making modifications as they're needed rather than trying to plan overly far ahead for goals that might change, or writing test-suites for your code, and making clearly-understood code -- are of course sensible procedures. But the overall conglomerate only works if you have certain things...support within the /whole/ company being the big one.

    --
    --Rachel
  106. Re:XP Programming by Kazoo+the+Clown · · Score: 1

    But "real design" doesn't work, at least, not very well.

    It works as long as you don't have morons for designers. Software design is an expertise, and as such includes benefits of experience. Lacking the expertise and experience (or the budget for it), some will instead attach to a dogmatism, a "one true way" which is always correct in lieu of any expertise or lack thereof.

    What many XP-ers don't realize, is that many of us have lived through previous incarnations of "one true way" software development dogmas and have come to recognize the signs.

    There are similar problems in other professions-- Teacher for one example. Rather than trust a teacher's own education and experience, it has become the fashion to instead impose some dogma which, as usual is designed to take all the mediocre-to-poor performers and at least have them channelled into all doing the same thing. Frankly, I'd prefer to see teachers as professionals who bring something besides warm bodies-jammed-into-one-size-fits-all-methodologies to their profession. I think professional associations and credentialing for teachers like doctors and lawyers have would do far more to improve the quality of education, but it wouldn't be particularly cheap. In my book though, you may just be getting what you're paying for...

    XP, like those dogmas before it, is designed to take a group of young, aspiring and inepensive programmers who don't know any better, have a huge amount of enthusiasm but the attention span of a flea, and give them focus in order to exert some common direction and control over their productivity. The XP methodology is a specifically defined and fixed target and not itself an example of it's own design methodologies.

  107. Why pair-programming works. by AJWM · · Score: 1

    I'm not sure WHY they seem to think that pair-programming is an absolute must with XP, but all the shops using it seem to think so.

    Because it works, for several reasons.

    First, with an approach like XP (or the somewhat looser Scrum), you're pretty much discarding the conventional design phase and everything that goes with it, like design documents. That means, other than the code itself, there's no "institutional memory" of why the code is the way it is, beyond what's in the memories of the programmer who wrote it. Documented code helps, as do code reviews. Think of pair programming in this sense as a very intense design and code review rolled into one. (This also ties into the skills transfer mentioned in another post).

    Designing, moreso than coding, is easier if you have somebody to bounce ideas off of. You can keep each other on track, or come up with an approach the other hasn't thought of. Witht the XP approach you're doing some of the design work at the keyboard while programming -- so better to have two of you.

    More subtly, but perhaps most significantly, it promotes team-building, especially if you pair with various team members rather than the same person all the time. This is not just a fuzzy feel-good management thing. Barry Boehm, who literally wrote the book on determining the costs of a software project, found that the largest factor, by far, in a development team's success is the quality of the team. (This after factoring out things like language or application experience.) Pair-programming (and XP) works because it helps build good teams.

    There are other ways to achieve that, of course, which is good because XP is not suited to all domains. But I think that's a factor overlooked in the analysis of why it does work.

    --
    -- Alastair
  108. Re:XP Programming by dubl-u · · Score: 2, Interesting

    Says who? Works pretty well for me. My team and I are generally *more* productive when we design *before* we code. Ever hear the saying, "Measure seven times, cut once"?

    Having done things both ways, I'd say that incremental design improvement is the way to go.

    Having done XP for a few years, I spend about 20% of my design time up front, about 30% while coding, and the rest while refactoring.

    I like this a lot more than trying to do 100% of the design up front. Why? Because your design is only as good as the information you have at the time you do the design. For non-trival projects, it's impossible to have all the information you need up front; even if users never changed their minds once they saw the result (ha!), any good developer learns things as they go.

    It also turns out to be much more productive. If I have to do all my design up front, I'm much more likely to overdesign; much better to have too much than too little. But if I do my design on a just-in-time basis, I can avoid a lot of needless work.

    And as a bonus, my designs end up being better. The product may be version 1.0, but because I've been iterating over my architecture along the way, the architecture is version 5.0.

  109. Re:Amazon Link by Anonymous Coward · · Score: 0

    By Grabthar's hammer, I will avenge your first post...

    Amazon Link:
    here [Amazon.com]

    PS I think we're posting frosty piss so fast, our URL's have gone sour!

  110. chocolate, peanut butter... and coffee! by axxackall · · Score: 1

    You forgot another over-blown buzzword: Java.

    --

    Less is more !
  111. Re:XP Programming by inertia187 · · Score: 0

    It works as long as you don't have morons for designers. Software design is an expertise, and as such includes benefits of experience. Lacking the expertise and experience (or the budget for it), some will instead attach to a dogmatism, a "one true way" which is always correct in lieu of any expertise or lack thereof.

    But we do have morons for designers. XP is a great way to shove the responsibility for design into the process rather than force it to be flushed out in the beginning of the project where it's less likely to have form.

    XP, like those dogmas before it, is designed to take a group of young, aspiring and inepensive programmers who don't know any better, have a huge amount of enthusiasm but the attention span of a flea, and give them focus in order to exert some common direction and control over their productivity. The XP methodology is a specifically defined and fixed target and not itself an example of it's own design methodologies.

    Hey, whatever works to get the pack moving. But I think you're wrong about XP being a fixed target. Maybe in a given iteration of XP, that's true. But it undergoes changes just like it recommends project specifications do. Isn't that what this book is about, "Extreme Programming Refactored?"

    --
    A programmer is a machine for converting coffee into code.
  112. "Definition of a review Review" review reviewed by Anonymous Coward · · Score: 0

    I believe my review of the review of the meta-review of the review of the review can best be described in one word. WTFPWNED

  113. Re:XP Programming by Anonymous Coward · · Score: 0

    And what's the deal with PIN numbers?

  114. XTREEEEMEEE is.... by sigmaIII · · Score: 1

    ....VB with option explicit set to off!

  115. Another Fad... by jxa00++ · · Score: 2, Insightful

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

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

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

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

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

  116. Re:XP Programming by Anonymous Coward · · Score: 0

    ...and what's with "The La Brea Tar Pits?"

  117. Actual customers by DrCode · · Score: 1

    "...as most developers have never talked to an actual customer..."

    True. But usually, an open-source developer is his own customer.

  118. Re:XP Programming by russh347 · · Score: 1


    Thank you very much

    By suggesting that XP is hacking, you've done damage to the XP community.

    XP is most definitely not hacking. XP does not suggest coding without considering design. In fact, XP means designing each and every step of the way, redesigning as (if) necessary, and ensuring that the design is not only testable, but tested (frequently).

  119. Two Hackers doesn't make an omelet by arth1 · · Score: 1
    Nope, pair programming takes two hackers and attempts to turn them into one disciplined programmer.

    That's as futile as trying to create a diciplined heavy metal band or porn star. It defeats the whole purpose of having a Hacker in the first place.

    The correct way to use two Hackers is to appeal to their ego. Have both code the same piece concurrently, and let the best code win. That way, you both ensure that the coders do their very best, and you also get alternative backup code BEFORE a problem is reported, which is invaluable in troubleshooting. Program crashes with both pieces of unrelated code? Chances are the problem is elsewhere, or with the specs.

    Oh, and you can use this competitiveness to your advantage with QA too -- encourage the coders to find problems with each other's code. If possible, keep the programmers from even seeing each other (it's easier to slam the code of someone you've never met), and don't penalise the coder who creates bugs, but reward the finder instead.

    THAT's extreme programming. EP, for people who can both code and spell.

    Regards,
    --
    *Art
    1. Re:Two Hackers doesn't make an omelet by royalblue_tom · · Score: 1

      You weren't planning on working with one of these hackers again were you - as he'll hate you for not choosing his "brilliant" code over the other hackers. Why do I get the feeling that I will get two programs, neither readable by my other programmers, uncommented or documented (I had to get it done quicker than the other guy), and the bugs will be nasty and obscure.

      I used "hacker" in my post to mean someone who churns out code, without worrying about the niceties of software engineering. Someone who is likely to think that having uncommented and undocumented code is a good thing, as it keeps him hired. For every dedicated "coding standard" programmer, you'll find a legion of these "hackers" who feel that their code is self commenting, self documenting, and its obvious what it does. They don't need to follow the company standard for indenting or variable/method naming because they use their own "better" method. But their code is just a full of bugs as everyone else's, and more difficult to maintain.

      Pair them up. Let their egos shame each other into writing one "decent" piece of code, rather than two hacked pieces of indicipherable cack. The software industry is a team game these days. Programers need to learn to work together - both in the way they interact with others, and how they write code.

      And hey, most heavy metal bands are very diciplined in their performance - and they match their performance to that of the other players in the band, working together to perform a single piece of music.

  120. Domain versus Range by anothermuse · · Score: 2, Interesting

    There is an interesting interview between Alan Cooper and Kent Beck at http://www.fawcette.com/interviews/beck_cooper/def ault.asp Cooper was testing his ideas on goal centered design through his "Design+Fun" workshops. I offered up the opinion to Alan that software design is a bi-directional search: with firmware on one end and wetware on the other end. Alan and Kent start from either side of this search. From XP, I gather that there is much exploration of the domain of APIs to deploy a solution. Writing code immediately helps document the search in such a domain. From Goal centered design, there is much exploration of the range of a customer's goals. Writing designs helps document the search in such a range. Using both: Goals help prune unnecessary features, while XP helps prune unrealistic expectations. While using either method could get the job done, perhaps using both is more efficient.

  121. No free lunch by YouHaveSnail · · Score: 2, Insightful

    I don't care if it's structured programming, OOP, Smalltalk, Java, RAD, use-case analysis, XP, or XPR... no language, tool, methodology, or management style can provide a quick fix for the difficult problems of organizing, designing, implementing, and maintaining a significant software project.

    By all means, read this book (or any other) if you feel it might bring something positive to your development process, and adapt what you can to your own project. Just don't fall into the trap of thinking that XPR (or anything else) will solve all your problems, and if it doesn't that you must not have done it right.

  122. Top-heavy design burden by John+Bayko · · Score: 1
    I notice a lot of people don't seem to understand what "design" necessarily means - as a result, it's often implemented as a crushing tome of details that are (in practice) taken from the final code that had to get written to meet a deadline, and translated to tables and diagrams to fulfill the "design requirement". In other words, it's not design, it's description after the fact.

    Conversely, those who've seen that, or think of design that way, think that it's completely unnecessary and diving directly into coding, using a flexible method, is the way to go.

    I think that good design is nothing more than what needs to be done anyway. You've always got to spend a few minutes thinking of what you're going to do before you hit the keyboard. A good design process should simply mean that you pause for a minute, write down those thoughts you're thinking anyway, and then continue. No more detailed than needed.

    The most useful part of necessary design work is that it's higher level than code (obviously, otherwise you'd have just coded it), and lets you consider more of the system at a time. Often if you code something that's simple, and then coded something else, you'll find when you need to connect them that there's something you hadn't thought of, so you need to rework what you did ("refactoring" that's such a big XP thing). If you'd taken the time to describe what you intend to do (as if an email to someone), chances are you'll notice the problem when you get to writing that sentence. It saves time because you haven't done any work yet, and it's a lot easier to change a few sentences than rewrite working code.

    If you get used to doing this, you can get comments for free - take the description, and paste it into your code editor. Take each step and break it down for more detail - at some point it's so detailed, any more detail would mean actual code. So wrap the description in comment markers, and write the code between them.

    Obviously some things need more design effort than others. There's no use being dogmatic about it - a good design policy shouldn't add unnecessary work (if it's unnecessary, why the heck are you told to do it?). An added bonus, if you get good at doing this, you can farm the coding of parts off to junior programmers.

    There are several things you can use a design for. First (and most important, I think) is implementation - as I said, the thinking process that has to happen anyway, and communication to others working on the program. If it's easier for you to see where parts of your own module don't fit, it's going to be a lot easier for two people to get an idea of how their modules will need to work together if they can describe it to each other before hand - everything from whiteboard notes to email, even if not a full design, is better than nothing.

    Helping someone later to understand the program (for maintenance) is only secondary. This isn't a good thing to rely on, since the design usually gets a little out of date compared to the implementation, but it should be a useful guide for someone looking at the code. The important thing is, it can only be useful if it's not too detailed - the details are where the design becomes deceptive when it differs from reality.

    If a design is to be used this way, it should be updated as easily as the code - possibly more, and at any point after the fact.

    1. Re:Top-heavy design burden by AKAImBatman · · Score: 1

      I think you summed it up pretty well, but let me add another level of detail to this. As an architect, designs come down to the question of "what are the enabling technologies for this project"? For example, I needed to deliver a site that could change its appearance (both text and graphics) depending on who it was being "skinned" for. It also needed to allow for external links to jump to any point in the process.

      After some analysis, I found that the best solution was to cut up the various pieces of each page into components that could be used anywhere on the site. These were simple JSP include files that could then be strung together with simple XML. Each component would be required to use a standard set of CSS defined colors that were helpfully developed in cooperation with our art department. Thus, a controller JSP page could be passed an XML "view" name and depending on the site, the proper XML and CSS would be loaded and rendered.

      Of course, that still left the problem of getting people to the right step in the process. Plus, given how dynamic each site could be, it just didn't make sense to limit the various sites to an individual set of views. Thus, I added another layer to the controller whereby it would decide what view should be displayed based on the information currently in session. A standard navigation route was developed and could be overridden by a given website.

      Once the core technology was developed (it was pretty simple, so it didn't take more than a day or two), I was able to farm out the implementation of components to the various coders with relatively exact specs of what was needed. As usual, changes would come down the pipeline halfway through development, and as usual, my design was flexible enough to accommodate them. Sure, it was extra work, but not much. As a plus, the technology ended up working so well that it took ONE coder barely a week to set up a new site for a customer. Most of that time was spent creating and integrating any special components that a customer needed. Of course, they had no idea about the component architecture, they just wanted THEIR site to look THEIR way. And we did it. In a week. Some pretty big customers were pretty happy, let me tell you. :-)

  123. XP Modified by Anonymous Coward · · Score: 0

    I like au pair programming

  124. Re:XP Programming by doomdog · · Score: 0, Flamebait

    We need Extreme programming because, come on guys, lets face it, normal programming is cutting it anymore.

    That's completely false. What's not cutting it is the quality of today's programmers -- a lack of maturity, a lack of attention to detail, a lack of "doing it right the first time", a lack of using the right tool for the job (because language X can be used for *anything*), etc.

    XP is a joke and always has been. It's just a rallying point for slackers who want an excuse for their wild, maverick, no-rules approach to software development...

  125. Deafening by CarlBenda · · Score: 1

    Having "the knob turned to 10" gives you a sense of what pair programming is like. After a week or so at 10 you can't hear much and so it goes with code reviewing. Watching someone type is one of the most boring things to do after watching grass grow. After a while you lose focus and start to drift off. I've seen it plenty of times with multiple partners. In some cases simple coding gets so boring both the person doing the coding and the person checking fall off. Switching between typing and watching only helps a little. Switching partners help a little also. At the end of the day though you start hating programming. That's life at 10.

  126. Extremely Boring by CarlBenda · · Score: 1

    You can though blame it for being extremely boring.

  127. Good programmer by CarlBenda · · Score: 1

    You sound like a good programmer. It takes some self reflection to understand what a lot of XP proponents don't which is different people have different styles of programming. With XP you can't have different styles. If you don't fit in you get fired. I did.

  128. I just can't pair by metamatic · · Score: 1

    Call it a psychological defect, call it a mental block, call it what you will... I just cannot write anything with someone watching me. Doesn't matter whether it's code, documentation, an essay, a letter, or a postcard. Try and force me to do pair programming and my productivity will drop to zero.

    Code review, on the other hand, I'm fine with. Test harnesses, formal QA, documentation, extensive commenting, frequent releases, UML, it's all good. Just don't look over my shoulder while I'm trying to create something.

    --
    GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
  129. This subject line is misleading, also by metamatic · · Score: 1

    The response you are currently reading is sadly disappointing. It takes an already overdone joke and attempts to outdo the meta-joke by introducing self-referential deconstruction. The result is more than a little pretentious, and simply not funny.

    The responses to the response you are currently reading predictably miss the point--though that can be forgiven, given the author's stylistic quirks. What is harder to forgive is the poor spelling and punctuation, and general lack of grammatical flair.

    --
    GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
  130. The book is a character assassination by nixnixnix · · Score: 1

    I read the sample chapter of the book and was astonished at how bad it was. It starts out quoting some prominent XP people who have made postings to Usenet where they have misspellings, peppering their quotes with "sic" (to try to make their post look stupid), then follows up with a shotgun blast from "an anonymous XPer". How is anyone supposed to take this book seriously?

    I've worked on XP projects and it works really well for certain types of projects, notably business systems that are speculative in nature. And the proponents of XP do not say that XP is right for developing air traffic control systems.

    Refactoring XP is not a serious study, it's a biased example of pseudo-scolarship at its best, or out-and-out character assassination at its worst. I read the Pete McBreen book and I think that one was a more balanced view of where XP doesn't make sense.

  131. Does not fix fundumental issue by Anonymous Coward · · Score: 0

    In my opinion, the basic flaw with XP is that it requires constant engagement from the business side. Ha! Has anyone known ANY business-oriented (Sales, HR, Legal, etc..) co-worker with an hour to spare every 2-3 days for the next 3 months on your IT project.

    Remembering, Refactoring = "Interrupt-my-already-overloaded-day-with-more-fid dly-details-about-something-my-boss-wants-done-but -I-could-care-less-about" to the average middle manager.

  132. XP on your own? by Anonymous Coward · · Score: 0

    I tend to like XP. I haven't worked in an XP shop, but I have used it in class projects and some project of my own.

    Kindly refrain from expanding on how you handled the whole pair programming thing on your own; thanks.

    1. Re:XP on your own? by randall_burns · · Score: 1

      I was doing a small, non-work project with a couple friends.

  133. Re: Pair programming at 10 by mfnickster · · Score: 1

    It comes down to doing it in the most reasonable manner for any pair of programmers. Sometimes you can work in tandem, other times you need long breaks from the other guy.

    You don't necessarily have to have one programmer literally looking over the other's shoulder-- in my experience, it's more natural and makes more sense to discuss the problem with the other programmer, work separately for a while and then meet again to go over the results.

    In one case, another programmer (senior to me) was describing how he was getting stock quote information over the wire and handling the fractions using floating-point calcs. He didn't like the implementation or the performance very much, and while he was telling me this, his phone rang.

    While he was on the phone, I looked over his code and a few minutes later when he hung up, I handed him an integer version. By working on the problem alternately, we came up with a better solution (and the senior put in a good word for me with the boss, saying I had "a good eye for optimization)."

    It all depends on what you're used to and what you're willing to try as a fresh approach.

    --
    "Slow down, Cowboy! It has been 3 years, 7 months and 26 days since you last successfully posted a comment."
  134. Re: Pair programming at 10 by CarlBenda · · Score: 1

    Sounds great to me. This just happens to not be pair programming and XP. You don't work separately for a while because if you do that the other person isn't checking your code. If they aren't checking your code you need QA. If you need QA then why are you wasting another programmer's time. Etc, etc, etc. I find plenty of things in XP that I like and have used for years well before the word XP came out. The problem with XP is it decided to make these things ridged and cranked up to 10. Some thing that was good in moderation has been made into an ugly way to manage software development. Hopefully pair programming doesn't keep the bad connotation that XP is giving it.

  135. Re: Pair programming at 10 by mfnickster · · Score: 1

    I have to admit that I've never tried XP (I worked as a programmer before it came along), and I've only read a little about it. You're right, my example is not XP (I didn't mean to imply that it was), but it is pair programming of a different kind.

    Two programmers, working on the same problem, in the same capacity-- the essential point being that the code passes both sets of eyes before it goes out. In our case, it didn't have to be checked every 5 seconds; every 5-15 minutes was sufficient.

    The principle is the same, but tuned to accommodate our working style.

    --
    "Slow down, Cowboy! It has been 3 years, 7 months and 26 days since you last successfully posted a comment."
  136. Code Red by Epu · · Score: 1

    They're doing more than tab-indenting, one of them is running out for Mountain Dew and candy bars. ( Sending the dumb guy out on a real mission, priceless) Seriously, getting the dude who knows how to hack some (gag) maxscript or perl or whatever (knows some syntax and hang-ups) to sit next to the guy who knows how to program *any* kind of data structure can really get the shit done right and in a quick way.

  137. It's all about *which* two coders you have... by Anonymous+Brave+Guy · · Score: 1
    Learning to be a good coder does not happen by proximity and osmosis.

    Perhaps not, but it does happen when you take someone with potential and a willingness to learn, and then apply proximity to skill and experience and let osmosis do its work.

    Not every junior programmer wants to make that effort, but plenty do. A smart company will employ such people and train them properly: it's a much cheaper way of getting good results, it raises the standards across the industry by supporting the new starters who will be the senior programmers of tomorrow, and it gives both an incentive and a watch on the veterans to make sure they keep sharp. Basically, everybody wins.

    Sure, if you hire monkeys this will never get them anywhere and will just be a drain on the senior guys. But that's true of any methodology you use. The moral of the story is to hire people with enthusiasm for their field and a desire to learn, and not the monkeys. If they cost a bit more, pay it; compared to the benefits to a development team, the modest rise in remuneration and occasional perks it will take to make your place stand out from the crowd are nothing.

    (I should say here that I don't advocate "pure" pair programming. I do, however, believe in senior programmers being heavily involved in supporting the junior guys by various means, including variations on the pair programming theme.)

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  138. Re: Pair programming at 10 by CarlBenda · · Score: 1
    Don't get me wrong either. Pair programming has for me been some of the best times of my life. Working with someone I respect and getting near instant feedback after I've done something was great. It's just not what XP advocates. Doing it all the time with everyone leads to more problems than it solves.

    I don't think the principle is the same with regards to XP pair programming and what you describe. You don't check after 5-15 minutes in XP. The person pairing with you is suppose to watch all the time looking for errors. There is one keyboard. One computer. There is pretty well nothing else to do for one person in the pair except to look over the other person's code. The principle in XP is constant vigilance. Looking the other way for 15 minutes allows your partner to run amok. :-)

    I think you are developing an agile style. I like agile methods. You are not doing XP.

    An analogy with XP would be drinking red wine. Red wine is good for you. XP would say dial that up to 10 and drink a few bottles a day. XP drops the context that some things work well in restricted situations and just says you should do it all the time with everyone.

    Imagine working with someone in your group that you don't really like and whose code while "right" doesn't look too good to you. Go ahead and pair program with them. If you are lucky maybe you'll change your opinion about them. If you aren't tough luck under XP. Now do the same with someone you do like. With luck you'll still like them at the end of the day. Some times people aren't compatible but can work together. With XP you aren't really suppose to pick and chose. If you do you lose out on spreading the code knowledge.

  139. I'll third that idea (more...) by Anonymous+Brave+Guy · · Score: 1

    OK, I'll third this one. :-)

    In a good team, people should feel able to ask their colleagues for advice, and should be willing to offer it themselves. It doesn't matter if you spend significant amounts of time helping others, or vice versa: overall, your team will be more productive. You'll also have much better morale in the group, because nothing saps energy and enthusiasm like staring at the same problem for hours without really seeing how to proceed with it -- particularly if, when you finally give up and ask someone else, they suggest a working solution in about five seconds. :-)

    As long as everyone has a little courtesy -- don't interrupt someone who's obviously concentrating hard on something, or disturb someone during their lunch break -- this works really well. I've seen it in several places, all with the same sort of approach, and I'd prefer it to mandated 100% pair programming any day of the week.

    BTW, the "one writes the real code, one writes the tests" approach is interesting, but I suspect misguided if that's all they're doing. If your test code takes as long to write as your main code, you should probably investigate better ways to test your code. Writing test code is both a drain on resources and a potential source of errors, and as with any other coding, you should do enough to do the job, but no more. It's worse than regular coding though, because it tends to be really monotonous, and it's very tiring for someone to do it properly for extended periods. If you can automate testing, or part of it, then that's probably a better answer.

    If you're going down that road, you might also consider having a designated tools developer. Nothing makes development more efficient and less tedious like a good tool. I recommend having someone whose whole purpose (at least for this week) is to be available to other developers to put together all those helpful little build scripts, code templates, test data generators and so on, and to maintain or update those you already have. For a smaller team, where this isn't a full-time job, it can be done by someone also writing the test code (which is often a tedious job, so this helps to provide more interest) or by any other main coder on the team in exchange for reduced commitments in that area. Any way you look at it, one of the team is getting to know how everyone's stuff fits together and how everyone else works, as well as improving overall productivity and raising team morale.

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  140. On negative books. by israfil_kamana · · Score: 1

    One of my favourite books is "Pitfalls of Object-Oriented Programming" which was similarly slammed in its day for being anti-object, etc. In truth, it was very much in favour of Object-Oriented programming, and presented ways you can make your life difficult, and how to avoid those ways.

    It's always good to have a thoughtful re-examination even of one's most dear religious views. We often don't see the rat-traps into which our minds wander as we enthusiastically accept a doctrine. I haven't read the book, but plan to, and hopefully it will show me ways to improve what is good about XP, and reduce what is not so good about it.

    I remember, to provide a historical note again, this same stupid argument happening with the Various modeling gurus. The arguments were mostly religious and stylistic/aesthetic in nature. What always made sense is to take the recipies, practice them, and adjust to your local ingredients.

    i.

    --
    i - This sig provided by /dev/random and an infinite number of monkeys at keyboards.
  141. Re:XP Programming by inertia187 · · Score: 1

    XP does not suggest coding without considering design.

    You obviously don't know anything about XP. Take a look.

    --
    A programmer is a machine for converting coffee into code.
  142. Context is king. by twray · · Score: 1

    Maybe XP is a great tool. And maybe go-it-alone programmers are great workers. How about, when selecting a methodology, we include the personalities and abilities of the available team members in the problem domain. So, in some cases, XP may be the right way to go. But in others it's only good if you fire some of your most competent people (or at least disclude them from the project). In other cases, the iterative XP process may make the customer too jumpy, regardless of the quality of the end product. I've seen users get a "Alpha" version of an app and whine that menu choice XYZ is always disabled, and consequently to app is useless, even after you told them that XYZ is on the "under construction" list. As the manager who approved the app, you look bad in the eyes of your employees. Unfortunately, not everyone is patient, attentive, trusting and insightful.

    --
    Fine, I'll build my own moon base! With blackjack...and hookers...in fact, forget the base! - TripMaster Monkey (862126)
  143. MBTI & XP by RicochetRita · · Score: 1

    Funny, I'm an extreme INTJ, as well (8,6,9,10 on a 10-scale) & I've had no trouble Pair Programming for the better part of the past two years. And, similarly, most of the coders here are INT[P|J] -types, with a few INFP's thrown in.
    But we take breaks -- reading Slashdot, Kuro, GoogleNews, etc. walking outside for [air|smoke] breaks, playing with the puzzles around the office, or just bugging the office staffers, up front. All of this allows us to come back & concentrate on the code at hand.

    --
    Stuff that matters: circuitbreakers, vacuum-cleaners coffee makers, calculators generators, matching salt+pepper shakers
  144. this book is silly by Kragen+Sitaker · · Score: 1

    Ron Jeffries wrote a good review of this book last month; his review avoids most of the flaws the comments here find in this review.

    I've only read one chapter, the one up on the web, but it's quite silly. The author repeatedly describes how one team or another did some dumb stuff and it didn't work; many of these anecdotes are parodic fiction, and obviously so, but some of them are presumably real. Then he explains that that dumb stuff didn't work. The trouble is that a reader with no XP experience might be fooled into thinking that XP advocates doing that dumb stuff.

    The trouble with liberals listening to Rush Limbaugh, as one poster suggested, is that Rush makes up a lot of lies and passes them off as truth. (See Al Franken's earlier book for details.) If you don't spend ten minutes investigating facts for every minute you spend listening to Rush, you're likely to come away believing a lot of nonsense. The same problem applies to this book: it's largely fiction, and the line between fiction and reality is unclear.

    I've been working on an XP team for a year, and I really like it, but it certainly has its disadvantages. I'm very impressed with the people I'm working with, and I'm really happy with our product. The process we use has almost nothing in common with the processes the book criticizes. Still, sometimes it has its drawbacks, and I think you should definitely be aware of them before you jump into XP. But this book is a good source for information on the drawbacks of doing things XP prohibits, not on the drawbacks of XP. See Questioning Extreme Programming for that. (Briefly, XP requires a small team, significant buy-in and resource commitments from the customer, easy deployment, testing support, and flexible underlying technology.) And, you know, myself, I'd be a lot happier with an ATC system developed with Cleanroom than with XP.

    I think it's unfortunate that XP has become so fashionable, because now we have programming fashionistas embracing and pushing it, and any technique or technology they embrace gets badly abused. Just look at Java, XML, and C++!

    1. Re:this book is silly by Kragen+Sitaker · · Score: 1

      Some examples of fiction from the chapter on the Web. Done in a hurry, I have to get back to work.

      p.3 (135): when I'm coding something I don't understand, I stop and spike it out or read about it, alone, not with a pair, rather than trying to code it with a pair. My pair does not hold my hand, ever, nor hug me. Our high-level requirements are written, in English, on note cards, not in C++ or any other programming language; but it's true that our low-level requirements are in our unit tests. And when I'm writing unit tests, it's not in order to find bugs; it's in order to formalize the specification of a small part of the system and check it against its specification. Occasionally they do find bugs when I'm writing them, but that's because I've decided that some piece of code I need to refactor is insufficiently tested. On those occasions, I feel great, because I have just found (and am about to fix) a bug before it hit anybody in production.

      The entanglement of fact and fiction is dangerous here. Obviously it's fictitious that your pair will hold your hand or hug you, at least in most workplaces, but the subtler fictions about the role of unit tests and requirements specs in the XP development process would be easy to mistake for assertions of fact; and they're mixed in with truths and half-truths, like the fact that some of our requirements are in unit tests, and we enjoy our work a great deal.

      And spiking and story cards are not peripheral, minor aspects of XP; they've been part of the process since C3, they're extensively discussed on the Wiki and in Kent's very first XP book, and there's really no excuse for this level of ignorance about them --- except carelessness about the truth.

      p.4 (136): our room sometimes got stinky or noisy, so we solved the problem. We have little orange signs we hold up when the room starts to get noisy, and we ask our pair to brush their teeth or take a shower when they start to smell bad. (This rarely happens, though.) Clearly we were doing XP when we had those problems, and we still are, so I can't claim they're never problems with XP. But XP gives you the tools to solve them: courage, experimentation, and a practice of rearranging your workplace for maximal productivity.

      p.5 (137): XP doesn't mandate a switching interval, and many XP teams use intervals greater than a couple of hours. We switch once or twice a day. Pairing doesn't require two programmers to do the work one programmer was previously doing; typically, they do more and better work, and simultaneously talk about the code and the environment. (So what the book claims is "obvious" about pairing is not only not obvious, it isn't even true.) In non-pair environments, teams typically spend a fair bit of time discussing the code in order to get a relatively poor collective understanding of it; in XP, that's built into the pairing process. The book mentions how pairing compensates for the lack of up-front design and design documentation, but not how it improves your communication about other issues --- issues that never get written down in most development teams of any kind.

      p. 6 (138) is clearly marked as fiction in its entirety --- it consists of one person's speculation about the potential difficulties of pairing with one other person or working in an open workspace, followed by a satirical song about pairing. The satirical song asserts that XP programmers would rather go home than switch pairs at the beginning of a new day (clearly absurd, the flip side of the apparently-serious "switch every two hours" strawman a couple of pages ago), and that they are unable to write code or watch unit tests run alone. In reality --- at least, on my XP team, in common XP practice, and in the XP literature --- we switch pairs at least once a day anyway, and we write spike code and run unit tests singleton (alone), except when we think we need to discuss something with someone. I guess you could still be "doing XP" if you always spiked and ran unit tests in pairs, but you wou

  145. Oh bunk. by Anonymous Coward · · Score: 0

    What turns you all off about pair programming is that it doesn't leave you with time for Slashdot at 1:46 pm on a Tuesday you lazy slacker.

    The real productivity from pair programming doesn't come from code review, but from the simple fact that two programmers at one keyboard are more productive writing code than two programmers in two cubicles at two keyboards surfing the web 98% of the time.

  146. Re:XP Programming by doomdog · · Score: 1

    Gotta love those "moderators" who automatically mark as Flamebait anything that doesn't agree with their myopic viewpoints...

  147. No More Debugging by cjs · · Score: 1

    The author of the book said in response to Ron Jeffries' review:

    Interestingly, the xprogramming.com review of XPR also contains one of the most blatant Extremo claims so far - that XP "is about never needing to debug." Yegads everyone, put down those pitchforks - our silver bullet has arrived!

    In my experience, Ron Jeffries is right: XP is about never needing to debug. I've been implementing some of the XP programming practices over the last few years, and the more I moved towards test-first coding, complete unit test coverage, and good automated customer tests, the less debugging I've had to do. For me, marathon debugging sessions are almost a thing of the past; perhaps once a year do I spend more than an hour debugging something, and no more than once a week, at most, do I spend more than fifteen minutes debugging something. I would never go back.

    In this respect, at least, the silver bullet has arrived.

    cjs

    --
    The world's most portable OS: http://www.netbsd.org.
  148. Re:XP Programming by archilocus · · Score: 1

    Actually I thought there were different degrees of XP. In moderate XP you get one computer between two developers, in really extreme programming it's one between three and in a small office in Cuppertino there's one company where they only have one machine in the office and everyone else uses an abacus. I think the fundamental principle of limiting developer's access to hardware is a brilliant idea, but then again I'm a tester :-)

    --

    Don't look back the lemmings are gaining on you