Stories
Slash Boxes
Comments

News for nerds, stuff that matters

Go Extreme, Programmatically Speaking

Posted by michael on Thu May 10, 2001 06:55 AM
from the two's-company dept.
raelity writes: "The O'Reilly Network is featuring An Introduction to Extreme Programming, by Chromatic (of Slashdot and PerlMonks fame). 'The central tenet is, "Find the essential elements of creating good software, do them all of the time, and discard everything else." Programmers should program and make schedule estimates. Managers should make business decisions. Customers should choose the features they want and rank them by importance.'"
This discussion has been archived. No new comments can be posted.
Go Extreme, Programmatically Speaking | Log In/Create an Account | Top | 259 comments (Spill at 50!) | Index Only | Search Discussion
Display Options Threshold:
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
(1) | 2 | 3 | 4
  • You forget testing by Anonymous Coward (Score:1) Thursday May 10 2001, @03:05AM
  • XP 2001 by Anonymous Coward (Score:1) Thursday May 10 2001, @03:12AM
  • Re:Experiences of extreme programming? by Anonymous Coward (Score:1) Thursday May 10 2001, @01:05PM
  • Re:XP Journals? (Score:3)

    by Anonymous Coward on Thursday May 10 2001, @06:50AM (#232705)
    This has been my experience with XP so far:

    1) Write unit tests before writing the actual class. This works great because I can initially lay out what I want my component to do, and if it changes then I just change the test then go change the component. When all the tests succeed the component works and I am done.

    2) I have not yet tried this extensively but I understand it in the XP sense. Pair programming is not one person programming with the other watching over their shoulder. It's two people working together on the same problem. Maybe one person has an idea they want to try so they take the drivers seat for awhile, during which the other person thinks of something and suggests it, or maybe he takes over the coding for awhile, explaining his idea to the other person all the while.

    3) Requirements gathering.. XP has a pretty good approach to gathering requirements and estimating the time it takes to do a task. I'm not an expert on this aspect so I won't go into it in detail, but it is basically the development team works with the customer to define what is required, then the team comes up with estimates, the customer then helps determine which features are top priority. I think this is pretty common in most processes, but XP so far is the only process I've really thoroughly explored.

    4) YAGNI+refactoring (you aren't gonna need it), basically XP states that you don't waste time planning and designing for things you do not presently need. If sometime in the future the software needs something you haven't accounted for, you refactor what you have to allow for the new features. This reduces bugs associated with programming for future requirements that you hardly understand anyway, that may or may not actually be needed. Then when you get to the time you actually need the thing, the requirements have probably changed or solidified and what you originally wrote is now useless.

    5) Refactor mercilessly and continuously. If you know what your writing is crap, and you know how to make it right, then stop writing crap and make it right, regardless of whether or not it requires a little backtracking. Read Martin Fowler's "Refactoring" for a good text on this.

    RE: Design -- Another thing I've noticed a lot of people saying is that XP completely throws out upfront design. This is not true, it just places less emphasis on it. I still do UML diagrams before I start coding, but it's not so that I can put it in a document and give it to my boss. It's more of a tool for me to play around with different ideas to come up with an approach to how I'm going to solve a problem. Once I think I understand it, I stop diagramming and start coding... if I get stuck, I go back and start diagramming again to kind of work through the problem in an abstract sense. For diagrams to publish, when my software is finished I will usually go back with a tool that will construct UML diagrams out of the actual code, then clean up the generated diagram, and that is what I end up publishing.
  • by Anonymous Coward on Thursday May 10 2001, @04:34AM (#232706)
    In another not-too-distant-life, I was a senior partner at a firm that championed Object-Oriented design and development. Over time, we found ourselves invited to spend time at more and more large IS organizations instituting our OO methodologies, and designing elaborate object models and artchitectures. I got to speak at big conferences in front of lots of CIOs and IS executives who were too busy trying to shake off their hangovers from all of the liquor our company had bought them the night before to get much more out of my talk than: "That guy sounds pretty smart. Better get his card."

    These large companies were paying each of us $3,000 per day - sometimes for months on end (don't get me started about the number of $200/head dinners and first class flights they paid for as well) to have us scratch our heads, and think high-minded thoughts about the true relationships between their domain objects. What were the core logical abstractions at work? What (oh yes!) patterns were at work here?

    At the time, we really felt like we were doing good work, and they were thrilled to embark on this road. The experience of most of these companies was a background of hard-to-maintain software and failed projects. What better spoke to the fear of the corporate bureaucrat than an approach that favored more up-front design. If they had failed in the past, it was becuase they hadn't planned effectively. Surely, these dirty just-out-of-college kids sitting in the programmer's chairs couldn't be the ones driving their enterprise software. They were much happier with the thought that a group of gurus in suits with the expensive PDAs and laptops somehow using the invisible hand of an abstract and expensive "design" effort to guide the ship.

    When these project collapsed under their own weight, as they inevitably would, we were always able to look ourselves in the mirror and know that it wasn't (thank god!) for lack of a proper design. They had obviously tried to cut corners on the implementation. They had tried to cut out features. They had tried to limit the scope of the effort. No one believed that all business objects needed to inherit from the "DirectedBusinessIntention" class. Whatever. Point was that somehow or another, after thousands or millions sunk into these design efforts, things always seemed to go off kilter.

    The best part was that when the management that had brought us in got canned along with us, they landed somewhere else and hired us again! Not only that, but they were a solid project reference!

    What a great gig. High pay, high living, no real deliverables (other than diagrams and charts). Want to keep us around so that we can point out why all of the implementation problems are a result of something other than our "design"? You bet! That'll be $3,000 / day.

    Today, I live in the world of XP. I roll up my sleeves. I write code. I see real design happen at whiteboards. I see designs get implemented. I see code being released to over a million customers EVERY TWO WEEKS.

    Critics point out how flawed XP must be becuase they cut out all of the "design". Surely, this software that's being hacked-together on the fly can't be robust - it must be a maze of hacks that falls apart at the first real requirements change. Yeah, yeah. That sermon's sitting somewhere gathering dust in my book on "Deisgn Patterns". It's right next to my Tufte books.

    Turns out that good programmers, much to my suprise, can turn out superior designs through the XP process. Abstractions get built when they become needed - not in anticipation of need. Needs change too quickly - you build only the ones that you need. It's a beautiful process. Design does happen, but it gets naturally prioritized with other requirements. You need to change a large piece of a system? Migrate to another platform? Abstract something to support new lines of business? Great. Figure out how to do it, make a case for it, and do it. Just do it in a couple of weeks.

    It works. It really does. It's produced the most beautiful and robust software that I've ever seen a large team produce. If there's any downside, it's that it requires really good programmers. It's not a methodology that is well-suited for a situation that supports people who are, for the lack of a better term, "vocational" programmers, or tool-users. All of the developers in an XP project must be able to tread deeply into all aspects of the system.

    So, it's no wonder why the people who still stand in the (nicely polished) shoes that I used to wear have a vested interest in attacking XP. Long-term upfront design efforts were (and still are for some) a lucritive gravy train. These folks will try to defend their position through fear-mongering (which works really well in big IS shops). Wherever there's doubt, there's always some extra money around to do some more evaluation. If the design-elite are really lucky, their sponsors will find some money to perform a methodology-evaluation! And who is really better suited to do a methodology evaluation than the design consultants? I wonder what it's results will show?

    Oh, while they're frittering away months evaluating methodologies and designing logical and software constructs which may not be needed and will likely never exist, we'll have gone through dozens of major releases of our software. It's feature-set will have evolved to provide tons of dramatic new features that make us actual revenue.

    It's not that I don't miss it. I really do. I honestly felt much of the time that I was better than everyone else becuase only I (and my elite friends) had the cranial mass required to really peer into the soul of our client's busienss and understand. That was a pretty good feeling. The $3,000/day and all of the free steaks and booze were okay too. Still, I'd not go back. It's just too darned rewarding to see my work being used by a worldwide audience - to see the ongoing transition from thought to feature happen in weeks instead of years (or never).

    If someone's telling you that XP is doomed becuase it is design-poor, just think about why they're telling that to you.
  • xp concerns by pohl (Score:1) Thursday May 10 2001, @06:24AM
  • by defile (1059) on Thursday May 10 2001, @04:16AM (#232708) Homepage Journal

    We don't do pair programming (I'd like to try it some day), but I do find that development is carried out much in the style of XP, especially on web sites.

    The customer identifies what they want. The programmer(s) then examines their demands and tells the customer how long each feature will take. You don't say "impossible", you say "we can do it, but that part will take 50x as long as everything else". Since they're paying, they decide what order they want to do things in, and what they can live without. ("oh, I had no idea this feature is so difficult. Nevermind."). Think 3 month plan.

    You deliver what they asked for. The customer reviews the deliverable and reports any bugs or whatever they don't like. This is determined by managers to either be new work or a mistake. Then, the next phase begins anew. Customer submits a list of features, you estimate time to complete. This time around, the features they're interested in may go in a totally different direction after they see what you've rendered.

    The biggest problem is that the codebase you're developing tends to gravitate towards many different goals, and thus design decisions you made early on may be irrelevant now. After every 4 or 5 development phases, the customer has to realize that you have to take 3 months and consolidate all of the code you've already written. Otherwise you proceed towards chaos.

    This seems to be how our sites go. They happen this way because the customer usually wants a site up immediately and can't wait 2-3 years for their grand vision to take place. It seems to work. They're making money, the code isn't terribly unmaintanable. We just kind of gravitated towards this naturally. I've only started hearing about XP very recently.

    You still reserve the right to tell customers a flat out no. You're not aimlessly following their demands. They should trust you (since they're paying you) and in this, they are usually understanding of what you say is a good and a bad idea. The managers are there to translate your statement from "Moron. That's a terrible idea. It'll never work" into something non-offensive.

  • Drucker by Stu Charlton (Score:1) Thursday May 10 2001, @11:20AM
  • XP makes customers take responsibility by Stu Charlton (Score:1) Thursday May 10 2001, @11:43AM
  • Re:Disappointed with O'Reilly by Stu Charlton (Score:1) Thursday May 10 2001, @12:29PM
  • Re:Uninformed comments by joss (Score:2) Thursday May 10 2001, @06:53AM
  • Re:Err... by tzanger (Score:2) Thursday May 10 2001, @06:48AM
  • Re:Let's just call in Drucker and Covey... by Tarrant (Score:1) Thursday May 10 2001, @04:05AM
  • Re:Not practical by Tarrant (Score:1) Thursday May 10 2001, @04:09AM
  • Re:The article assumes that the customer is perfec by Tarrant (Score:1) Thursday May 10 2001, @04:16AM
  • methodologies and stuff.... by getafix (Score:1) Thursday May 10 2001, @04:03AM
  • Re:XP by Peter La Casse (Score:1) Thursday May 10 2001, @08:02AM
  • Re:Let's just call in Drucker and Covey... by acroyear (Score:2) Thursday May 10 2001, @04:57AM
  • XP Code CAN be broken -- the quality of the code is reflective of the quality of the tests. If a test case doesn't cover some oddball input ("garbage in garbage out"), then it will never be tested and the potentially broken code will be delivered.

    But where XP can help recover from this is that the atmosphere for testing is still there. When an integration or enduser break happens, the inputs can then go back to the programmer to create a new test case and fix the code by making that test case do what should have been done.

    So its still possible to have broken XP code, but at the same time, the fixing of it should also be easy...
    --
    You know, you gotta get up real early if you want to get outta bed... (Groucho Marx)

  • Re:Err... by Ed Avis (Score:2) Thursday May 10 2001, @06:46AM
  • Re:Programmers write the Unit Tests? by Cederic (Score:1) Thursday May 10 2001, @10:58PM
  • Re:Programmers write the Unit Tests? by Cederic (Score:1) Thursday May 10 2001, @11:01PM
  • Re:One way of Pair Programming by Cederic (Score:2) Thursday May 10 2001, @04:58AM
  • Re:My Take by Cederic (Score:2) Thursday May 10 2001, @10:48PM
  • by Cederic (9623) on Thursday May 10 2001, @04:34AM (#232726)

    >> the documentation I'm producing is very well recived by the development team.

    Ok, you scared the hell out of me.

    I hate it when you get a combination of
    - a designer who doesn't developer and
    - developers who don't design

    Tht developers must be involved in the design. They need to be talking about it, thinking through it, and ultimately making the decisions about it. If they're not, they wont buy into it, they have less chance of understanding it, and the likelihood is a less well written piece of software.

    Obviously keep someone around who has good design skills. Make them available as a tutor, a guide, a reviewer or a consultant to the developers. But let the developers create the design, reach concensus on the best approach and then go ahead and write it.

    Speaking personally about the project I am just finishing, the developers on the project thought through the architecture, bounced a few ideas off the other users of the final solution (it's a technology solution, so good integration was an essential) and then we sat down and thought about the OO design of the main software deliverable. And a couple of hours later we had a piece of paper with pencil scrawls on it, which got pinned on to the board of our pair programming area.

    That piece of paper is still there 3 months later, still describes 7 of the 8 major components in the system, depicts their relationship accurately enough that it's not technically wrong, and we're only just next week going to redraw the diagram so we can hand the code over to the support team.

    Now I'm not pretending that the only design we did was on a single piece of paper. But the rest of the design was discussed initially in the pair doing the programming on that area, and if necessary by the team as a whole. There were a whole ton of issues that were resolved in this way, including performance considerations, security concerns, and a lot of the run of the mill "so just what does this object do?" type questions. And swift decisions were made, only one of which has so far proved wrong. [That decision was how on much functionality to include in a base class. We abstracted too far and need to refactor a base class and its immediate specialisation to create a single class - hardly a major design flaw.]

    Incidentally the system isn't the simplest I've ever written - securely handling financial transactions in a time critical environment for several hundred concurrent users.

    So to get back on topic, had we been developing to documentation provided by another designer, I'd have quit the company by now and we wouldn't have any software to deliver. Instead, by using experienced software engineers to assist and guide and making sure the development team knew their design patterns, we have created a fine piece of software. Trust your developers, they're better than you think.

    ~Cederic
  • by Cederic (9623) on Thursday May 10 2001, @04:53AM (#232727)

    Programmers should always write unit tests. Most don't (in my experience) but they should.
    However, in XP a programmer never tests his own code. TWO programmers test THEIR code. Which means that while one is writing it, the other is sat there thinking of other ways to break it. And at the unit test level, this is highly effective.

    System level testing (I'm going to avoid the "what is system/integration/uat/etc testing" debate) still needs to be done, and should not be done by the programmer responsible for the code. But in XP those tests are determined and designed by the customer, not the developer.

    ~Cederic
  • Re:My Take (Score:5)

    by Cederic (9623) on Thursday May 10 2001, @04:50AM (#232728)

    A brief response:

    1. Irrelevant. Describe the methodology and what it means and achieves. Call it XP right through this. Sell it well enough and when they do find out what XP stands for, they'll only find it amusing, not off-putting.

    2. We should all be doing these things, but I've never seen them done properly by someone that hasn't read XP books. And I don't know many people that have.

    3. I am continually annoyed, scared and depressed by the comments on designing up front. For $40m projects doing air traffic control then sure, you want some pretty sweet documentation. But for 98% of business systems you need enough to get to your first deliverable. And that's not much. The design needs to accommodate the immediate requirements, and if you follow design patterns and don't actually close off expansion capability, then you can adapt to the changes needed for further deliverables. XP isn't about diving on in and coding, it's about thinking how to deliver what is needed. And if future capabilities aren't needed now, just don't spend time writing them - it's quick, cheap and easy to change code.

    4. Well written code is far more useful to me than bad documentation. And in a business environment, working on code more than a couple of months old, ALL documentation is bad documentation - it is invariably out of date, imprecise and often irrelevant. Whereas the code tells you very accurately what is happening.
    This doesn't mean the occasional class diagram or process flow wont help, but any member of the development team should be capable of drawing them up on a whiteboard without prompting, and that's the correct place for them. Documentation that isn't updated but is referred to will cause more bugs than having none in the first place.
    Bear in mind of course that if you're properly following XP, and you write your unit tests to the same standard that you adhere to for your live code, then the unit tests provide a fantastic resource for seeing example usage of the live code. And examples are immensely more useful than documents.

    5. You put forward a very negative and close-minded view. I'm often irritable, I swear at my computer let alone other people, I am very opinionated and disagreeable and I love an argument. Worryingly, so is the guy I've been pairing with for the past few weeks. And yet we're now turning out code much better than either of us managed individually, and we're working very efficiently. And we're also very keen to continue pairing because there are so many benefits it would be silly to stop. If someone's personality prevents them pairing them it's almost certainly going to prevent them working with the team as well, in which case most businesses would be better off with someone else - a good team provides more than the sum of its components.

    I'm sure a lot of people will keep using XP, and that a lot wont go near it. And I'm convinced that many of the practices should be kept. But I think discounting it because you don't like the name and are scared of pairing with someone else is highly unprofessional and closed minded.

    ~Cederic
  • The sleep of reason(design) begets monsters by crovira (Score:2) Thursday May 10 2001, @03:16AM
  • Extreme programming is a process not a result by crovira (Score:2) Thursday May 10 2001, @04:24AM
  • Re:XP by KyleCordes (Score:1) Thursday May 10 2001, @04:47AM
  • Re:XP and Change Control by KyleCordes (Score:1) Thursday May 10 2001, @05:06AM
  • Ok, then why not try XP? by ArthurDent (Score:2) Thursday May 10 2001, @04:27AM
  • Re:The sleep of reason(design) begets monsters by smileyy (Score:2) Thursday May 10 2001, @07:14AM
  • Re:What exactly is extreme about it? by smileyy (Score:2) Thursday May 10 2001, @08:01AM
  • Re:Uninformed comments by Simes (Score:1) Thursday May 10 2001, @11:21PM
  • Re:My Take by Samrobb (Score:1) Thursday May 10 2001, @09:38AM
  • Re:bang the drum slowly by Samrobb (Score:1) Thursday May 10 2001, @10:04AM
  • Re:My Take by Samrobb (Score:1) Thursday May 10 2001, @01:09PM
  • Ever work for an ISP? by Etriaph (Score:1) Thursday May 10 2001, @04:36AM
  • Re:Understand before you speak by Skapare (Score:2) Sunday May 13 2001, @08:48PM
  • Re:XP is the most stupid thing sinse... by Skapare (Score:2) Sunday May 13 2001, @08:52PM
  • Re:XP is the most stupid thing sinse... by Skapare (Score:2) Sunday May 13 2001, @08:55PM
  • Re:Experiences of extreme programming? by rakjr (Score:2) Thursday May 10 2001, @05:27AM
  • Re:XP code can never be broken! by Amanset (Score:2) Thursday May 10 2001, @04:04AM
  • Re:My Take by weink (Score:1) Thursday May 10 2001, @04:49AM
  • Re:Understand before you speak by weink (Score:1) Thursday May 10 2001, @04:57AM
  • by mTor (18585) on Thursday May 10 2001, @03:17AM (#232748)
    It's just way too weird... guy publishes on slashdot and on O'Rilley + has an open source project called Jellybean but he never uses his real name?

    What's even weirder is that even his resume [wgz.org] doesn't contain his real name!

    Unless this person legally changed his name to 'chormatic', this is just a bit too eccentric for my taste. Anyone got some insight?

    PS: I'm asking this because I'd like to know who exactly am I criticizing when I'm placing comments on someone's reviews.
  • Re:XP Journals? by Black Parrot (Score:1) Thursday May 10 2001, @03:54AM
  • Re:Oh yes it can...Re:XP code can never be broken! by Black Parrot (Score:1) Thursday May 10 2001, @04:05AM
  • Re:Oh yes it can...Re:XP code can never be broken! by Black Parrot (Score:1) Thursday May 10 2001, @04:11AM
  • Re:References by Black Parrot (Score:2) Thursday May 10 2001, @04:02AM
  • Why have I never heard of this before? by flimflam (Score:2) Thursday May 10 2001, @07:33AM
  • Take a look at his home page now... by flimflam (Score:2) Thursday May 10 2001, @07:44AM
  • Re:Why have I never heard of this before? by flimflam (Score:2) Thursday May 10 2001, @07:49AM
  • Process instilled modeling wrong? Balogna! by sleight (Score:1) Thursday May 10 2001, @07:05AM
  • Re:The sleep of reason(design) begets monsters by loon (Score:2) Thursday May 10 2001, @04:46AM
  • Re:XP by iapetus (Score:2) Thursday May 10 2001, @04:08AM
  • Re:XP by iapetus (Score:2) Thursday May 10 2001, @04:11AM
  • Re:XP by iapetus (Score:2) Thursday May 10 2001, @06:28AM
  • Re:XP by iapetus (Score:2) Thursday May 10 2001, @07:11AM
  • by iapetus (24050) on Thursday May 10 2001, @04:23AM (#232762) Homepage
    Man, that's a badly designed book.

    The book wasn't designed. He just kept adding chapters until it passed all the tests. :^)

  • Here's what really happens... by ConceptJunkie (Score:2) Thursday May 10 2001, @04:43AM
  • Trimming at the edges by dmorin (Score:2) Thursday May 10 2001, @05:13AM
  • Is XP a recipe for bad software? by dublin (Score:2) Thursday May 10 2001, @06:53AM
  • Re:Err... by ianezz (Score:1) Thursday May 10 2001, @09:02AM
  • Re:AAAARRRRRGHHHH!!!!! by Salamander (Score:2) Thursday May 10 2001, @05:11AM
  • Re:My perspective on XP by Salamander (Score:2) Thursday May 10 2001, @05:28AM
  • Re:My perspective on XP by Salamander (Score:2) Thursday May 10 2001, @07:22AM
  • Re:My perspective on XP by Salamander (Score:2) Thursday May 10 2001, @12:11PM
  • Re:My perspective on XP by Salamander (Score:2) Thursday May 10 2001, @05:00PM
  • Slashcode process? by segmond (Score:2) Thursday May 10 2001, @05:16AM
  • For more in-depth information: by H-Monk (Score:1) Thursday May 10 2001, @05:24AM
  • Re:Let's just call in Drucker and Covey... by Chief Crazy Chicken (Score:1) Thursday May 10 2001, @04:59AM
  • The Only Response You Need To Read by mvc (Score:1) Thursday May 10 2001, @07:01AM
  • Re:Also forgets about REFACTORING by mvc (Score:1) Thursday May 10 2001, @09:34AM
  • Re:Programmers write the Unit Tests? by toofani (Score:1) Thursday May 10 2001, @01:53PM
  • Re:XP by toofani (Score:1) Thursday May 10 2001, @02:10PM
  • Re:What exactly is extreme about it? by toofani (Score:1) Thursday May 10 2001, @02:18PM
  • Re:Let's just call in Drucker and Covey... by catfood (Score:1) Thursday May 10 2001, @09:14AM
  • Re:Uninformed comments by catfood (Score:1) Thursday May 10 2001, @09:23AM
  • Re:Err... by spencerogden (Score:1) Thursday May 10 2001, @03:43AM
  • Re:The sleep of reason(design) begets monsters by spencerogden (Score:1) Thursday May 10 2001, @03:51AM
  • Re:Whats the climate on their planet? by forii (Score:1) Thursday May 10 2001, @06:53AM
  • Re:Err... by dubl-u (Score:2) Thursday May 10 2001, @06:50AM
  • Get a proxy by dubl-u (Score:2) Thursday May 10 2001, @07:13AM
  • Sufficient unto the day are the troubles thereof by dubl-u (Score:2) Thursday May 10 2001, @07:41AM
  • Re:Let's just call in Drucker and Covey... by dubl-u (Score:2) Thursday May 10 2001, @08:02AM
  • Re:AAAARRRRRGHHHH!!!!! by dubl-u (Score:2) Thursday May 10 2001, @08:17AM
  • Re:This seems to be what we're doing.. by dubl-u (Score:2) Thursday May 10 2001, @08:21AM
  • Re:My Take by sleeperservice (Score:1) Thursday May 10 2001, @06:39AM
  • bang the drum slowly by joq (Score:2) Thursday May 10 2001, @03:13AM
  • Re:Estimates: Sure we do! by Corrado (Score:1) Thursday May 10 2001, @10:27AM
  • References (Score:5)

    by Einar Rune Haugnes (65150) on Thursday May 10 2001, @03:15AM (#232794)
    XP is an interesting (and controversial) methodology that has proven its usefulness in real projects, and it is nice to see it covered on slashdot. It is gaining acceptance in the software industry. One indication of this is the number of talks on XP at the SD2001 West conference in San Jose 8-12 April.

    However, decent references are sorely missing from this story, like for example
    the book by Kent Beck [fatbrain.com] and one of the more comprehensive web sites, www.xprogramming.com [xprogramming.com] by Ron Jeffries, with links to a lot of other resources on XP.

  • Re:You have mistaken the concept (OT) (New thread) by ecd (Score:1) Thursday May 10 2001, @06:02PM
  • Why is it by dimator (Score:2) Thursday May 10 2001, @03:28AM
  • Re:My perspective on XP by 0xA (Score:2) Thursday May 10 2001, @04:57AM
  • by 0xA (71424) on Thursday May 10 2001, @04:08AM (#232798)
    There were a few people at my last employer who were pretty behind XP. We had a few people into to talk about it and they did some interesting presentations for us. I thought it was pretty interesting but I don't really want to apply it.

    I did like the idea of generating a test case and coding to it. I think that in a lot of cases regular regression testing can save you big hassles down the raod.

    What I didn't like was the "design as you go" concept. I can't imagine this doing anything but biting you in the ass, lots, really hard. A lack of design and forethought can only create a huge mess as soon as you try and extend anything.

    I have a theory were this idea comes from. A lot of the design work that goes on in projects is done very poorly. The design as you go approach is a reaction to it. Its' pretty common to have a design team that spins its' wheels, goes off into rediculous tangents and generates reams of paper without seeming to acomplish anything tangible. This is really a common thread in my experience and a lot of other people's I've talked about it with. I think this happens because design work is really hard, its' way too easy to get stuck. Many of the people that work on design teams or as application arcitects have no buisness filling that role.

    Good application design is really its' own disipline. I'm working as a design guy in the very early stages of a project right now, the first time I've done this kind of work. To my own surprise I seem to be pretty good at it. I'm able to keep the work moving, hitting the milestones I've set for myself on time and the documentation I'm producing is very well recived by the development team.

    I think its' unfortunate that this approach to design is becomming more popular. I think if people made more of an effort to understand the design phase of a project and get the right people working on it they'd be way better off. To many really bright programmers get stuck doing this kind of work as they gain more experience and some of them just aren't any good at it.
  • Re:Err... by timcuth (Score:1) Thursday May 10 2001, @10:57AM
  • Re:Err... by timcuth (Score:1) Thursday May 10 2001, @11:02AM
  • XP Journals? by |bazop| (Score:1) Thursday May 10 2001, @03:10AM
  • Re:XP by Spankophile (Score:2) Thursday May 10 2001, @11:44AM
  • Re:Err... by crath (Score:1) Thursday May 10 2001, @10:57AM
  • Re:My Take by crath (Score:1) Thursday May 10 2001, @11:11AM
  • Re:AAAARRRRRGHHHH!!!!! by crath (Score:1) Thursday May 10 2001, @11:30AM
  • Re:Err... by crath (Score:2) Thursday May 10 2001, @03:35AM
  • Re:Quick Q: Who is chromatic? by Kidbro (Score:1) Thursday May 10 2001, @06:53AM
  • by DebtAngel (83256) on Thursday May 10 2001, @04:10AM (#232808) Homepage
    Is anybody else sick and fscking tired of reading about Extreme Programming on SlashDot.

    http://slashdot.org/search.pl?query=Extreme+Prog ra mming

    Variations on the same article over and over and over and over and over again. I get the message already, and I'm not going to switch just because it's advertised here three times a week, so kindly *stop it already*.
  • Err... (Score:5)

    by D. Mann (86819) on Thursday May 10 2001, @03:13AM (#232809) Homepage
    "Find the essential elements of creating good software, do them all of the time, and discard everything else."


    So, they're saying, "Figure out what's good and do it," huh? Well, it's good advice, but isn't it pretty much what we're supposed to in the first place?

    I've never had someone come up to me and say "Write good code!"
    I always thought that the "write good code" statement was implicit. If I'm writing code in any serious fashion, it's going to be the best I can do.

    Maybe everyone else has been writing bad code intentionally all this time... They just needed to be told to do a good job! "Well, no one ever SAID 'Write good code' to me..."
  • Re:Uninformed comments by Amokscience (Score:1) Thursday May 10 2001, @06:50AM
  • Re:Not practical by Amokscience (Score:1) Thursday May 10 2001, @09:13AM
  • XP code *can* be broken if the test is broken by dwalsh (Score:1) Thursday May 10 2001, @08:02AM
  • Re:Err... by bbutton (Score:1) Thursday May 10 2001, @06:10AM
  • Re:bang the drum slowly by bbutton (Score:2) Thursday May 10 2001, @03:50AM
  • Re:Err... by Pennywise (Score:2) Thursday May 10 2001, @03:40AM
  • Re:XP by Borogove (Score:1) Thursday May 10 2001, @03:25AM
  • Re:bang the drum slowly by Borogove (Score:1) Thursday May 10 2001, @03:32AM
  • Estimates: Sure we do! by DrCode (Score:1) Thursday May 10 2001, @08:15AM
  • Working in pairs... by DrCode (Score:1) Thursday May 10 2001, @08:28AM
  • My Take (Score:3)

    by Anonymous Codger (96717) on Thursday May 10 2001, @03:51AM (#232820)
    We have an XP enthusiast at my company - he's pushing it hard. My reaction so far:

    1. Stupid, stupid name. Guaranteed to turn off management and mature programmers. Extreme sports = risky and dangerous. Extreme Programming has the same connotation.

    2. Some aspects are just good development practices - frequent unit testing, constant customer feedback, code review - that we should all be doing anyway.

    3. Some aspects are worrysome, especially the idea that one shouldn't design up front. As far as I'm concerned, we should always start with a thorough requirements spec and design, but we should always be ready to make changes to the spec and design in response to customer feedback. XP wants us to develop requirements and design as we go - to skip design and jump to the change process. That might work on small projects, but on anything non-trivial it's a recipe for disaster.

    4. Another worrysome aspect - XP holds that code should be self-documenting and that other documentation isn't necessary. I've been programming for more years than I care to admit here and I've never seen code that was truly self-documenting. I saw some code recently that was written by someone using XP methodologies and it was as obtuse as any code I've ever seen. I pity anyone who has to go in and maintain XP code a year after it was written.

    5. Finally, pair programming might work for some people, but for others it will be a productivity and morale killer. It depends on the personalities of those involved. Personally, I can't think with someone looking over my shoulder.

    XP looks to me like the next management/development/whatever fad. It will make a big noise for awhile, lots of projects will be started using it, lots of projects will fail, and in the long run, some of the good parts of it (unit testing, feedback, etc.) will be added to our utility belts and the rest discarded as it should be (esp. the stupid name!).
  • Re:Err... by Handyman (Score:1) Thursday May 10 2001, @05:05AM
  • You have mistaken the concept by Steeltoe (Score:1) Thursday May 10 2001, @04:43AM
  • Re:Good advice by Steeltoe (Score:1) Thursday May 10 2001, @05:12AM
  • Disappointed with O'Reilly by Martin S. (Score:2) Thursday May 10 2001, @08:32AM
  • Re:Groundhog Day by Martin S. (Score:2) Thursday May 10 2001, @08:41AM
  • In my experience managing software developers the difficulty is this: after even 10 years writing software, most programmers have no idea how long it will take them to implement a feature specification. At a higher level, most developers don't have any idea how long it will take them to develop the feature spec. in the first place. Go another step and ask them to write a test plan, and you'll discover that most developers don't even know what a test plan is.

    I think these comments reflection on your [lack of] Management ability rather than your programmers [lack of] ability. If your Engineers are consistently getting their estimates this wrong, YOU must be at fault.

    I can imagine the scenario; after reading the email request from your customer, you print it out and walk over to the guy's desk, hand over the print out and ask how long; you stand over him whilst he reads the email and when he gazes at the roof in though, you hit them with it. How Long ? He um's and arh a little and you repeat a question. They respond, with a figure they know will make you go away.

    As you walk away, your think to yourself; these guy's always get it Wrong. So you think to your self, no he can't do it that quickly, so you double (or triple) the estimate and enter in your plan (I'm giving you the benefit of the doubt and assuming you have a plan). Some times you think it's too long; the Customer will never go for it, so lets half it, and enter that in the plan. So not only have you not given the engineer a reasonable chance to consider the question, you ignored his response.

    Result, your programmers only ever make the plan by accident, and you believe programmers cannot estimate.

    My team, (of which I'm the senior Engineer, not the Manager) has just made three Project plans, with time to spare and exceeded the requirement (by including lower priority deferred requirements). Now this is not because I'm (or anybody else) is some super coding or team leading guru.

    It is not even difficult, it just takes discipline. Firstly we clarify and digest the requirements. We chew over the requirements, and a few implementation details, to make sure we understand them. We conduct and document the design at high level. We can usually count the function points, by now, this gives a raw estimate. We factor in detailed design, testing and integration, based on the number of function points to produce an highly accurate estimate. We factor in a contingency; all this takes a couple of days. The customer gets estimate they can believe. They even start to really listen to you, and trust your judgement.

  • Re:bang the drum slowly by Fjord (Score:1) Thursday May 10 2001, @05:20AM
  • Re:Programmers write the Unit Tests? by Fjord (Score:1) Thursday May 10 2001, @02:36PM
  • Re:bang the drum slowly by Fjord (Score:2) Thursday May 10 2001, @05:31AM
  • Re:Programmers write the Unit Tests? by Fjord (Score:2) Thursday May 10 2001, @05:47AM
  • Re:Also forgets about REFACTORING by Fjord (Score:2) Thursday May 10 2001, @05:58AM
  • Re:Here's what really happens... by Fjord (Score:2) Thursday May 10 2001, @06:30AM
  • Re:XP by Fjord (Score:2) Thursday May 10 2001, @06:41AM
  • Fuck Efficiency by Jart (Score:1) Thursday May 10 2001, @07:39AM
  • Re:Why have I never heard of this before? by changos (Score:1) Thursday May 10 2001, @07:35AM
  • Many Assumptions are they right by follower (Score:1) Thursday May 10 2001, @04:34AM
  • Working in pairs doesn't work by Coward Anonymous (Score:1) Thursday May 10 2001, @07:56AM
  • Re:What is XP? by Hikage (Score:1) Thursday May 10 2001, @04:44AM
  • Re:The sleep of reason(design) begets monsters by Hikage (Score:1) Thursday May 10 2001, @05:17AM
  • Re:The article assumes that the customer is perfec by Hikage (Score:1) Thursday May 10 2001, @05:45AM
  • Re:Many Assumptions are they right by Hikage (Score:1) Thursday May 10 2001, @06:18AM
  • Re:Dangerous. by Hikage (Score:1) Thursday May 10 2001, @06:53AM
  • Re:The sleep of reason(design) begets monsters by Hikage (Score:1) Thursday May 10 2001, @07:17AM
  • Re:My Take by Hikage (Score:1) Thursday May 10 2001, @07:33AM
  • Re:XP Tastes Great and is Less Filling by Hikage (Score:1) Thursday May 10 2001, @09:16AM
  • Re:My Take by Hikage (Score:1) Thursday May 10 2001, @10:22AM
  • Re:Programmers write the Unit Tests? by Hikage (Score:2) Thursday May 10 2001, @04:58AM
  • Not quite as facile as you'd think by andy@petdance.com (Score:2) Thursday May 10 2001, @05:16AM
  • Re:Quick Q: Who is chromatic? by andy@petdance.com (Score:2) Thursday May 10 2001, @07:16AM
  • Re:Working in pairs... by BinxBolling (Score:1) Thursday May 10 2001, @06:27PM
  • The problem extreme programming seeks to solve by Animats (Score:2) Thursday May 10 2001, @08:17AM
  • Re:My perspective on XP by paranoic (Score:1) Thursday May 10 2001, @05:08AM
  • Re:You have mistaken the concept by e-Motion (Score:1) Thursday May 10 2001, @05:59AM
  • Programmer Psychology by Vingborg (Score:1) Thursday May 10 2001, @07:18AM
  • My Customer's prioritized list by Lozzer (Score:1) Thursday May 10 2001, @03:08AM
  • Re:Experiences of extreme programming? by jsin (Score:2) Thursday May 10 2001, @04:56AM
  • Experiences of extreme programming? by Smuffe (Score:1) Thursday May 10 2001, @03:04AM
  • XP code can never be broken! by mindpixel (Score:2) Thursday May 10 2001, @03:18AM
  • Re:Why is it by SandsOfTime (Score:1) Thursday May 10 2001, @08:49AM
  • I'm already EXTREME by derrickh (Score:1) Thursday May 10 2001, @04:29AM
  • Re:XP 2001 by HiQ (Score:1) Thursday May 10 2001, @03:44AM
  • Re:bang the drum slowly by HiQ (Score:2) Thursday May 10 2001, @03:41AM
  • What is XP? by cr@ckwhore (Score:1) Thursday May 10 2001, @04:02AM
  • Answer by jargoone (Score:1) Thursday May 10 2001, @07:42AM
  • Re:XP code can never be broken! by jargoone (Score:1) Thursday May 10 2001, @07:57AM
  • Re:Programmers write the Unit Tests? by cfxlman (Score:1) Thursday May 10 2001, @07:21AM
  • Re:Program in Pairs?!? by cfxlman (Score:1) Thursday May 10 2001, @07:33AM
  • Where to get more information by cfxlman (Score:1) Thursday May 10 2001, @07:46AM
  • Re:Is XP a recipe for bad software? by cfxlman (Score:1) Thursday May 10 2001, @08:09AM
  • Re:bang the drum slowly by faichai (Score:1) Thursday May 10 2001, @03:32AM
  • Re:Quick Q: Who is chromatic? by Alakaboo (Score:1) Friday May 11 2001, @12:18AM
  • Re:bang the drum slowly by bigbrett (Score:1) Thursday May 10 2001, @03:33AM
  • Re:Uninformed comments by ameoba (Score:1) Thursday May 10 2001, @05:47AM
  • Think of the poor tuples! by ahem (Score:1) Thursday May 10 2001, @04:06AM
  • Re:XP code can never be broken! by j-pimp (Score:1) Thursday May 10 2001, @03:36AM
  • Re:XP by j-pimp (Score:1) Thursday May 10 2001, @03:57AM
  • Re:XP by saider (Score:1) Thursday May 10 2001, @06:39AM
  • OSS Quality by Reality Master 101 (Score:2) Thursday May 10 2001, @06:22AM
  • Re:XP code can never be broken! by plumby (Score:1) Thursday May 10 2001, @06:56AM
  • Re:XP code can never be broken! by plumby (Score:1) Tuesday May 15 2001, @12:22AM
  • Re:The sleep of reason(design) begets monsters by plumby (Score:2) Thursday May 10 2001, @06:09AM
  • Re:Not practical (Score:3)

    by plumby (179557) on Thursday May 10 2001, @04:36AM (#232882)
    So, when the inevitable feature request comes along, the 'extreme programmer' spends the next week rewriting previous code to handle the new feature, while the rest of us just stick the button in there, add a function here and there, and reuse a lot of the functions we've already written, thus we finish it in a matter of hours rather than days.

    Why would the non-XP code already have these functions in place, but the XP code wouldn't? If there was a previous requirement to do similar tasks then the code would be in place in XP. If there wasn't a previous requirement, why did you waste time adding it, rather than shipping what they needed earlier? How much other code is in your software that you don't need yet?

    It's possible that the functions were more tightly bound into specific objects rather than in nice class hierachies in the XP version, but if the unit tests are in place for the original functions, it shouldn't take too long to refactor the design to make it more generic (by abstacting out the functions that you are actually going to be using in two places rather than ones that you think might be needed in the future). This may sometimes take longer than the equivilent change in a system that has had major design done up front, but in my experience, the that's more than balanced out by the huge savings in upfront design time and writing these functions that someone might use in the future (but usually don't).
  • Re:The article assumes that the customer is perfec by Hairy1 (Score:1) Thursday May 10 2001, @11:25AM
  • Re:Understand before you speak by DA_MAN_DA_MYTH (Score:1) Thursday May 10 2001, @07:48AM
  • by caranmir (192788) on Thursday May 10 2001, @07:01AM (#232885)

    >> I'd like to know who exactly am I criticizing...

    Why does that matter? Your citicism of TPKAC's 1 work should not be any different simply because you can pin a face to the moniker. If you disagree with chromatic's work, then do so. Remember, the criticism is only effective when it's offered in response to what a person does, rather than who they are.

    Clearly, chromatic values his privacy for reasons that have not been documented publically. I can think of several reasons why this might be the case.

    • He could be a celebrity in certain circles and wants his technical contributions valued on their own merit or without the baggage of his real world identity.

    • He might work for an agency unpopular in Hacker circles, e.g. the NSA, FBI, CIA, DOD, or other TLA organizations.

    • He could be a fugitive from a legal authority or extralegel agencies.

    • He's been the victim of identity theft and wishes to never repeat that experience.

    • He knows there are some real weirdos online and doesn't want to open his family or home life to the more aggressive wackos.

    • Maybe he thinks it doesn't really matter who he is.

    • He could be a conspiracy theorist waiting for the MIB at FEMA to trigger the NWO.

    • Maybe he's small furry green creature from Alpha Centauri. Or maybe he's Hitler's son.

    (And, yes, I'm assuming that chromatic is a he, since our language doesn't have an appropriate genderless pronoun. He could be a she; it's happened before.)

    Regardless, I strongly suspect that chromatic wants you to focus on what he does, not who he is.

    Cope.

    --c

    Footnote 1 - The Person Known As Chromatic.

  • Re:XP by scott1853 (Score:2) Thursday May 10 2001, @05:29AM
  • Re:Take a look at his home page now... by i0lanthe (Score:1) Thursday May 10 2001, @04:35PM
  • Re:Not practical by dgroskind (Score:1) Thursday May 10 2001, @04:11AM
  • Re:My perspective on XP by dgroskind (Score:1) Thursday May 10 2001, @05:10AM
  • Re:My perspective on XP by dgroskind (Score:1) Thursday May 10 2001, @10:44AM
  • Re:My perspective on XP by dgroskind (Score:1) Thursday May 10 2001, @04:05PM
  • XP by IngramJames (Score:1) Thursday May 10 2001, @03:01AM
  • Re:XP by IngramJames (Score:1) Thursday May 10 2001, @05:03AM
  • Re:References by IngramJames (Score:1) Thursday May 10 2001, @05:10AM
  • Re:XP code can never be broken! by IngramJames (Score:1) Thursday May 10 2001, @05:19AM
  • Re:XP code can never be broken! by IngramJames (Score:1) Thursday May 10 2001, @07:46AM
  • Re:Buzzword compliant? by IngramJames (Score:2) Thursday May 10 2001, @03:03AM
  • Re:Good advice by tswinzig (Score:2) Thursday May 10 2001, @12:27PM
  • Question about extreme programming by dynamo_mikey (Score:1) Thursday May 10 2001, @07:59AM
  • Re:XP by stremo (Score:1) Thursday May 10 2001, @12:17PM
  • Re:XP by stremo (Score:1) Thursday May 10 2001, @12:21PM
  • Re:Programmers write the Unit Tests? by stremo (Score:1) Thursday May 10 2001, @02:06PM
  • Re:My perspective on XP by stremo (Score:1) Thursday May 10 2001, @02:11PM
  • Re:Uninformed comments by stremo (Score:1) Thursday May 10 2001, @02:26PM
  • Re:Dangerous. by stremo (Score:1) Thursday May 10 2001, @02:31PM
  • Re:Experiences of extreme programming? by sfe_software (Score:1) Thursday May 10 2001, @06:38AM
  • Not practical by Arethan (Score:2) Thursday May 10 2001, @03:27AM
  • by Poodleboy (226682) on Thursday May 10 2001, @03:20AM (#232908)
    Oh no it's finally happened... Software literature has become facile and meaningless as management pulp. The central tenets here are tautological: the central tenet of making good soup is to to find the essential elements of good soup and use them. Well, duh. For anyone who learned something from the advice about programmers programming, managers managing and customers choosing, I have this amazing revelation: it gets dark at night. Trouble doesn't come when organizations don't do this (obvious) stuff. The problems are the boundary cases... Clearly program scheduling and product positioning are 'business decisions,' but where are the lines between these and task estimates and customer feature priorities? And all this promoted by O'Reilly... Maybe they intend to start up a self-help line of books: "12 Steps to Programming Your Way to a Slimmer Healthier You For Dummies."
  • The article assumes that the customer is perfect. by Futurepower(tm) (Score:2) Thursday May 10 2001, @03:40AM
  • Re:You forget testing by bmongar (Score:1) Thursday May 10 2001, @03:53AM
  • Re:XP Journals? by MaxQuordlepleen (Score:1) Thursday May 10 2001, @05:26AM
  • Re:Uninformed comments by KagakuNinja (Score:1) Thursday May 10 2001, @12:23PM
  • Whats the climate on their planet? by Shivetya (Score:1) Thursday May 10 2001, @03:48AM
  • Extreme prototyping by dbowden (Score:2) Thursday May 10 2001, @03:27AM
  • Groundhog Day by Plum (Score:1) Thursday May 10 2001, @05:35AM
  • Which books to read? by imipak (Score:1) Thursday May 10 2001, @06:32AM
  • Re:Good advice by imipak (Score:1) Thursday May 10 2001, @07:07AM
  • Re:The sleep of reason(design) begets monsters by FatHogByTheAss (Score:1) Thursday May 10 2001, @06:28AM
  • Re:You need to learn what XP is about by alansingfield (Score:1) Thursday May 10 2001, @11:10AM
  • Re:Err...Fast and Cheap and good via backdoor. by refactored (Score:2) Thursday May 10 2001, @12:10PM
  • What exactly is extreme about it? by boltar (Score:1) Thursday May 10 2001, @06:01AM
  • You need to learn what XP is about by slaytanic killer (Score:1) Thursday May 10 2001, @03:44AM
  • eXtreme Programming by slaytanic killer (Score:2) Thursday May 10 2001, @03:17AM
  • Re:OSS Quality by Pooua (Score:1) Friday May 11 2001, @11:24AM
  • Dangerous. by dasmegabyte (Score:2) Thursday May 10 2001, @05:30AM
  • Re:Err... by Kragg (Score:1) Thursday May 10 2001, @03:52AM
  • Re:Err... by Kragg (Score:2) Thursday May 10 2001, @03:32AM
  • Re:XP a threat to the "Design Elite" by MSBob (Score:1) Thursday May 10 2001, @03:39PM
  • Re:Uninformed comments by MSBob (Score:2) Thursday May 10 2001, @06:04AM
  • Re:Uninformed comments by MSBob (Score:2) Thursday May 10 2001, @04:10PM
  • by MSBob (307239) on Thursday May 10 2001, @04:38AM (#232931)
    I've read the first fifty posts or so and all those "insightful" comments so far is all pile of shite strictly speaking. Everone's so confused I don't even know where to begin.

    Most comments are pointing out that XP is yet another management buzzword or it's just stating the obvious. Well, it's neither. XP stands against all the principles touted by the waterfall model or the Rational Unified process and shite like that. XP is basically saying "toss out that copy of Rational Rose because you ain't gonna need it". If it doesn't make your job easier (and Rational Rose doesn't, believe me) toss it out. If you're already building five classes to parse a simple parameters file toss it out because you ain't gonna need it. XP points out (quite accurately) that the design for change is only useful if we allow extendibility in the right places. Unfortunately this requires you to analyze your problem domain beyond what's needed to ship your product and most of the time you'll still get it wrong. You'll get it worong because you don't have a crystal ball. You can't tell what the customer will want next. This way you eliminate the whole code design circus and end up with simple code that does what it's supposed to do, no more, no less.

    One of the most important aspects of XP is unit testing. XP recommends that unit tests be written before the code that's supposed to pass those tests. This is more important than you think for two reasons.

    Reason one: how are you supposed to develop your code if you don't know how to test it? When you write your unit tests you gain insight into the exact functionality of your code.

    Reason number two: If you write your tests after you develop the code your tests will most likely only test the scenarios you considered when you were writing the code. Your tests will most liekely be incomplete because they'll have a slant towards your implementation.

    Coding in pairs is probably the most prominent and the most controversial aspect of the system. It's important to realise the benefits of pair programming though. No code ownership means people can't get territorial about their code so everyone is free to change it when they need to change it. I've seen shops where changing John's code was considered politically incorrect and often John would take the issue personally. In other words if John wrote the message dispatcher John and John alone would decide on it's shape, form and future directions. XP essentially says that the hypothetical John can no longer pee around "his" piece of code and keep it as a guarded secret because John is no longer the sole developer of the message dispatcher. If John gets territorial about his work, John gets moved on to do something else and somebody else takes over until they start growing attached to the code again. Lather, rinse, repeat.

    Besides code ownership and territorial programmers the other issue that XP takes on is coding primadonnas. Most software shops have a standard (sad) working model. One self promoted primadonna coding 70% of the application including the critical subsystems and the other twenty developers working around the edges "helping" the primadonna and trying hard not to get in her way. Our primadonna often isn't even the best coder on the team but surely is the most bullish and opinionated and thus grabs all the exciting work. Everyone else is just supposed to feel inferior and work on some tiny pet project of their own. This is not only grossly underutilises the rest of the team but usually at some point puts the project in jeopardy because the primadonna has now found another company to prey on. Project "gurus" have mushroomed throughout this industry and weeding them out may prove challenging. XP offers a very radical albeit a very promising way of achieving that.

    This comment is growing a little long now so I'll shut up at this point. I hope this offers some enlightenment to those who keep on saying that XP is just another waterfall mutilation. It's not. It's a hackers methodology. On the side not however, I to have an issue with the name and the accronym. It's just juvenile.

  • by Cpt_Corelli (307594) on Thursday May 10 2001, @03:51AM (#232932)
    Yes I have. In my experience it is very difficult to use XP if you don't have a team of experienced programmers. The way you implement XP as a methodology is also important. I takes a while for everybody to get used to and my recommendation is to pick out the practices that best fits your need and implement those one at a time.

    I would also not recommend using XP if you are using a team of consultants for the short term. What usually happens first when you implement XP is that documentation tends to become poor. This is bad if the developers are leaving your company next month.

    Those XP features that I have seen to be most useful are:

    "Pair" programming or rather more extensive code reviews whitout having to sit in each other's lap. Two developers are always responsible for a certain area.

    Short release cycles (yes 6 weeks is possible for a major B2B site)

    Extensive testing with as much help as possible from an automated tool such as a Build Manager, Rational teamtest etc

    Heavy focus on feature prioritization. This will involve people who might not be used to prioritization for short cycles.

    Also make sure that you do "sunset reviews" (including the entire team) after each cycle to continually gather feedback on how the previous cycle worked out and how to improve the coming cycle.

    All in all it is not that "Extreme" but more like common sense.

    Peter

  • XP is being renamed by tjhart (Score:1) Thursday May 10 2001, @05:06AM
  • Re:Also forgets about REFACTORING by Lol the unbeliever (Score:1) Thursday May 10 2001, @07:15AM
  • by Lol the unbeliever (311135) on Thursday May 10 2001, @04:04AM (#232935)
    Apart from testing, another tidbit without which XP is just another swing of ye old formalism pendulum (you know, chaos vs. order, all that) is refactoring. This is what distinguishes XP from prototyping. Refactoring code is for example generating a function by taking a chunk out of an existing function. Refactoring, maybe, I'm not sure, prevents explosive complexity growth. A proper automated refactoring tool is hard to develop, and your code base had better be in a very coherent language, like Smalltalk or maybe Lisp/Scheme. IMHO XP in Java or C/C++ misses the point, and will go down in history as another misunderstood "fad".
  • Good advice (Score:5)

    by karmawarrior (311177) on Thursday May 10 2001, @03:35AM (#232936) Journal
    "Find the essential elements of creating good software, do them all of the time, and discard everything else."
    Excellent advice. I look forward to O'Reilly's book on stock market investing, which will be based around this advice:
    Buy low, sell high!
    Or their book on the best way to bungee jump:
    Make sure the bungee is properly secured before jumping off the bridge.
    Not to mention their book on the correct way to transport scissors:
    Walk, don't run!
    Can someone name a book on programming techniques that advocates using elements of creating bad software? I'd like to read the opposing view...
    --
  • Re:One way of Pair Programming by utopian (Score:1) Thursday May 10 2001, @04:46AM
  • Re:Programmers write the Unit Tests? by tb3 (Score:1) Thursday May 10 2001, @06:10AM
  • Re:Programmers write the Unit Tests? by tb3 (Score:1) Thursday May 10 2001, @06:13AM
  • Programmers write the Unit Tests? by tb3 (Score:2) Thursday May 10 2001, @04:02AM
  • Re:XP by statusbar (Score:1) Thursday May 10 2001, @03:55PM
  • Re:Experiences of extreme programming? by Elrac (Score:1) Friday May 11 2001, @08:40AM
  • Re:Experiences of extreme programming? by Waffle Iron (Score:2) Thursday May 10 2001, @05:27AM
  • Re:Err... by GreyPoopon (Score:2) Thursday May 10 2001, @06:33AM
  • c't article by stew77 (Score:2) Thursday May 10 2001, @03:33AM
  • Re:No thank you. by riftweaver (Score:1) Thursday May 10 2001, @03:51AM
  • Re:Err... (Score:3)

    by MagusZero (443648) on Thursday May 10 2001, @04:14AM (#232947)

    A coder knowing the context is a bad thing. His context ends at the public interface and if he needs more information then something is wrong with the design. If he knows more than the public interface spec then he is likely to use that information (consciously or not) and make assumptions about the environment in which his code will run. In the long run, those assumptions will turn out to be wrong and his code will break.

    The most productive environment I ever worked thought about the problem and listed the functions that were likely to be useful in creating the application (we were coding in C).

    Once the specific functions were identified, it was considered if they weren't instances of more generic functions. If so, then the generic function was substituted as a requirement.

    Then people split into pairs and wrote code to implement those functions without regard as to their application. Since we had a prototype statement and everything had to be explicitly passed in and out, we could. Coding in pairs allowed one person to focus on syntax and typing while the other thought about the algorithm and spotted bugs. If a routine turned out to be more than about 50 lines (without comments) it was mostly likely broken into two routines.

    Each "finished" routine was then tested rigorously. Inputs which caused failure had to be fixed or at least caught. All the routines were kept in libraries by religiously using make with ar to keep things synch'd.

    Only after all the library routines were written did we go back to the application which was now fairly trivial to write. Using these techniques we were able to write as much as 2,000 LOC of bug free C code per pair per day. Typical productivity was more like 500 LOC per pair per day of bug free code.

    By bug free I mean relative to normal standards. Obviously we sometimes found a bug but the rate was something like 1 bug per 100,000 lines of code in the first six months of use, or less. Code that had been in use for more than six months had perhaps 1 bug in a million lines of code and that showed up in the first year. Code older than a year didn't provoke any bugs that might have remained.

    Think top down then code bottom up, don't make assumptions about contexts, pass everything explicitly, test continuously (especially unit test - consider making it the last step make does when compiling), use good tools like make, RCS/CVS, ar, or whatever analogues apply in your environment.

  • eXtreme Programming - How? by jrobertson_61 (Score:1) Thursday May 10 2001, @07:53AM
  • Re:XP by the_2nd_coming (Score:1) Thursday May 10 2001, @03:53AM
  • Re:One way of Pair Programming by Tachys (Score:1) Thursday May 10 2001, @03:04PM
  • One way of Pair Programming by Tachys (Score:2) Thursday May 10 2001, @03:25AM
  • Re:XP by RALE007 (Score:1) Thursday May 10 2001, @06:14AM
  • To over simplify by RALE007 (Score:2) Thursday May 10 2001, @06:35AM
  • XP by shut_up_man (Score:2) Thursday May 10 2001, @03:26AM
  • Re:XP is the most stupid thing sinse... by cyberlync (Score:1) Thursday May 10 2001, @05:10AM
  • by cyberlync (450786) on Thursday May 10 2001, @04:51AM (#232956)

    I just love it when people blurt out erroneous information about a subject/product/project that they have never seen or used.

    The main concern people have here is that in XP you don't design. That is a false statement. In XP iterations are encouraged and design, for an iteration, takes place at the beginning of that iteration. Its true in XP you don't design a large application at the beginning of the application, that ends up begin a waste of time. Any one who has ever worked as a programmer realizes that user requirements change on an almost daily basis. This iterative design process allows for change. In fact, one of XPs mottos is "Embrace Change".

    The best argument for the use of XP is that it works, better then any other methodology I have ever used. The iterative design process, user stories, unit testing, constant code commitment, pair programming. These concepts brought together in the form of XP produce a balanced environment that tends to produce what the customer wants in the time frame he wants it. In short, it helps us do our job as developers well.

    With XP you get well-designed, extensible, modular code. You are also encouraged to reuse it whenever possible.

    Is XP a panacea? No, not by a long shot. On of the principle complaints I get when I introduce some of the concepts and procedures to a client is the statement "Oh our coders don't like procedures, they will never do that". This comes back to the fact that if you can't get your coders to follow any procedure, than it is likely that no procedure will work for you.

    Although I am a full time coder and like XP, most coders do not. XP, by design, reduces the likely hood of cowboy coders (in the American sense) by design. If XP is implemented correctly it wont be long before almost everyone has a similar level of knowledge, this level is usually equal to the highest pre-XP level.

  • XP Tastes Great and is Less Filling by abigballofwire (Score:1) Thursday May 10 2001, @03:59AM
  • XP and Change Control by Elvisisdead (Score:1) Thursday May 10 2001, @03:49AM
  • Re:great choice of words by jjgeek (Score:1) Thursday May 10 2001, @08:34AM
  • Re:great choice of words by jjgeek (Score:1) Friday May 18 2001, @05:19AM
(1) | 2 | 3 | 4