Slashdot Mirror


Java Tools For Extreme Programming

David Kennedy writes: "Java Tools For Exteme Programming: Mastering Open Source Tools including Ant, JUnit and Cactus by Hightower & Lesiecki is a welcome addition to my bookshelf at work. It tackles a gap in the Java book market in dealing with the thorny issues of testing, integration and deployment." The rest of his review is below. Java Tools For Exteme Programming: Mastering Open Source Tools including Ant, JUnit and Cactus author Richard Hightower & Nicholas Lesiecki pages 516 publisher Wiley Computer Publishing rating 8 reviewer David Kennedy ISBN 047120708X summary Practical introduction to Java tools for Extreme Programming, with an emphasis on immediate results rather than deep theory.

In recent years there has been a increased emphasis on Agile Software Development. The most prominent of these methodologies is probably Extreme Programming.

What sets Extreme Programming apart from most other Agile Technologies, in my opinion at least, is that it has provided practical, easy-to-use tools to support its way of working. Most of these tools (Ant, JUnit etc) are Open Source and freely available. However popular these tools have been with the Open Source and Extreme Programming communities, it has arguably been difficult to introduce them to traditional IT development environments. This has been primarily due to the problems of justifying spending time on 'playing' with something and the difficulties of retro-fitting new tools to an existing development environment (think projects of 150+ people which have been releasing for 5-10 years for some idea of the potential problems).

It's worth noting that when embarking on a new, large-scale project it's very difficult to find a book discussing the issues of controlled builds, integration and deployment in practical terms. The most valuable aspect of Java Tools for eXteme Programming is that it's alone in its market niche.

The book is mainly useful as (a) an introduction to the various building and continuous testing tools out there and (b) a tutorial to getting them setup and working on your computer. As the authors note, there's a critical period where the user must get some result after playing with the tool for a short period of time or just give it up as 'too difficult.'

From a technical standpoint the book is very readable, but it doesn't tackle any one subject in great depth. It certainly provides enough information to get you up and running, and also, perhaps more valuably, illustrates how to integrate the tools together. It's an excellent primer for those who want to use the tools but are unsure of how exactly to start.

What's covered? Here are the chapter headings:

  1. Introduction and Key Concepts
    1. Introduction to Extreme Programming
    2. J2EE Deployment Concepts
    3. Example applications
  2. Mastering the Tools
    1. Continuous integration with Ant
    2. Building Java Applications with Ant
    3. Building J2EE applications with Ant
    4. Unit testing with JUnit
    5. Testing Container Services with Cactus
    6. Functional Testing with HttpUnit
    7. Measuring Application Performance with JMeter
    8. Load Testing with JUnitPerf
  3. API and Tag Reference
    1. Ant Tag Reference
    2. Ant API Reference
    3. JUnit API Reference
    4. Cactus API Reference
    5. HttpUnit API Reference

If you use some of these tools already will you learn anything? Probably -- I personally have been using JUnit to test EJBs for almost nine months now but didn't know about JUnitPerf or Cactus.

Should you buy it? If you're new to the tools, then Yes. If you work in a professional but traditional IT shop, I'd buy one for the group (I have). It'd be particularly useful when dealing with management and proposing changes to working processes, or when trying to bring co-workers up to speed and sell them the benefits of agile ways of working.

You can visit the book's website at Wiley. You can purchase the Jave Tools For Extreme Programming from bn.com. Want to see your own review here? Just read the book review guidelines, then use Slashdot's handy submission form.

175 comments

  1. This isn't a review by Anonymous Coward · · Score: 1

    this is more like the text on the back of the book. Please go into depth about the types of examples, does it discuss practical applications, and deployment plans?

    1. Re:This isn't a review by gabbarsingh · · Score: 1

      Please mod this guy up. This isn't a review. Nobody at Slashdot or whoever wrote this review actually seems to have read the book and compare it to the actual practice of extreme programming in the context of Java development.

      Modding it to zero reflects what on the part of Moderators?

    2. Re:This isn't a review by Anonymous Coward · · Score: 0

      I like the review. Compare to the other 5 reviews done by Dr. Dobb Journal, Java Pro Magazine, and more. Its less positive than those reviews. This review seems very balanced. Perhaps your perceptions of XP cloud your judgement!

  2. Continuous Integration - CruiseControl by smagoun · · Score: 5, Insightful
    Although (apparently) not mentioned in the book, CruiseControl deserves a look. It's a continuous build tool you can use in conjunction with Ant, JUnit, etc.

    "Build early and often" is one of the continuous integration mantras, and CruiseControl helps out with that. By having a coninuous build cycle, you can catch errors literally within minutes of when they're committed to the source repository. CruiseControl will email you if builds don't work, and also has a nifty servlet to let you track builds on the web. It's definitely worth a look.

    1. Re:Continuous Integration - CruiseControl by Anonymous Coward · · Score: 0

      How does this compare to tinderbox? I couldn't find any example pages or screenshots.

  3. Not for extreme programming by redcup · · Score: 2, Informative

    This book is *terrible* for extreme programming - I don't know why they even put it in the title (um, ok - to sell more books...) It's a good book for the price though - don't just take my word for it:

    amazon reviews

    --

    RC
    1. Re:Not for extreme programming by Anonymous Coward · · Score: 0

      Extreme programming sucks anyways. It's just an excuse for companies/schools to avoid getting a computer for each student.

    2. Re:Not for extreme programming by Anonymous Coward · · Score: 0

      Can you expand on this? Why is this book terrible for XP? Have you read the book? Can you read?

  4. A relief, for me by hoegg · · Score: 2, Insightful

    Personally, I learn programming concepts well when I have a real book instead of web research. Either I missed this book or it's new, because learning JUnit, Cactus, and Ant all at once on a single project from only web research is rather challenging.

    This is going on my shopping list.

  5. I'm no dummy! I'm sticking with "Java for Dummies"! Oh, wait... Damn!

  6. Extreme Programming: Unrealistic? by Kombat · · Score: 4, Insightful
    I really like the concept of XP, and have been working hard to incorporate some of the ideals into my own work. However, XP seems more suited to small, nimble projects of less than 20 people. It doesn't seem to scale very well to larger projects, especially in an organization averse to taking risks and doing things any differently than the way they've been doing them for 20 years (doubly so in this punishing economic environment).

    Last year, I actually had the opportunity to ask Kent Beck if he had any suggestions for adopting XP to large projects (200+ people across multiple geographic locations), and unfortunately, he wasn't too optimistic. He indicated that the largest projects he's tried XP on were 20 people or so.

    Other issues we've had when considering adopting XP in our organization are that XP tends to assume that you will be developing for a single customer with a set of evolving - but consistent - requirements. In our reality, we have multiple customers, who want different things.

    Finally, XP doesn't seem to offer any solution for testing GUIs, which make up a large part of our product.

    So while I'm very excited by the promises of XP (and will likely buy this book), I think it is important to temper your enthusiasm with a healthy dose of reality, and consider that XP relies on some subtle preconditions in order to deliver on the promise of a smooth and successful development cycle.

    --
    Like woodworking? Build your own picture frames.
    1. Re:Extreme Programming: Unrealistic? by Shillo · · Score: 1

      > Finally, XP doesn't seem to offer any solution for testing GUIs, which make up a large part of our product.

      Well, testing anything specific (and GUIs in particular) is not something that development methodology has to answer for. You're on your own, just as if you were to test, say, a numerical algorithm used in your code.

      That said, there /are/ methods to test GUIs. For example, use GUI toolkit that allows a scripted access to the GUI controls. Applescript does that for Macs and Accessibility Toolkit does it for Gnome2/Gtk2 applications (once GNOME 2 officially comes out, of course). I know for a fact that a number of companies have their own in-house testing harnesses for Windows.

      --

      --
      I refuse to use .sig
    2. Re:Extreme Programming: Unrealistic? by Tom+Davies · · Score: 0, Offtopic

      I've installed Windows XP, which I think is a good start.

      Tom

      --
      I have discovered a wonderful .sig, but 120 characters is too small to contain it.
    3. Re:Extreme Programming: Unrealistic? by gabbarsingh · · Score: 2, Insightful

      Why do projects require large teams, such as 200+ people? This is the first question you should be asking. XP is not some sort of band aid that will make the pain go away. It is a collection of some time honored practices, some newer techniques and whole lot of guidelines on what you should not be doing. Any oversimplification or executive summaries are not going to help you understand what is XP let alone how to apply it.

      I think the most important, critical, absolutely must criteria is self-organizing teams. Traditionally, especially your 200+ person team, chops up development into "pieces" according to some vague boundries based on classical engineering practices. Some shops get into creating blueprints aka UML by "architects" and code written by "monkeys" aka contracters.

  7. Exteme? by Anonymous Coward · · Score: 0

    When will they get open source spellcheck software for Linux? dummies....

  8. Consider purchase from half.com instead by Seth+Finkelstein · · Score: 2
    Check out the book's price at Half.com .

    Overall, they're cheaper than bn.com (I have no association with either, but I've found good deals on these book resellers).

    Sig: What Happened To The Censorware Project (censorware.org)

    1. Re:Consider purchase from half.com instead by einer · · Score: 1

      bestbookbuys.com is a meta-price-comparison site and has the lowest price listed at 28 and change (with shipping). The half.com price was about a buck more. (I only know this because I'm WAY too tight with money.)

  9. Jave? (Java) by Anonymous Coward · · Score: 0

    Hahah this thing is littered with spelling errors.. oh well, such errors should be expected from this crap site.

  10. Catchphrase whoring by Codex+The+Sloth · · Score: 2, Insightful

    What does Ant (an extremely useful buildtool for Java) have to do with Extreme programming? Nothing! I can't really imagine why anyone would need a book on Ant (can't say much for the others) -- there's pretty self explanatory documentation here. Since extreme programming strikes me as a load of crap to begin with, this is all probably a good thing.

    YOur right about the amazon reviews. What is it with these "reviews" that get posted here -- the table of contents for christ sakes? It seems like book reviews are just an excuse to post a affiliate link to a book store. For shame slashdot. For shame...

    --
    I am not a number! I am a man! And don't you ... oh wait, I'm #93427. Ha ha! In your face #93428!
    1. Re:Catchphrase whoring by Squareball · · Score: 1

      Kinda wondering what "Extreme programming" is. Is it where you bungie jump while coding? I dunno.

    2. Re:Catchphrase whoring by yog · · Score: 3, Informative

      Well, "extreme programming" is part hype and part common sense. The hype part is to educate management into the methods lots of people have been using for decades. Codifying it and giving it a sexy name helps legitimize these practices. Code reviews **are** useful sometimes as is pair programming, rigorous unit testing, etc., but this stuff has been happening all along with or without management approval.

      Now if you're sitting next to your buddy, watching and commenting as he or she steps through some code, and your manager asks you why you're not at your own desk doing real work, you can explain that you're "pair programming" or code reviewing or what have you. Whatever. It's just a name for something everyone already does from time to time.

      If you think the hype's a "load of crap" then I would tend to agree, but if it's the practice you object to, then you're obviously a rank beginner.

      --
      it's = "it is"; its = possessive. E.g., it's flapping its wings.
    3. Re:Catchphrase whoring by ronjeffries · · Score: 1

      Extreme Programming (XP) is a very simple and effective discipline of software development based on values of simplicity, communication, feedback, and courage. It includes techniques for programming, and techniques for planning and working with the "customer", the individual or group that has responsibility for making business decisions about the program that is to be written.

      Read more about XP at extremeprogramming.org, or on my site, XProgramming.com.

      --
      This is how I develop software. Take the parts that make sense to you. Ignore the rest.
  11. How to make money with /. by lfourrier · · Score: 1

    1) Read a book review somewhere (presently DDJ)
    2) post a critic, including links to web stores
    3) earn referer fees

    1. Re:How to make money with /. by Anonymous Coward · · Score: 0

      The sad thing is, those referer fees are greater than VALinux (Programming? Systems? Research?) profits.

  12. bookpool by larry+bagina · · Score: 1

    If you want to save a few bucks ($24.50 vs. $31.99 at bn) go to bookpool.

    --
    Do you even lift?

    These aren't the 'roids you're looking for.

  13. You have to pick your battles... by PinglePongle · · Score: 3, Insightful

    I am a development manager with a large (20+) team; I am gradually introducing some aspects of extreme programming into the organisation, and so far, it's working pretty well.
    The concept of user stories is great for getting our multiple customers to get to grips with their requirements; the tactile nature of the cards allows the planning sessions to be participatory and inclusive, the customers understand the trade-offs and the developers get to understand what they're _really_ being asked to deliver.
    Pair programming and continuous testing have produced decent results; the main problems we have are accomodating sickness and holidays into the project plan.
    On the other hand, our organisation does insist on some of the more traditional aspects of development management - a formal "Project Manager" role, regular progress reports to the executive team, functional and technical specifications etc.
    I don't see how you could realistically hope to convert an entire team to XP overnight. The gradual introduction of some of the basic concepts - esp. those which can be explained as "quality oriented" - is a lot more likely to succeed.
    I've read the book, and it's okay; the editing could have been a lot tighter (there's page after page of code printed out which outlines the application to be tested, not the tests themselves, there is a huge chunk devoted to the documentation for the tools which is available online etc.), and it kinda drifts away from the point now and then. If you want to get up to speed with Ant, jUnit etc. it's worthwhile, but don't expect to become an XP xpert.

    --
    It's all very well in practice, but it will never work in theory.
  14. JUnit advantage? by Fjord · · Score: 2

    I have a question for the JUnit users out there. Basically we are doing unit tests here in the following way:

    1. We mark the test code in the classes between special comment lines (so that it can be programmatically removed)
    2. The tests are in static methods with the prefix "test", called by a Test.class in each package. Test.class has a main that just calls the other tests
    3. Each test prints out on a single line the class it's in, the name of the test and "passed" or "failed" and the failure may have extra info as to why it failed

    This is working well for us, but considering how many people are happy with JUnit I was wondering what it provides over this way of doing unit tests? Basically, I'm just looking for some of the things that JUnit has provided you (above and beyond what the above gives) and maybe a real use example, but don't really need to be sold on unit testing (we already think it's great and are doing it).

    F

    --
    -no broken link
    1. Re:JUnit advantage? by FatHogByTheAss · · Score: 1

      It provides two things. First, you don't have to mark your code, so you can avoid a preprocessor step, and thus reduce complexity. And it provides a client for your units. Your JUnit test case should use your code just like a developer or customer would.

      It's also a realy nice framework. You can extend TestResult to do whatever you want, meaning you can have your harness report directly to your defect tracking system, send e-mail to the appropriate place, or some other thing that hasn't been thought of yet.

      So three things. Reliability, unit clients, and flexability.

      It's handy as heck.

      --

      --
      You sure got a purty mouth...

    2. Re:JUnit advantage? by tdrury · · Score: 3, Informative

      JUnit is amazing. It's incredibly easy after you've written your first unit test. Here is a prime example of its use: I had about 50 classes spread out over a couple packages one of which is "core" to all the others. I had unit tests for all the code. I wanted to totally redesign how I implemented one of the core classes which is inherited by a number of other classes. I think people that don't have unit tests would shy away from such a large change. I simply backed up the old source file, put in the new file, and ran my ant script which builds, deploys (on appserver) and runs junit. After about 20 minutes of cranking through the unit tests, it finished with no failures. At that point I was 100% confident that my change worked and I wouldn't be surprised by a suble bug later. That is what junit is good for - peace of mind and confidence. You'll allow yourself to make changes to code (for the better) that you may otherwise have though too complex to attempt.

      As for your first unit test, it isn't that hard. Use a standard naming schema like "FooTest.java" or "FooJUnit.java" for your test cases - this way ant can filter on those name and run junit against them while keeping your unit tests out of your distribution jars. Extend TestCase and overload setUp() and tearDown() - often you won't need those. Name your methods testXYZ() and junit will run them. Inside your test methods call Assert.xxx() on the things you want to test. You can test for null, compare to known values, etc. You can test to make sure exceptions should be thrown or not. Sprinkle in a little log4j and you can get more detailed progress of the tests.

      -tim

    3. Re:JUnit advantage? by Frank+Sullivan · · Score: 2

      If you have a working unit testing mechanism, then JUnit doesn't have much of an advantage. The best thing it has going for it is standardization... it's what most people who are bothering to actually test their code (i pity the poor fools who think they are too busy coding to prove that their code actually works) use. That means it gets integrated into just about any open source Java tools - Ant, NetBeans, etc. You can integrate yours too, but it's work and maintenance.

      --
      Hand me that airplane glue and I'll tell you another story.
    4. Re:JUnit advantage? by Anonymous Coward · · Score: 0

      Another thing that I don't see mentioned is that JUnit saves you from getting "scroll blind." You don't have to scroll through your text output looking for (and possibly missing) failures. When there is a failure, the Swing UI progress bar turns a very obvious red and lets you know exactly where the failure(s) is. JUnit makes me look like a better programmer than I am.

    5. Re:JUnit advantage? by Anonymous Coward · · Score: 0

      Basically, it provides separation between your production code and the tests. It also forces simplicity and low coupling. Why?

      Because your only test points are the methods and variables of your classes. You can't put a test point inside a method. That means that if it's important to test there, the method is too complicated, and needs to be broken up.

      Another reason: if you've got test code inside methods, then you will have more difficulty refactoring. If you change the logic in a method, you have to change the test code. If your test code is outside the method, you might not have to do that.

  15. java in pratice by Neil+Watson · · Score: 1, Troll
    Recently, I was researching some java applets for a website. I saw many instances where different code bases had to be kept for IE, Netscape, and others. On many sites I found that applets were slow or unpredictable on IE and/or Netscape 6.

    Is java an idea that never lived up to its hype of being cross-platform or do most web designers need a serious lesson in programming?

    1. Re:java in pratice by boltar · · Score: 0, Flamebait

      Both.
      Java is a bad language implementing a bad idea usually by bad coders (ie people who find C/C++
      too difficult or used to do VB)
      Most web designers are just that , designers. They couldn't code their way out of a paper bag.

    2. Re:java in pratice by Rentar · · Score: 2, Insightful
      Is java an idea that never lived up to its hype of being cross-platform or do most web designers need a serious lesson in programming?

      Java did live up to the hype, but no on the desktop 'though. Java is very much alive on the server side. Client side java pretty much never existed on the big scale ('though there are some very good client side java programms). Applets were killed by old and incompatible implementations of the JVM (not only Microsofts, but others as well). The Problem is/was that most Browsers shipped with a Version 1.1 JDK, which is just plain old and outdated. Microsoft never even shipped anything more up to date. You can use plugins to use more up-to-date versions of Java, but that's quite some trouble. And most Applets are just used as a flash-replacement and for this it really isn't worth to download the Plugin.

    3. Re:java in pratice by Phoukka · · Score: 4, Informative

      Been under a rock for a while, haven't you? ;)

      Okay, all ribbing aside, as someone who programs Java for money, let me give you the skinny: Java applets bite. More specifically, they are slow to download, prone to crashing, and subject to problems due to lack of control over the Java runtime available to the browser.

      Java has, instead, found its niche on the server. Server-side programming is where Java works really, really well. Development is generally faster than with C/C++, and Sun and others (go Apache! :) have provided some seriously amazing libraries/frameworks/etc. that help programmers avoid reinventing the wheel -- or the bucket seat, the 5-speed automatic transmission, or even the 10-disc CD changer.

      The other benefit that Java on the server provides is that web designers don't have to monkey with the code, and programmers don't have to deal (so much) with HTML.

      Needless to say, everything above is a generalization, all generalizations are false (including this one), and YMMV.

    4. Re:java in pratice by aron_wallaker · · Score: 2, Insightful

      The biggest reason for different source code for IE/Netscape is (IMHO) that IE's native Java support is frozen at V1.1.x. Most applets that I see on the web are coded for this level of Java and, generally speaking, run under Netscape....but since Netscape provides (I think) V1.3.x of Java you could definitely write a different version for V1.3 that has more features/whatever than the V1.1.x that you have to maintain for IE. Of course Sun released a Java plug in for IE to give it more up-to-date Java support....but you can't assume your customers all have it.

      Having said all that, I think applets are the worst representative of Java usage. I write server-side Java and really like it. The server-side specs (JSP's, Servlets, J2EE) seem to be port across platforms quite well. When we deploy code on WebSphere (IBM's J2EE platform) it runs across Windows, Linux, AIX, Solaris,etc with no problems. I haven't tried porting EJB's between J2EE platforms but I have written Servlets & JSP's on one platform and moved them to another with no changes, although the deployment details (what goes where) may differ.

    5. Re:java in pratice by boltar · · Score: 0, Troll

      When you say server side I assume you mean web server side? Given that a lot of server programming
      has nothing to do with web servers, HTML or any of that mickey mouse shit. Try putting java in
      a REAL server side app such as a fast throughput bank dataprocessing backend that feeds trader
      front end screens and watch it die faster than a goldfish in bettery acid.

    6. Re:java in pratice by pohl · · Score: 1

      It's not really married to "web servers" at all. Rather, "application servers", a more generic container that can be useful in exactly the kinds of situations that you describe. Any language in the hands of mediocre programmers can perform badly. No language is a substitute for intelligent design.

      --

      The "cue the foo posts in 3, 2, 1..." posts will commence with no subsequent foo posts in 3, 2, 1...

    7. Re:java in pratice by Anonymous Coward · · Score: 0

      Oh god. Reinvent the wheel is exactly what's happening with java on the server. Every known UNIX variant has "make" sitting there waiting for you to use and what happens, you create Ant.
      There are soo many free libraries written in C (not to mention those written in C++) for doing server side programing, most of them are free. So what do we do? We use a slow pig of a language for development (java) and have to "reinvent" the wheel again because you don't have any libraries, does ANYONE see how f$cking stupid this is? Please, I think I'm in need of phsyciatric help if this stupidity continues.

    8. Re:java in pratice by Anonymous Coward · · Score: 0

      I think you're being a little kind with the "slow pig of a language" bit.

  16. Java? Extreme programming? Non sequiter? by boltar · · Score: 0, Flamebait

    Java is to extreme programming what battery cars are to drag racing.

    1. Re:Java? Extreme programming? Non sequiter? by Anonymous Coward · · Score: 0

      Maybe if you knew what XP is, you wouldn't post stuff like that and not end up looking so stupid.

    2. Re:Java? Extreme programming? Non sequiter? by boltar · · Score: 0, Flamebait

      I know what XP is. I also know what a piece of shit java is to work with. Your point is?

  17. Um, no by Anonymous Coward · · Score: 0

    Java books are portable only if you copy each page by hand and convert to your local language in the process.

  18. Extreme Programming - WTF is that? by Navius+Eurisko · · Score: 3, Funny

    When I think of extreme programming, I think of writing code on a laptop while BASE jumping or while being attacked by a shark.

    1. Re:Extreme Programming - WTF is that? by mestar · · Score: 3, Funny

      You schmuck.

      Everybody knows that Xtreme Programming is programming for Windows XP. (using Athlong XP is optional)

      :)

    2. Re:Extreme Programming - WTF is that? by deepstephen · · Score: 1

      It's kind of like extreme ironing, but your clothes end up with more creases.

      --

      --
      Karma: Chameleon (you come and go)
  19. Extreme Programming?? by JZ_Tonka · · Score: 1, Redundant
    Is that like extreme wrestling, or extreme sports?

    As a programmer, something like Extreme Programming sounds downright scary to me. Or at the very least, something that would force me to get up out of my chair more often than I would like.

    1. Re:Extreme Programming?? by Anonymous Coward · · Score: 0

      Like it's my fault someone else said the same thing AFTER I posted this...

  20. Java Refactoring Browsers by Frums · · Score: 4, Informative

    I'v enot read the book, but looking at the chapter headings they seem to have leftout one great tool for XP in Java - the various refactoring browsers that are now hitting stride for Java, including JRefactory, IDEA (my favorite IDE period), jFactor, and X-ref (for the Emacs lovers)

    With the XP RefactorMercilessly principle, IDE support for for refactoring is a must on big projects. Custom writing a Perl, sed, or awk script to move a method from one class to another (in its argument list) is possible, having IDEA or another refactoring tool handle all the updates across 2000 changes in 700 files is a lot nicer.

    -Frums

    1. Re:Java Refactoring Browsers by bay43270 · · Score: 3, Interesting

      I don't have mod points today, so I'll just reply:

      I don't think you could be more correct. You simply can't have a book about Java tools for XP without talking about IDEA and some of the other great refactoring tools out there.

      IDEA has completely changed the way I write code. I never really took the idea of refactoring seriously until I found it. Until then, it seemed like the refactoring book was just a guide to the obvious, but to see the refactorings automated with names I immediately recognize made me rethink things. All those idealistic phrases I once laughed at started flooding back to mind.

      With the exception of JUnit (and even that's a close call), I don't think any other tool supports XP as well as IDEA.

  21. Read the book... by MosesJones · · Score: 0, Flamebait


    XP is for teams of upto 10 people. Personally I think that any methodology that isn't founded on a good design is a load of rubbish. XP is the worst form of hacking imaginable. If we really want to be considered an engineering discipline we should behave as one. Engineering requires thought, planning, requirements, design, implementation and testing, while some iteration is possible and continual delivery is possible (you can cross the bridge on foot, before you cross it in a car) within engineering, the idea of continually changing each piece is not one that fits within engineering.

    XP is for hackers who want to improvise, and upon whom nobody relies for their survival. If people built houses, bridges and planes this way we'd all be up in arms about the lack of quality.

    Why should Software be any different ?

    --
    An Eye for an Eye will make the whole world blind - Gandhi
    1. Re:Read the book... by FinnishFlash · · Score: 2, Insightful

      Why should Software be any different ?

      Because it is !

      Lets see:
      Houses, Bridges, planes = Tangible, concrete
      Software = Intagible, computations

      I'm just sick and tired of people thinking that only way to do Software is to try to fit it in models that are meant for something totally different.

      Lets face it, Software Engineering is not (in most cases) like bridge engineering. Trying to build software like you build bridges just doesn't work.

      Software is something totally unique.

      --
      please proff read !
    2. Re:Read the book... by Capt_Troy · · Score: 2

      Totally Agree.

      Software can be altered easially throughout it's lifetime. You can't take a piece of a bridge out make it better and put it back in.

      Developing with XP let's you get to the point, realize your mistakes or places that can be improved, and do so quickly. The concept is that the design will evolve out of the code.

      I have to admit, when I first heard of it I was the same way, but I've found that for small projects, with few people, it works well and the code does naturally evolve into a decent design using proper refactoring techniques.

      Later-

    3. Re:Read the book... by thenerd · · Score: 4, Informative

      XP is for hackers who want to improvise, and upon whom nobody relies for their survival. If people built houses, bridges and planes this way we'd all be up in arms about the lack of quality.

      This isn't true - XP is no more for hackers than any other type of programmer. At the core of XP is building quality in from the first stages. For example, one of the XP techniques, pair programming, though very intensive, increases quality through a continual peer-review - you have two coders going at the same code on one machine - any line of code that doesn't cut the mustard is more likely to be found.

      Additionally, XP tends away from 'big-bang' integration scenarios by having early releases, regardless of size - this means the system is all working together from the beginning, and that bugs residing in different definitions of what an interface 'really' means are found early before they cause problems. If that wasn't enough, there is also a large concentration on testing - before writing the code, XP users are thinking 'how are we going to test this? Exactly? What are the exact criteria for success of this unit?'.

      It isn't a tenet of XP that you 'continually change each piece'.

      XP isn't a tool for hackers, it's got nothing to do with it. Nobody is saying 'don't design the architecture of your system', nor is anyone saying 'change things around until they work'.

      thenerd.

      --
      The camels are coming. I'm in love.
    4. Re:Read the book... by foobar104 · · Score: 4, Insightful

      Lets face it, Software Engineering is not (in most cases) like bridge engineering. Trying to build software like you build bridges just doesn't work.

      I think you're only right if you look at a special subset of software: those software projects where failure and loss are acceptable.

      Read this article from the December '96 issue of Fast Company. It's about the the team that writes the software for the space shuttle's on-board computer systems.

      Interesting stats: at the time the article was written, the previous 11 releases of the software had had a total of 17 bugs. Not each; total. In 400,000+ lines of code.

      Great quote, from one of the team members: "If the software isn't perfect, some of the people we go to meetings with might die."

      There's a big difference between computer programming and software engineering. Techniques like extreme programming may work well in a pure programming environment, in which the results of your work just don't matter all that much. So you software crashed; nobody got hurt, right? Just re-launch it, and remember to save often!

      At the opposite end of the spectrum, though, software engineering is just like civil engineering, or mechanical engineering, or aerospace engineering. If you f*ck up, somebody may die.

      Commercial software development is somewhere in between. If you don't have any discipline or oversight, your software will be so bad that your company will go out of business. On the other hand, if you institute military-grade processes, you'll never deliver a product in a reasonable time. So you have to compromise.

      But people who say that software is totally different are just fooling themselves. In software, like everything else, there's good work and there's shoddy work. Putting a label on shoddy work and calling it a "technique" doesn't make it less shoddy; it's just gilding the lily.

    5. Re:Read the book... by Frank+Sullivan · · Score: 2

      I got news for you... in most cases, some failure and loss IS acceptable. Not all of us are writing software for the space shuttle. I'll bet you aren't, either. In most cases, what we're worrying about is getting something done, on time and under budget, that has at least moderate congruence to end user requirements. And in most cases, those requirements are a moving target.

      The techniques of XP are incredibly useful in the world many of us have to work in. They work and produce tangible results.

      As for the whole "software built like a bridge" crap... there's a bridge over the Mississippi near where i live. It causes traffic backups in both directions every day because it doesn't scale. They're planning on fixing it... it will take six years, cost millions of dollars, and make traffic even worse during that time. Does this sound like a software project to you?

      --
      Hand me that airplane glue and I'll tell you another story.
    6. Re:Read the book... by geekoid · · Score: 2

      "If the software isn't perfect, some of the people we go to meetings with might die."

      boy, would I love to say that to some people at meetings I go to.
      "Sure, We don't have to take the time to test it properly, but if we don't YOU might die.Whats that? I get the extra 2 days to test, why thanks."

      There are 2 types of Software engineering:
      One is good engineer and the other is bad engineering, often called 'programming'.

      --
      The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
    7. Re:Read the book... by foobar104 · · Score: 2

      Hmm. I write and I write, but no one seems to read.

      Not all of us are writing software for the space shuttle. I'll bet you aren't, either.

      Nope. I'm writing software for customers to buy. Nobody will die if it fails, but my customers will get annoyed. Annoy 'em enough and they'll go elsewhere. My company will go out of business. My family-- and the families of all of my employees-- will suffer. While that's not the space shuttle, it's important to me.

      See? It's that spectrum thing that I wrote about in my post that you evidently didn't read. At one end, we have hobbyists; it doesn't matter to anybody but them if their software fails. At the other end, we have stuff like the space shuttle and nuclear power plants: life and death stuff. My company considers our work to be closer to the space-shuttle end than the hobbyist end.

      Jesus, don't you people work for a living? I can't believe you don't take your jobs more seriously!

      As for the whole "software built like a bridge" crap...

      If architects built buildings the way programmers write programs, the first woodpecker to come along would destroy civilization.

      -- Dave Baranec

    8. Re:Read the book... by geekoid · · Score: 3, Interesting

      Intangeable? Bad software set a navy Battle ship adrift, how is that intangable? If software in medical devices fail and someone dies, are you going to tell there family it wasn't the softwares fault, its Intangable!

      Whats that? a badly engineered software program lost all your customers account information? hey, its only computations, we can recompile it and fix it later!

      The same METHODS apply to ALL forms of engineering. The fact that people have taken the we can recompile it and release a patch later mentality shows exactly how crappy the software development industry has become.

      of course XP is a waste of time, because its not going to really catch on, It makes management accountable.

      --
      The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
    9. Re:Read the book... by Dix · · Score: 1

      This is a misconception. The perils of hacking come from lack of testing and paranoically guarded code - both OPPOSITE extremes to the XP model.

      The great benefit of XP comes from it's flattening of the cost/change curve.

    10. Re:Read the book... by plumby · · Score: 2, Interesting

      Maybe you should read the books. There is nothing in XP against good design. What it isn't based on, however, is overdesign - attempting to design a system that will meet the (predicted) future requirements of the customer.

      This issue of "hard" enginerring is clearly addressed. The point is that things like bridges, buildings etc, are not easy to alter once you have built them. If you find that the bridge was originally specified to be a footbridge and then the customer decides that what they really wanted was a road bridge, then it is very difficult to retrofit this new requirement. It has always been believed that software is the same - that changing it half way through is a very costly thing to do.

      However, XP claims that with a good unit test harness, it should be, and in my experience is, very easy to change the underlying implementation of the code without breaking anything. You can't just rip out the entire ground floor of a building, but you can reimplement your decisioning code without the entire application falling down on you. This means that it becomes much easier to fit later requirements as and when they are needed. The XP project that I worked on had a major change to both the business requirements and, as a result, the whole way of interacting with an external system.

      We had designed the package up front, but had designed it to do the requirements as they stood when we started. There was no suggestion to us of this other requirement at the start of the project, so no amount of analysis or clever design would have allowed us to code for it. However, once the new design was produced from these requirements, it was a trivial (1-2 days) task to recode several of the back-end classes to have the new flexibility in communication that was required (but with the same functionality). The unit tests allowed us to be confident that we had not broken anything. It was then another quick job to add the new functionaly, and we had a new working system.

      None of this meant skipping design, or hacking. It just meant doing the amount of design that was appropriate at the time, and building a framework to allow us to change (hence "agile methodology") when requirements change.

    11. Re:Read the book... by RetroGeek · · Score: 2, Interesting

      You can't take a piece of a bridge out make it better and put it back in.

      Um, well, actually yes you can.

      They took out each segment of the bridge and replaced it with a new one. The work was done at night, with traffic flowing during the day. Quite a piece of work....

      --

      - - - - - - - - - - -
      I am a programmer. I am paid to produce syntax not grammar. Deal with it.
    12. Re:Read the book... by Capt_Troy · · Score: 2

      Damn, there goes my hole analogy!!! :) At least I got a pun in there.

    13. Re:Read the book... by pong · · Score: 2

      I don't think you have actually tried XP. I have and while I *do* think that XP has some flaws, it is not just hacking. XP is intended as a way of producing high quality (but not guaranteed correctness, space-shuttle grade) code that solves the business problem. I think it does a good job at that; almost certainly better than traditional waterfall processes, for most business problems.

      Dave Thomas described two problems with XP that I agree whole-heartedly with:

      * YAGNI principle doesn't hold. According to XP you must always use the simplest design. However, sometimes experienced developers know the right solution from the start and doesn't have to get there by evolving the design.
      * XP puts too much responsibility back on the customer. In my experience this is very true; Too much choice is almost as bad as only being able to make decisions up front when you have little experience to base your decisions upon (analysis phase in waterfall process).

      The pros on the other hand is:

      * Higher quality
      * Tunable quality (you can turn the knob up and down as you go, not very far down though, or the process will stop working)
      * Fast pace
      * Solves the business problem - doesn't just deliver on a requirement spec (which describe a system that may or may not actually solve the business problem)
      * Happier and more productive developers

    14. Re:Read the book... by Orville · · Score: 2
      Ah... this is an entirely different problem set than what XP attempts to solve.


      I like to think of XP and agile methodologies as applying a more scientific-research model to programming. ("Experimental Programming")


      Engineering approaches focus on very well known, defined problems. The shuttle is a good example: the design of the craft itself has been known since the early 70s, the behavior of its systems are already well known through simulation and experiment years before anything is installed or implemented. (The unknowns, or 'poorly knowns' can result in disaster, ala 1986) Mechanical engineering of any type follows the same process. Behaviors, requirements, and designs are known far in advance of attempting to build or implement.


      However, business software is really not like that. Requirements are never that well known, and subject to change, even while the 'engineering' is being done. In chemical manufacturing, the unknown and changing conditions are tested constantly and adjusted as the process continues. (i.e. change concentrations, temperatures, etc. until you get the desired result.)


      Business software development, with changing requirements and scope, is more of an empirical process than bridge building (or 'engineering software' for things like space shuttles.) I don't imagine shuttle software ever needs to be refactored. Of course, most companies cannot afford to measure ship times in terms of 5 or 6 years, either.


      That's what XP is about. Design, Measure, and Adjust. How you implement XP is largely up to you.


      See: Ward's Wiki (The Portland Pattern Repository) I'd post a link, but I want to make you do a little work before hammering the server!

    15. Re:Read the book... by styrotech · · Score: 1

      As for the whole "software built like a bridge" crap... there's a bridge over the Mississippi near where i live. It causes traffic backups in both directions every day because it doesn't scale. They're planning on fixing it... it will take six years, cost millions of dollars, and make traffic even worse during that time. Does this sound like a software project to you?

      I think you're confusing bridge engineering (the designer) with traffic engineering (the client - ie a roading authority). It's still standing ain't it?

      That would be like blaming the programmer for software that bogs down with 200 simultaneous users, when the client asked for a cheap solution to handle 5 users.

    16. Re:Read the book... by Mark+of+THE+CITY · · Score: 1

      Right now, work crews are doing seismic upgrades to the older Bay Area bridges, such as replacing the rivets in the west side of the Bay Bridge with bolts and replacing x-bracing with sheets (you can see this work from the lower deck).

      --
      The clearance system sounds logical. It is not. It is completely arbitrary. -- John Bolton
    17. Re:Read the book... by Anonymous Coward · · Score: 0

      So, there you go. Even bridge engineering isn't like bridge engineering :-)

    18. Re:Read the book... by weebble · · Score: 1

      There's a big difference between computer programming and software engineering. Techniques like extreme programming may work well in a pure programming environment, in which the results of your work just don't matter all that much.

      Could you please define pure programming environment?

      Once you have defined this term, could you please explain exactly how each XP practice will not be effective outside of a pure programming environment?

      Thanks in advance.

    19. Re:Read the book... by Anonymous Coward · · Score: 0

      There is a difference between civil engineering and software. We can accurately measure when a bolt, chunk of steel, cable, etc. will break. While its not always right, it is amazingly predictable. For instace, a bolt made with x raw materials, in a particular manner, will be able to withstand x amount of pressure before breaking.

      They start with these known attributes and then build from that.

      Software starts with very little, in addition humans (who write the code) are less predictable than steel.

  22. Pair programming by codexus · · Score: 2

    The most scary part of the whole eXtreme Programming stuff is the pair coding. For those who don't know, it's the idea that all programming should be done by two people at the same time one actually coding and supposed to think "strategically" (about integration, structure and stuff like that).

    Now some poor programmers don't even have a PC for themselves. They have to share it with a colleague and they are even denied their most basic right to have a few square meters of personal space.

    I would never accept such working conditions but it's unfortunate that this seems to happen more and more. :( I hope people will soon realize that it's impossible to think when you have someone watching over your shoulder.

    --
    True warriors use the Klingon Google
    1. Re:Pair programming by Capt_Troy · · Score: 2

      Yea, I wouldn't want to do it all the time every day, but I find that two brains on something can make for much better code. We use the concept here when there is a difficult task to be completed. It seems to work pretty well.

    2. Re:Pair programming by Tom+Davies · · Score: 1

      OK, I haven't done pair programming, but the idea isn't that it's someone 'watching over your shoulder', you're working together, but one of you is doing the typing. You can trade spots pretty often though.

      Tom

      --
      I have discovered a wonderful .sig, but 120 characters is too small to contain it.
    3. Re:Pair programming by Anonymous Coward · · Score: 0
      You can trade spots pretty often though.

      That depends on who you're paired up with. :P

    4. Re:Pair programming by jheinen · · Score: 2

      "it's impossible to think when you have someone watching over your shoulder"

      The person watching is supposed to be doing the thinking. The other guy is supposed to bang out the code. i.e., one guy is thinking of the "big picture" and how it all fits together, while the other guy concerns himself with the details of syntax and writing code that runs. You alternate the roles periodically so each person has a chance to contribute to the "big picture."

      I find that in almost all cases, whether it's coding or testing, I get better solutions more quickly when I'm working with another person.

      --
      -Vercingetorix
      "Necessitas non habet legem." -St. Augustine
  23. Java Tools inside, but XP, too? by Waldmeister · · Score: 1

    I was impressed by this book review, so that I was already thinking about a purchase and checking at the german amazon website (guess where I'm from?) for price and availability.

    The book had two quite bad reviews there. (2.5 points out of 5, which seems to be a pretty bad rating for amazon) The main point from both was the missing link between the java build tools, which seem to be discussed considerably, and eXtreme programming.

    1. Re:Java Tools inside, but XP, too? by Anonymous Coward · · Score: 0

      Check out the reviews in the U.S. Amazon. The book has been reviewed by XProgramming.com, JavaRanch, Dr. Dobbs, and Java Pro. All the reviews suggest that you should buy the book. :o) links to more reviews /a

  24. Naked objects by fuzzbrain · · Score: 4, Informative

    One extreme programming tool written in Java which I haven't seen mentioned here is that of Naked Objects. I had play with it the other day and thought it quite a neat idea.

    1. Re:Naked objects by bay43270 · · Score: 2

      Naked Objects are not a tool for XP. They are simply a tool for presenting the business objects directly to the user. Although using Naked Objects might be easier if you were to use an agile process, they don't fulfill any of the needs of XP.

  25. Buzzword warning... by jonr · · Score: 2

    Java, Exteme Programming, Open Source. The title rings some warnings bells...

    1. Re:Buzzword warning... by glwtta · · Score: 2
      true, then again, the book does seems to be talking about programming in java, using open source (well, free, actually) tools and following Extreme Programming methodologies, go figure.

      And since when is "Java" a buzz word?

      --
      sic transit gloria mundi
    2. Re:Buzzword warning... by BitwizeGHC · · Score: 1

      A technology can become buzzwordified if there is a lot of hype surrounding it and those pushing it don't really understand what it's all about. For example, XML is a big buzzword today. Everybody is all jazzed up about XML, but not many people understand its benefits and shortcomings, or that there are more compact human-readable data formats out there (Windows .INI files and s-expression structures as written by LISP/Scheme programs come to mind); they just think that linking against expat is going to give their program some special interoperability magic.

      --
      N4st0r, trixx0r h0bb1tz0rz! Th3y st0l3 0ur pr3c10uzz!
  26. WORD! by Anonymous Coward · · Score: 0
  27. Cutting edge engineers always iterate by BigTom · · Score: 1

    I take it the guys who build F1 race cars aren't engineers as they are constantly changing and redesigning components.

    Oh yes, the "tin benders" who built the X planes during the 50s and 60s cannot have been either.

    Bridgebuilding... Sheeesh!

  28. extreme programming by grakwell · · Score: 2, Interesting

    My experience with extreme programming is that it is simply a bass-ackwards way of development.

    The advocates of eXtreme pr0gramming who love to "refactor" their code on a daily basis seem to have the same mindset as the people in my upper level CS courses that would spend the entire weekend in the computer lab on their projects, and complain about their grades and the time they spent afterward.

    I'd spend a couple hours making object relationship diagrams, program flow diagrams, etc beforehand. I'd show up at the lab Saturday morning at 9 and leave at noon, and the looks these students gave me were a combination of hatred, jealousy, and disbelief.

    IMO, it's just a process choice. Planned, focussed development, or tinker-till-it-works.

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

      Grow up. You have no idea what you are talking about my boy.

    2. Re:extreme programming by haystor · · Score: 1

      Good luck getting perfect specs at the start of the project.

      Programming isn't just about programming. Too often its about learning how to do the clients job to a minute detail. XP (to me) seems to be about one person learning the clients job, while the other is banging out some code.

      Keeping a client involved is a good thing. Showing them frequent results gets feedback before its too late.

      This style won't work for everything, but I see it as a valid way of working with business clients.

      --
      t
    3. Re:extreme programming by Anonymous Coward · · Score: 0

      I don't think you experience working on classroom exercises is going to scale to the real world. In the real world you have customers who don't really know what they want, but want to be and should be in control. I guess there is a point where common sense has to take over. Read a book on XP. It is obvious that you don't know what you are talking about wrt XP.

  29. it's only when u code Re:Pair programming by peter+greaves · · Score: 1

    you share a workstation when you pair prog. you don't share when u r reading mail, playing unreal etc, dpoing spike work to get a proposed idea fleshed out. and if you are in the right sort of projects and work spaces, PP is fun and productive. IMOit is very hard to do pairing for more than 2 hours at a time cos it is actually harder on yr brain - you can't goof off mentally for ten minutes when things get tough.

    --
    The tigers of wrath are wiser than the horses of instruction, but they eat more steak.
  30. Sorry, but I glean little from this review by SloppyElvis · · Score: 4, Insightful

    Extreme Programming has been discussed at /. before, and the links provided at the beginning of this review were useful, but the review itself falls short of mentioning how the authors integrate these tools with the extreme programming philosophy.

    Check me if I'm wrong, but from my initial readings, XP relies heavily on customer feedback, and short-term iterations serving to adjust the project plan "on-the-run" so to speak, which minimizes time loss incurred by the difficulty of making accurate long-term estimates in programming, and compensation made for fickle end users. While testing is a large part of XP, is only a part of XP. What does this book say about implementing XP on the whole? Anything? Is this just a book about tools you may use to test your software? Can I test my software if I don't use XP?

    The most valuable aspect of Java Tools for eXt[r]eme Programming is that it's alone in its market niche.

    Excuse me for being picky, but what is useful about that? Are you saying that this is good if you want generic text that has XP written on the cover, or what?

    The links describing XP give it a nice once-over on how you can think about the process of getting release versions out the door [which users and managers like]. I haven't seen anything that deals with the aspects of applications design that span beyond iterative releases, namely, systems that are proven to assist in the overall application architecture, and systems that are proven effective for creating flexible and useable GUIs. If you have a crack team of programmers, XP will cushion the unavoidables [ software is hard to estimate, and users change their minds frequently ]. Of course, you still need competent minds at work on the overall architecture of your code, and that planning seems to be an afterthought in XP ( features first, architecture second, perhaps this is why managers like it ;P ).

    Also, for any large project, you are going to have developers who display special skill in certain areas, and some who display ineptitude in certain areas. Before you start saying, "well, just fire the inept", remember that firing and finding replacement talent isn't all its cracked up to be, and "failure to exhibit genius" isn't cause to send somebody packing (nor is it always wise). XP takes the stance that everybody should do everything, but oftentimes you'll find that some on your team just don't have it like the top dogs do. In many cases, you want an expert to code a critical segment and, while it'd be nice if they could teach the whole team their skills, in reality, that is not always possible. I believe in peer learning, but everybody do everything, well... excuse the pun but that sounds a little "extreme"

    XP has good guidelines, but I have many questions about how to interpret those guidelines, and a text that puts XP on the cover should say something about them, IMHO. So you say this book is about tools for XP, not XP itself. Ok, then what tools does it discuss other than those used to test code? Are there any other tools? Are these tools only for use with XP?

    I guess what I can take home with me is that if the buzzwords "Java" and "XP" are on your cover, than somebody will publish your book.

    1. Re:Sorry, but I glean little from this review by dismayed · · Score: 1

      You gleam little because you don't have the base knowledge that this book expects from its audience.

      If you were expecting an overview of XP you were completely off base... You should perhaps check out the SERIES of books on XP at your local bookstore...

      I'm glad that you pointed out that you still need qualified people in order to develop software... However, by implying that you would like to fire the inept you are overlooking how pair programming helps share the knowledge between the specialists that you have in your organization.

      Finally, if you want to know what XP has to say about developing flexible gui's, etc, perhaps you should read up a bit more on Design Patterns... then see what Beck has to say about using them in extreme programming.

      Have a nice day.

    2. Re:Sorry, but I glean little from this review by bay43270 · · Score: 2

      Your post seems to hint that XP was presented to you as the be-all-end-all of programming methodologies. I don't think anyone well educated in the subject would recommend it for all projects.

      I don't pretend to be an expert (just regurgitating some information from a guest speaker from Object Mentor at a JUG meeting), but from what I understood there are several reasons not to pick XP for a given project. Some that I remember include lack of management buy in (XP can't be forced on a company), extremely large projects that can't(won't) be broken up, or too many dead-beat programmers to fail (although he only conceded to the most extreme example... one guy worked in a programmers union).

      XP isn't for every project.

  31. "Extreme" Programming, huh? by jack1323 · · Score: 2, Funny


    sunday, Sunday, SUNDAY...
    At the Megaplex Arena,

    Extreme, In Your Face, Programming Action!!!!
    Java, Perl, C/C++, VB, and many, many more...

    Geek-tastic and nerd-a-riffic!
    Tickets going Fast!!!!!

    Remember, this Sunday at the Megaplex, EXTEREME Programming!
    We'll sell you the whole seat, but you'll only need the edge!

    1. Re:"Extreme" Programming, huh? by Fastball · · Score: 2

      The Ford team thinks the Chevy team is a bunch of wimps with no HORSEPOWER-POWER-POWER!!!

    2. Re:"Extreme" Programming, huh? by Anonymous Coward · · Score: 0

      Wow... Why do you even bother.... Its obvious you don't care about XP or J2EE development. Do you even know what XP is about? Do you even care? If you don't care why are you posting? Get a hobby. Do you have friends? Call your mom. She misses you. Unless of course you still live at home (likely).

  32. Can XP work? by Tomster · · Score: 2, Insightful

    Yes. I have ex-coworkers who are in a very XP environment. Things they have learned include:

    - XP is very tactical. You need someone at the strategic level guiding and leading.
    - Productivity drops significantly after about 40 hours per week (they collect detailed statistics about defect rates showing this).
    - Individual productivity appears to suffer, but the result of pair programming and short (two-week for them) iterations results in code that is easy to work on (read: good design) and very low on bugs (read: well written).

    They've put a lot of support around their XP team to make XP effective, in the form of tools, processes, and people (roles). Without that, I suspect they would be disorganized and chaotic.

    There's a time and a place for just about every methodology out there. XP is an effective approach to development as long as it's done in the right environment by people who understand (or can learn) how to make it work for them.

  33. who needs extreme programming by super-flex-o-matic · · Score: 1

    when theres [extreme ironing]

    1. Re:who needs extreme programming by Anonymous Coward · · Score: 0

      great stuff!
      thanks for the link.

  34. Managers Hate Extreme Programming by Apoptosis66 · · Score: 2, Insightful

    Since this thread is turning into a discussion about Extreme Programming I thought I would throw in my experiences with it. I work on a web application which when I first joined the project was run very much "by the seat of its pants". The project was in its infancy and we were in constant contact with customers who had wildly verying ideas of what the finished product should be. At that time we were testing/building constantly with no documentation other than code comments. We were also taking requests right until the release. For these reasons I say we were doing Extreme Programming. Our customers loved us and we quickly made the project one of the top projects in a very large company. On a side note I have often wondered if Extreme Programming is a simply a justification for what programmers tend to do when left on their own. Well then our success bit us in the butt. The big wigs took notice and labled us "Mission Critical". Now we spend more time documenting the application then writting code. Any requirement a customer wants has to go through several levels of review, and they are never accepted just before a release. Management now "measures" quality by number of defects openned on a release. (Yes I too reject the whole notion of measuring a quality by the counting of ANYTHING). Releases now take longer, frustrate customers more, and have lowered the moral of the developers who now feel they are simply documentation monkeys. Yet Management insists the project is better than before. The moral of the story I have taken away from this experience is that even if extreme programming is the better method for a given project management will regect it. It results in more defects being found, more change which scares the hell out of management types, and finally code which isn't well documented so that management can't replace skilled help with code monkeys at a moments notice. You don't have to count beans to make coffee. However, management won't let you make coffee at all without knowing how many beans are in each cup.

    1. Re:Managers Hate Extreme Programming by dismayed · · Score: 2, Informative
      From what you have said, you were not doing extreme programming.

      With XP you would have gathered your stories first... (requirements) After that you'd have decided which stories were important for that release, and then you would've worked on implementing *those stories* in that specific release... You would not have included more stories than you could actually complete in your release cycle. Your managers would've been perhaps following the metrics recommended by the big blue XP book also, if they were really into measuring things.

      Were you doing unittests? If so, you might have had managers measuring the number of unittests as a metric... perhaps measuring the number of functional test that were passing fo the stories that were in that release... just ideas...

      I'm glad you were able to rant, however, don't confuse what you experienced with extreme programming.... you are the victim of bad management.

    2. Re:Managers Hate Extreme Programming by Anonymous Coward · · Score: 0

      > Management now "measures" quality by number of defects openned on a release. (Yes I too reject the whole notion of measuring a quality by the counting of ANYTHING).

      OK, I'll bite: since you don't want to measure quality by measuring anything, how *do* you measure/quantify/know you've got it?..

    3. Re:Managers Hate Extreme Programming by Apoptosis66 · · Score: 1

      I will admit what I know about Extreme Programming is limited to a few things I haver read here and there so your probably right what we were doing was probably not Extreme Programming. I was making the association based on little or no documentation, greater interaction between developers and customers, and changing requirements. I understood these to be qualities of Extreme Programming, but thats probably not the whole picture. Well thanks for listening to my rant :)

    4. Re:Managers Hate Extreme Programming by Apoptosis66 · · Score: 1

      I measure quality by asking the people who use it if they like it, in that its a Qualitative experience. This is why we have two words different words. They aren't to be mixed. Perhaps measuring isn't the right word because when you survey you are measuring customer reaction/satisfaction. But I disagree with using Counting Quality. Once in a meeting I heard the phrase "Code reviews increase Quality 94%". I knew then that the people making decisions were nothing but bean counters.

  35. Hmmm, the waterfall methodology by royalblue_tom · · Score: 2, Insightful

    XP is about realising what you are doing, and how. There are too many projects that claim to use a one step design-build-test, overall, but end up having version 1,2,3,4 ...

    XP realises that

    a) there will be feature creep,
    b) you must test, retest, and test again,
    c) it's really how most developers work ...

    If you had to change a bridge because the river got wider, would you insist on using the same parts as before - regardless of how long the bridge needs to be now?

  36. Rubbish... by MosesJones · · Score: 3, Interesting


    This isn't a troll, or flamebait, its a standard old fashioned flame.

    Peer Programming means continual review by two people, two bad people = bad code. 1 good + 1 bad = 1 slow average. Code review must be done by several people and must also include a senior resource to help less experienced ones.

    This was also the tennant behind the Team oriented approach of the Mythical Man Month, which was based around the assumption of everyone should be good, just fire the rest.

    XP is basically the re-hashing of some long held good ideas, interspersed with some total drivel from a bunch of hackers.

    XP DOES say don't design the overall architecture of the system, it DOES say don't design how each service should work. It relies on the concept of Unit Tests where anyone will tell you that bad developers = bad unit tests.

    XP is a sham and a fraud that is only allowed because the industry doesn't care about quality.

    --
    An Eye for an Eye will make the whole world blind - Gandhi
    1. Re:Rubbish... by geekoid · · Score: 2

      But your forgetting some of the best qualities of XP, also the reason it won't go very far.
      a)It holds management accountable of each step, module, and test. we all know how management likes to be held accountable....

      b)If you have 1 good programmer, and one bad, or Jr programmer, it gives them the opportunity to improve. It might be slow at first, but you sould end up with 2 good programmers. Mentoring can be a wonderfull thing.

      c)everyone knows the code. of course properly documented code does this as well...

      --
      The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
    2. Re:Rubbish... by vanguard · · Score: 2

      I've done XP. It's a good thing.

      When you pair a senior and a jr person together the jr person really does learn and improve. Also, the senior person does benefit from a second pair of eyes on the code.

      XP doesn't say don't design the overall arch. It does say that you shouldn't attempt to design the every last detail. Those details are often implemented differently than the design because something new is discovered during development. Instead, XP suggests you design the easy 80% up front and leave the detailed 20% for the engineers.

      Finally, studies prove that pairs take 58% of the time that two seperate people do. However, the lost 8% is more than recovered by the improved quality of code. (I'm too lazy to find the paper.)

      Pairing up is good, small design up front is good (for smaller projects), and automated testing is good. Those are the three foundations of XP.

      Vanguard

      --
      That which does not kill me only makes me whinier
  37. OK by thenerd · · Score: 5, Insightful

    This isn't a flame, it's a standard old fashioned rebuttal.

    Your point about pair programming is completely groundless.

    Scenario 1 - no pair programming
    Two bad programmers, bad code
    One good programmer, one bad programmer, some bad code, some good code.

    Scenario 2 - pair programming
    Two bad programmers, bad code but any mistake either of them see will be removed, improving the quality of the code.
    One good programmer, one bad programmer, code up to the standard of the good programmer, and the bad programmer learns, hopefully becoming better.

    XP does not say 'don't design the overall system' - you are misrepresenting it. A look at this talks about the plan for each release. Sure, bad developers = bad unit tests, but bad developers = bad product, nothing will guard you against that. Nobody said 'Extreme Programming will mean you have no bad developers.'

    thenerd.

    --
    The camels are coming. I'm in love.
    1. Re:OK by wickedhobo · · Score: 1

      You seem like you might know something. I have a couple of questions about this.

      First, I recently went to an interview where the development manager told me that architecture goes out the window when using XP. Extremeprogramming.org doesn't say this (nor anyplace else I've seen). In fact, extremeprogramming.org just says that the architectural knowledge becomes the domain of all of the developers, not just a primary architect. I really hope that the latter is true. What has your experience been? I'd like everyone who has done XP to wiegh in on this. If the former is true, I think I'll pass on XP.

      I've been a J2EE architect for a while, and architecture counts.

      Second, a lot of this sounds kind of like a ripoff of the Rational Unified Process (RUP) of development. Obviously the paired programming thing is different, but what about the rest (i.e. iterative development seems to be key in both ways).

      So, why would I choose XP over RUP? RUP certainly has better industry acceptance, wider use, and better known success. These things don't mean that XP can't spank RUP, but I think I need convincing (maybe I'm feeling gunshy after an interview with a guy who didn't know what he was doing).

      --

      --Stupidity is Self Curing!
    2. Re:OK by richieb · · Score: 2
      [...] and architecture counts.

      Of course architecture counts. XP does not eliminate architecture or design. However, XP tries to get away from the "big design up front" - where you design for three months, before writing any code.

      In XP you try to build pieces of the system that work on their own - but still within the overall design and architecture.

      So, why would I choose XP over RUP?

      XP is meant to be a lighweight method, one that does not get in developer's way. By the time your RUP developers are done writing use cases, the XP developers will have a partial system up and running and the users will be able to discover that their use cases were wrong. No expensive tools are needed - just whiteboards and index cards. :-)

      No methodology/process will take place of smart developers, no matter what the vendors of fancy tools say.

      --
      ...richie - It is a good day to code.
    3. Re:OK by wickedhobo · · Score: 1

      I didn't make the claim that a methodology would take the place of good people (if I implied that, then sorry). However, large projects I've seen where people just start developing have a much higher failure rate than projects that have a good design process up front (however, I'll grant these cases did NOT use XP).

      You might have a system up and running, and it might be the best/coolest tech ever, but if it doesn't meet client needs or expectations, it's still a piece of shit.

      Why is XP different? This isn't a flame question. I really want to know. I want to hear some success stories. I've had a great deal of success with RUP, but if XP is better, I want to know. I'm not stubborn. I'll switch my projects to the best methodolgy in a hearbeat. But I gotta be convinced.

      Also, and XP may circumvent this, but with a good design process, every hour you spend in design, you prevent 5 hours of recoding when you get slapped around because of refactoring or something you missed, whatever. How does XP deal with this?

      Just cuz I spent three months in design, doesn't mean I didn't deliver the right project, with the goods on-time and on-budget. RUP puts just as much emphasis on iterative dev and client interaction as XP. Whether or not it gets me somehwere faster in the short run doesn't matter to me. If it gets me to make a better product, and make a client happy does matter.

      --

      --Stupidity is Self Curing!
    4. Re:OK by Frank+Sullivan · · Score: 2

      Have you read the XP books yet? Meeting client expectations is first and foremost of the XP processes. Does RUP or any other methodology recommend having an on-site customer that the programmers can talk to at any time? XP does. The "release early, release often" approach gives the customer critical feedback into the development process, and short iterations plus the story mechanism keep the pace of development under control.

      I have no doubt that projects that just start coding with no design AND no XP techniques have high failure rates. They have no way to fix anything! The beauty of XP is that, by constantly refactoring the code, there is very little to fix, and you're not afraid to fix it when something needs fixed. That's where unit tests and continuous integration come in. Since i started using XP techniques (not full XP, unfortunately), i've never been "slapped around" by refactoring or something i missed. I've never spent more than a half hour refactoring anything to get it working again, because i had my unit tests to guide me.

      I also don't think XP is anti-design. It's just anti-BDUF (Big Design Up Front). Keep a general architecture in your head, but do the smallest bits you possibly can, and make them work. I do design sessions all the time. A half hour in the cafeteria with some paper, or a whiteboard, and i have a healthy day's programming ahead of me. Yes, i make mistakes. I'd have made those same mistakes if i spent months designing up front. Except now i can *fix* mistakes in rational time.

      I don't think XP is competing with RUP and other iterative methodologies so much as waterfall design and the Ball of Mud antipattern. Unfortunately, the latter two are the primary design methodologies of 95% of the industry.

      --
      Hand me that airplane glue and I'll tell you another story.
    5. Re:OK by wickedhobo · · Score: 1

      good answer. How would you recomment that I go about beginning to use XP?

      --

      --Stupidity is Self Curing!
    6. Re:OK by chromatic · · Score: 1

      XP is designed to handle specification changes very well. Since it avoids the big design up front, it's easier to recover from a change due to a misunderstanding or the customer changing his mind. The point is to prevent recoding (or any sort of risk) by breaking a project into very small tasks, by communicating regularly with the customer, by unit and acceptance testing, and by tackling the tasks with the most business value in each iteration.

      Design only what you need right away, and no more. If you have unit tests in place to exercise the code and if you have acceptance tests to exercise the specification and if you have refactorable (and refactored code) in the simplest possible state, the cost of change goes way down.

  38. Whoohoo by Anonymous Coward · · Score: 0

    Jump in, we'll take you for a spin, and show you round the Wheelie World
    Hop on it's fun to come along, and take a look at Wheelie World.
    You'll be surprised how good it feels.
    To zoom around, and you'll wheel so merrily
    With me,
    You don't need a ticket, 'cos we'll get you on for free.

    And if you see the witch Fenella, don't be worried,
    'Cos there's no cause for alarm. (ha ha ha ha)
    'Cos we've got Chorlton, who's a dragon,
    and he'll keep you free from harm (ho ho ho ho)
    It's fun at anytime of year. So put your wheels in second gear,
    And then hold tight,
    Alright,
    We'll show you all the sights
    Of Wheelie World......
    Ba-dum.

  39. JFCUnit by Dix · · Score: 1

    Difficulty JUnit testing with a GUI? Try:

    http://sourceforge.net/projects/jfcunit/

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

      I agree. JFC unit takes JUnit testing to the GUI level quite nicely.

  40. Ick by Anonymous Coward · · Score: 0

    Extreme Programming = Extreme Crap!

  41. Java Tools book, not extreme programming book by billtom · · Score: 1

    I have this book and I'd almost recommend it but I think that the main point that needs to be made is that it's not about extreme programming (despite the title), it's about various tools that have come out of the Java (and XP) community.

    The title is a very unfortunate marketing ploy. I say unfortunate because putting XP in the title will probably drive away Java programmers who don't care for XP.

    But the tools it discusses (Ant, JUnit (and family), and JMeter) are applicable to any Java project, regardless of your development methodology. And beyond the first twenty pages or so of the book, the authors really don't mention XP.

  42. Re:Consider purchase from half. [OT msg for sethf] by Anonymous Coward · · Score: 0
    Seth, since you won't enable comments in your journal, I'm responding to it here:
    The fact that people look at what he did, and look at the response from the rest of the group, and call it "infighting" or "airing dirty laundry" is frankly an insult to the Censorware Project and its work.
    I accept that the above is true. Michael really is at fault, and the conflict really shouldn't be looked at as "infighting" or "airing dirty laundry" EXCEPT for your actions in response. Even if you are 100% 'in the right' on this, the way you've handled it, slandering him, maintaining a slashdot journal almost entirely about him, advertising it in your sig, writing your pages of rants on your website -- it's not what most people would call "taking the high road", is it?

    I know you want/need to raise awareness about what he did, and I agree it was a nasty thing, but consider this: When I stumbled into your little dispute, and read your and his versions of things, I really ended up with no respect for either of you. It wasn't until after doing further reading (ie of stuff written not by you) that I came to realize michael really was in the wrong (regardless of his reasons, stealing the domain name was inexcusable), but most people won't take the initiative that I did and will simply laugh at the both of you and move on.

    An experienced netizen like yourself should know better than to participate in such an ugly public flamefest. Shame on you, sethf.

    -- phyxeld (posting AC cause it's offtopic and should start with score:0 to begin with)

    p.s. I guess posts like this are what you're worried will end up in your journal if you enabled comments, eh? :)
  43. XP worthless by SLOGEN · · Score: 1

    Extreme Programming.

    It's a (GOOD) marketing brand for a loose set of unrelated ways of trying to solve complex problems in the field of application programming. Not much more.

    XP will work for talents (and a few trainees) who, if left alone, would probably work somewhat like that, not for "people" in general, and especially not for the workplaces that need a "development model", and sees XP as a Solution (yes the "S" is on purpose :).

    Although people in general (especially the one who should not use XP) think it's great -- I fail to see the benefits, beyound rationalizing and "memorizing" the way talent's work.

    Educated: Someone with a vast knowledge about a problem-domain, and means (often approximating algorithms) to recognize problem/solution pairs.

    Talent: Someone who "just does stuff", doesn't have to think about it. Often turns out to outperform educated people by doing "The Right Thing", even when they should not be able to :)

    Educated Talent: Rare! explosive mix! Hire at all cost!

    PS: I don't think of myself as talented at more than 2-3 (smaller) things/fields.

    --
    SLOGEN [ http://ungdomshus.nu : Sebastian cover music]
  44. Even stupider by Codex+The+Sloth · · Score: 1

    Extreme programming is based on the following. Code reviews are good (questionable but we'll assume this for the moment), rewriting code is good (ditto) so doing these things ALOT (or in the parlance "to the extreme") must be really good. Basically, thinking things through is hard to do so just keep iterating on the solution till your "done". "done" is defined as the point in time when the client stops paying for your code wanking. Consequently, you don't see much of it outside of consulting.

    --
    I am not a number! I am a man! And don't you ... oh wait, I'm #93427. Ha ha! In your face #93428!
  45. Another Good Java Tool by Daftspaniel · · Score: 1

    Maybe not Extreme but I find it useful
    BlueJ

  46. Extreme Programming *can* be Software Engineering by fastdecade · · Score: 1

    Yes, software engineering is different to computer programming. Like chemical engineering and chemistry, one is a practical application of science, the other is a science itself, which the engineering discipline heavily draws upon.

    BUT it's a bit extreme (pardon the pun) to say software engineering is "at the other end of the spectrum". Software engineering, like any professional engineering, is a discipline where you consciously investigate how much error is tolerable and establish a plan accordingly.

    The exteme programming techniques, interweaved with tools, and managed carefully, can be great software engineering tools for the right kind of project. The skill is in choosing the ones that are suitable for the job - which may be none or all.

    Sure, most of these things won't work too well ofn a safety-critical system, at least not if they are the main way to ensure the desired quality. But for a typical, small-medium business application, extreme programming might well be chosen as the most productive route to the necessary quality.

  47. Re:Extreme Programming: Unrealistic? Yup by Anonymous Coward · · Score: 0

    my company (hundreds of developers) is in the process of adopting XP (slightly modified) for large scale projects involving large numbers of developers. my project has 60 or 70 developers but they split us up into labs of about 10-15 coders. we also usually do pair programming (two people at a keyboard). and we don't have a set machine. it can change weekly or daily even. We don't get to make very many architechture decisions. There is a very small team (~5 people) who come up with stories and general design. I have only had a couple weeks experience doing this but here are my initial observations.

    i think a lot of the things XP tries to accomplish are really good:
    -- like the whole concept of greater communication. its easy to ask questions about someone else's code or how something is supposed to work when all you have to do is shout out across the room rather then email or phone tag or walking. you might not think it makes that much of a difference but it does.
    -- also its really nice not being isolated in my cube in the corner all day. The lab is fun. people actually talk and not just about functionality of code.
    -- at the end of the week we demo our work to everybody which is cool because i feel like my stuff gets some attention. before XP, i felt like if i did a good job, no one noticed, and if did a poor job, no one noticed. so why bother?

    things which bug me about XP:
    -- the end of week demo is cool right now while we are playing with some GUI stuff. but i'm a little doubtful as to how cool presenting will be for core business functionality. I mean showing yeah i made this button is kind of cool i guess. but demoing yeah i implemented this complex algorithm and its here in this method which take 4 parameters... maybe.
    -- i HATE working with a partner at my keyboard. they can't use Vim, they have to use their own pansy notepad like editor and i have to sit their and watch in mute frustration while it takes my retarded partner 10 minutes to do in notepad (well, Eclipse) what i could have done in Vim in 30 seconds. In theory, XP says that my partner should learn from me, but in practice my partner doesn't want to learn a better way because they have to think. some people want to learn, but most just want to get along. its like freshman chemistry when your lab partner made you do all the work while they went bowling. Or maybe my partner know emacs instead vi. In any case back and forth with the keyboard is not simple. Finally, what if you don't like your partner. or what if they smell? seriously. its one thing to "be professional" and "get along" when they sit in a cube far far away. but when they sit next to you for 8 hours a day 5 days a week, it sucks. How many married people spend THAT much time together.
    -- i think pairing is a waste of time. if my partner knows what they are doing, they don't need my help and they code away. occasionally minor design issues come up and we discuss them. i guess thats cool. but in between i'm bored. or if my partner doesn't know what they are doing, i have the choice of pointing out mistakes every 3 seconds in which case they get frustrated and i get frustrated -- i guess i'm not a very good teacher (but hey i'm a coder not a teacher) and watching them do things the long way. so usually i read a java book while my partner codes unless i have the rare partner who actually wants to learn.
    -- one final problem with pair programming: what if my partner is really bad with english. this is hugely frustrating. me: "should we extend this class or make a new one over here?" partner: "yes of course!" ??!!#@$ they can be nice people and smart, but if they don't know english, discussing everything that gets typed becomes enormously slow.
    -- i HATE not having my own computer. This would not be a problem if our company used unix on the desktop since unix has real roving accounts. but we use windows. so EVERY time i get on a new machine i have to install Vim, Mozilla, Cygwin and the 35 other coding tools i use, configure them, and configure explorer to show complete file names, not hide files, not download and install viruses, etc, etc, ETC, ETC!! arrrrrrrrrg!!! If you are going to do anything close to XP and pair programming it is a MUST that you use unix. about the only thing that actually roves on a roving windows account (win98) is the background color. how useful.

    so thats been my experience. to sum up: greater communication is cool and pair programming is not cool.

    you can email me at slashdot@NOSPAMTHANKStoiletmonster.org

    disclaimer: i don't speak for my company.

  48. Have you ever met a bad programmer? by Gorimek · · Score: 2

    One good programmer, one bad programmer, code up to the standard of the good programmer, and the bad programmer learns, hopefully becoming better.

    I haven't tried pair programming, but my experience with bad programmers is that their main malfunction is often that they don't realize they're bad. They think they're super smart, and will argue ferociously for their demented complicated schemes. If you pair a good and bad programmer, you're likely to end up with either no code, or if the good programmer is willing to compromise to get something done, a loopy design that's been polished to work adequately by the oversight of the good programmer.

    I guess my point is who is the most pigheaded person may have a bigger influence on the results of pair programming than who is the better programmer. And that you often get more humble the more you learn in this business.

    1. Re:Have you ever met a bad programmer? by Hast · · Score: 1

      They are not bad programmers, they are just bad team-workers. If you have people that are unable to see their own folly then it's not going to help if you let them work on their own. Most likely they'll end up with prima-donna code which is useless. (And noone else will understand it.)

      If you use pair programming you get a discussion on the topic and hopefully the bad coder can learn the error of his ways. Otherwise you will at least have other people which know his/her code when the bad coder is fired.

      And XP recommends that you swap code often. The aim is that you shouldn't get to attached to "your code" becuase that's a common way to get bugs. (Because it's never my code that's buggy.) And it get's more eyeballs on the code. (And the prima-donna thing is remedied.)

    2. Re:Have you ever met a bad programmer? by tpv · · Score: 1
      my experience with bad programmers is that their main malfunction is often that they don't realize they're bad. They think they're super smart, and will argue ferociously for their demented complicated schemes.

      My experience [*] is that the problem with bad programmers is generally they don't think beyond the immediate.

      • They produce output from the system, without ever thinking about who is going to read it, and whether that person is going to understand it
      • They fail to consider exception scenarios
      • They fail to think about the real business need, and blindly implement whatever they understood the requirement to mean, even if that doesn't make sense

      It would vastly improve the quality of the code crossing my desk if these people had someone sensible sitting with them.
      It's generally too late at the review stage to really drill the point into them that they didn't use their brains.
      However, if I can sit them down early, talk through it with them, and force them to think, then eventually (slowly) they learn.

      * My situation is that I do a lot of code reviews for (generally) small maintenance changes to a banking system. YMMV.

      --
      Read more of this story at Slashdot.Read more of this story at Slashdot.Read more of this story at Slashdot.
  49. Re:XP Java for Extreme Robot AI Minds by Anonymous Coward · · Score: 0

    You fucking rule man!

  50. Extreme Programming? by SSJ_Ramon · · Score: 1

    Sounds like the Extreme Fajitas from the Tchotchke's chain restaurant in the Office Space movie.

    Would you like some Extreme Programming? Some nachos?

    --

    This .sig is void where prohibited, no purchase necessary.
  51. Some clarifications by Codex+The+Sloth · · Score: 1

    The part of extreme programming I object to is taking things that are common sense when done in moderation and then asserting that if a little bit is good then a lot is great. Code reviews are rarely as useful as say a design review is. Too often it's a "find my bugs for me" type effort or people correcting grammar in comments. The worst part is that managers assume that because other "experts" looked at the code it is valid. Since most people don't single step new code through the debugger (something that actually is useful) and which is a lot cheaper than a code review.

    There's a big difference between two people sitting together to work on a problem and two people chained to the same computer in the vain hope that they will produce better results. It's the old "two men dig a hole in half the time of one" syndrome.

    But that's just me and I could be wrong. Maybe it does make alot of sense.

    --
    I am not a number! I am a man! And don't you ... oh wait, I'm #93427. Ha ha! In your face #93428!
    1. Re:Some clarifications by Anonymous Coward · · Score: 0

      There may be some variations in what the term 'code review' means, and I certainly don't know anything about 'extreme programming', but I find code reviews quite useful. I've been on both ends of the situation where programmer A has spent half a day tracking a bug, and when programmer B walks up and A runs through an explanation of the problem, B points out the problem after a few seconds thought. The code reviews I've participated in are simple formalizations of that--you grab someone who isn't in the middle of something, and talk your way through the code, answering questions as the come up. You can catch a lot of non-fatal typo/thinko bugs that way. Single stepping helps too, but having a different pair of eyes looking at the code, even briefly, will catch things the author's eyes will slide past a dozen times without noticing.

  52. Software Engineering and Open source by nadiizu · · Score: 1

    I am a CS major with focus on software engineering. I have been working with XP and agile methodology for some time, and doing some research to apply these principles on geographically distributed projects open source projects in particular. I also started doing some research on different ways to improve the development of open source projects. I haven't received much assistance or interest from the faculty at my CS department. I am wondering if anyone, or any school doing any related work? Or is there any project established that would help even improve more open source development. I think there is a lot of good things to be learned from open source development but better tools and an established methodology can even make open source software development faster, better quality, and easier.

    1. Re:Software Engineering and Open source by orenmnero · · Score: 1

      I have an open source project that uses many of the principals of XP. The most important ones used to guarantee quality is heavy reliance on unit tests, acceptance tests and continuous integration. Much of the code was pair programmed but with a distributed application that is not always possible. Fortunately open source compensates by being so well geared to constant peer review. The name of the project is QuickFIX (http://quickfix.thoughtworks.com). It is an implementation of an open protocol used for financial transactions. It should be noted that this application is in production as a mission critical component in many financial institutions. In fact I know it is being used by one of the major online brokerages for routing customer stock trades.

  53. anyone tried storm? by Anonymous Coward · · Score: 0

    Unfortunately storm (xpstorm.sourceforge.net) is not mentioned. It's a tool which can replace story cards in a distributed team where XP would otherwise not be possible. Stories are versioned, risk and value can be planned and it also manages your documents. GPL.

  54. Why Ant? by pmz · · Score: 1

    One thing I really don't understand is why Ant reinvents the wheel.

    Many people have been using makefiles successfully for years, and, now, part of the Java community comes out and says, "Make sucks. Let's just throw it away (even though it is really mature) and start over from scratch (instead of implementing Make in Java)."

    I have found that the common arguments against Make really aren't very strong. The tab issue is really minor. The only issue that bugs me is that parallel builds aren't possible with most implementations. There are other more theoretical issues, such as the dependency graphing, etc., but I don't see Ant taking on these much more complex issues.

    My other peeve is that Ant is fairly Java-specific, while Make is really language-independent (I use it for Java, C, C++, release management, testing, etc.).

    Is the popularity of Ant really just a case of jumping on the bandwagon?

    1. Re:Why Ant? by Orville · · Score: 4, Informative
      Well, a couple of years ago I was on a project where I was assigned the informal (at the time) job of 'build engineer'. I started off with Make, and adopted and 'fell in love' with Ant (so to speak). Here's why:
      • On the project, we had a large number of objects (near 500, if I recall correctly), including GUI, EJB, and 'normal' object classes. Just maintaining manifest files was beginning to be a problem.
      • Unfortunately, we had cross-platform issues. The 'main' builds were being done on a Solaris machine, but most development was being done on Windows machines. (JBuilder at the time was a Windows-only toy.) Installing versions of 'make' (even cygwin/gnumake) was not going to be practical. Any other version cost $$$.
      • I soon found out the true strength of ANT: it is extremely flexible and extensible to make 'hard' tasks very simple. Automated deployment to servers, unit testing, and release management can be done without knowing sometimes cryptic Makefile commands.)
      • Ant is initially geared towards Java, but can be used to compile anything that has a command line compiler. (I saw a talk given by Martin Fowler where he joked about annoying a Microsoft engineer by creating an Ant process that would automate builds and tests of Visual C++ files!)

      Ant isn't really 'reinventing' the wheel, but making the wheel easier to manage (one file) and extend (ant tasks). It's a neat tool to have in the arsenal; I personally have found it easier and more intuative than Make for more 'complicated' projects. (Now, if I could just create an Ant script to automate and test builds of Oracle Pro*C programs...)

    2. Re:Why Ant? by Anonymous Coward · · Score: 0

      Ant is preferable to Make because the format is easily parseable by external tools. As a result it it easy to integrate into existing IDES. The format is also extensible and because the implementation is open source the likelihood of
      every vendor build there own implementation is slim so we won't have to deal with make/nmake madness. Finally for my own project (a 10 man-year web-services platform) moving from Makefile to ant reduced build times from 2hrs to 3 minutes. No, thats not a typo 2hrs to 3 minutes. This is primarily due to the fact that Ant doens't spawn a new process for every Java compilation step.

      One final thing, even Stu Feldman (the original author of Make) admits that if he could go back in time he wouldn't use tab as a seperator :-)

    3. Re:Why Ant? by pmz · · Score: 2

      Actually the speed improvement is due to javac not Ant, and the same result can be achieved in a makefile. The difference, here, is that Ant is intended for Java programs and has built in this optimization already.

      For example,

      all: Class1 Class2
      javac -classpath . `cat ClassList.txt`
      rm ClassList.txt

      Class1: Class1.java
      printf "Class1.java " >> ClassList.txt

      Class2: Class2.java
      printf "Class2.java " >> ClassList.txt

  55. VNC Baby! by rbeattie · · Score: 2


    A co-worker and I stumbled onto a GREAT way to do pair-programming: VNC.

    It's awesome, you sit facing each other on your own computers (thus having your personal space) and then you can work together in an instant just by logging on using VNC to see the other programmer's computer. VNC is fully interactive and you both have control of the keyboard/mouse at the same time. It's perfect for pair programming.

    There are many times when all you're doing in programming is a bunch of busy work. Copying and pasting fields from a database into get/sets of a Java class or something ridiculous like that that doesn't really need two heads. These can be done solo, but then when you start to get heads down into the business logic, you can just say "Hey, let's work together on this bit," and your coworker just logs on and you start collaboratively working together again.

    This way there's no fighting over the keyboard ("Oh, christ! When are you going to learn to touch-type, give me that!", "No! You drive me crazy with your backspacing... I'll drive."). Whoever has the right idea can type just by doing so and the other person can watch for errors, comment on style, etc.

    Mark my words, it works really well, it should be part of the XP standard.

    -Russ

    --
    Me
  56. Book has a web site that gives a good description by Anonymous Coward · · Score: 0

    Java Tools for eXtreme Programming Java Tools for eXtreme Programming describes techniques for implementing the Extreme Programming practices of Automated Testing and Continuous Integration using Open Source tools, e.g., Ant, JUnit, HttpUnit, JMeter, and much more. http://www.rickhightower.com/JavaXPToolkit/index.h tml

  57. More clarifications by Codex+The+Sloth · · Score: 1

    My experience with code reviews at several companies has been a bunch of people get in a room and study the printout of the source code (usually for an hour or two). As you might imagine, since people are not computers, this tends to be rather unproductive. What you would describe I would term collaboration or "getting help" which tends to be much more useful ;-)

    --
    I am not a number! I am a man! And don't you ... oh wait, I'm #93427. Ha ha! In your face #93428!
  58. Review for Java Tools For Extreme Programming DDJ by Anonymous Coward · · Score: 0
    This book has been reviewed before see reviews at book web site
    Reviews
    Review from Dr. Dobb's Journal

    "It is ... a pleasure to review ... books that are both original and useful. The first is Richard Hightower and Nicholas Lesiecki's Java Tools for Extreme Programming, which describes five new Open-Source Java programming tools... Java Tools is readable and well organized... As a bonus, the authors show how to use these tools together; for example, how to automate reexecution of JUnit tests using Ant."


    --Gregory V. Wilson


    Check out the full review at


    http://www.ercb.com/ddj/2002/ddj.0205.html


  59. Review from JavaPro by Anonymous Coward · · Score: 0
    This book has been reviewed before see links to all the reviews here!

    Review from JavaPro Magazine

    This book is the first of its kind, covering topics that haven't been explored this directly anywhere. It does a remarkable job, covering not just the tools but the philosophy behind good unit tests and frequent, automated builds...." ... ... "The philosophy behind this material is modern and forward thinking. ... (The book has the ) potential to make you a better programmer and better able to deliver higher-quality code on a shorter timeline. "


    --Claude Duguay


    Check out the full review at http://www.fawcette.com/javapro/2002_04/magazine/d epartments/bookreviews/default.asp


  60. Review from JavaRanch by Anonymous Coward · · Score: 0
    This book has been reviewed before see links to all the reviews here!

    Review from JavaRanch (Java portal)

    "...This book is a fine introduction to a whole bunch of really useful tools to boost your Java and especially J2EE programming.... This book was almost too useful to review. ... If you want to get up to speed quickly and practically on a load of useful, powerful, tools - get this book. Everyone I've shown it to has wanted their own copy ... "


    --Frank Carver


    Check out the full review at http://www.javaranch.com/bunkhouse/bunkhouseDesign . sp


    This review became book review of the month at JavaRanch!


  61. Review by XProgramming.com by Anonymous Coward · · Score: 0
    This book has been reviewed before see links to all the reviews here!

    XProgramming.com(Online XP magazine)

    "This book should appeal to XPers and non-XPers alike who recognize that automated testing and continuous integration are good things for any project." ... ... "The book is a good introduction for the uninitiated and a valuable reference for those plying their trade with these tools. Don't miss an opportunity to easily automate your Java project and spend more time delivering business value!"


    --Mike Clark


    Check out the full review athttp://www.xprogramming.com/xpmag/books200 20203.htm


  62. Review "The Right way to start an XP Java team!" by Anonymous Coward · · Score: 0
    This book has been reviewed before see links to all the reviews here!

    Hacking XP (Online Italian XP magazine)

    "(This book shows) The right, practical way to start up a xp java team...


    The first part of the book is simply great, well written..., there's a lot of code ... The author divided the examples in a simple example (just to start to use the tools) and in a case study, to apply the practice in a real world project. In about 240 pages you will be able to use Ant, JUnit, HttpUnit, Cactus, JMeter, JUnitPerf, and if you are not an expert there is an intro about the j2ee deployment architecture too."


    --Matteo Regazzi


    Check out the full review at


    http://www.hxp.it/english/libri/javatoolsforxp.htm l (English)


    http://www.hxp.it/libri/javtoolsforxp.html(Italian )


  63. Thank you from one of the authors by RickHigh · · Score: 2, Informative

    The reviews for the book and comments on Amazon, TheServerSide.com, JavaRanch are very encouraging. Thank you all. And, thanks to SlashDot for reviewing the book on this forum...

    I'd like to thank some other folks.

    This book would not be possible without the great set of tools written for building and testing J2EE. I'd like to publicly thank James Duncan Davidson et al, Mike Clark, Vincent Massol et al, Kent Beck and Erich Gamma.

    James Duncan Davidson et al created Ant. The de facto build tool for Java. This is the glue for building applications and making continuos integration doable with Java.

    JUnit is the regression-testing framework written by Erich Gamma and Kent Beck. After looking at this code base you can see this framework screams with design patterns and solid OOP, and is central to Extreme Programming development with Java. It is as if these guys wrote *the definitive books* on Design Patterns and Extreme Programming--oh yeah they did!

    Russell Gold wrote HttpUnit, which makes functional web applications easy and fun. (It can also be combined with Cactus.)

    Mike Clark extended JUnit to provide JUnitPerf, which does load testing and performance testing. This code is an excellent example of how to extend JUnit. Mike Clark is also a really nice guy.

    Vincent Massol et al for creating the Cactus (was J2EEUnit). I use this tool every day at work to unit test JSP Tags and EJBs. This is a truly novel tool. (BTW Nicholas Lesiecki, the co-author of the book, is an active committer on this project.)

    Vincent Massol of Cactus contributed to the creation of the book. He reviewed the chapter on Cactus. His acknowledgement was accidentally omitted from the book during publication.

    I am not implying that anyone mentioned above endorses the book or name dropping. I just wanted to thank them for contributing their time and effort to create these tools and then just give them away! Without them this book would not exist.

    The book has been a bestseller under software development on Amazon most of this year. Thank you. We are blown away with the success of the book.

    Check out these threads about the book if you get a chance....

    Thread TheServerSide.com

    Nick and I answered a lot of questions about the book at the JavaRanch as well...

    Thread at JavaRanch
    I've posted some more background information about the book here...

    Book Web Site

    I'll check back and try to answer any questions about the book. Thanks again.

    The web site will soon have a sample chapter on it. Later, when we write the second edition, the book web site will have early drafts for review.

    --Rick Hightower Co-Author of Java Tools for Extreme Programming

  64. Book description from one of the authors by RickHigh · · Score: 2, Informative

    Link to book web site

    Java Tools for eXtreme Programming describes techniques for implementing the Extreme Programming practices of Automated Testing and Continuous Integration using Open Source tools, e.g., Ant, JUnit, HttpUnit, JMeter, and much more.

    There are other great books that cover other aspects of Extreme Programming. This book focuses on Automated Testing and Continuous Integration.

    The book does mention XP throughout, but does not cover all other practices of XP in detail. This book focuses on the mechanics of XP. Other books cover the philosophy of XP quite nicely and there was no need to repeat it in this book. There is an introduction to all aspects of XP, however, the focus is on Automated Testing and Continuous Integration.

    The book contains small examples and tutorials on each tool. The examples cover building, deploying, and testing Java and J2EE applications.

    In addition to small examples, there are larger case studies. The case studies are larger more realistic examples. We have case studies involving XSLT, EJB, Struts, JDBC, etc.

    Each case study is complete with an ant build script and several tests, written with JUnit, HttpUnit, Cactus, JUnitPerf and/or JMeter. The case studies focus on building, deploying and testing J2EE applications with Ant and JUnit.

    There is also a reference section for APIs. Instead of rehashing the API documentation, the reference section has example usage, i.e., code examples for the important classes and methods.

    Although this book speaks from an XP perspective, you need not practice XP to benefit from it. For example, you do not have to adopt the entire XP methodology to get value out of this book. Automated testing, for example, can help you refactor code regardless of whether you are doing pair programming or not. Continuous integration can help you detect and fix problems early in the lifecycle of the system regardless of whether your customer is on site or not.

    There are some really great books on XP. Three of my favorites are as follows:

    Extreme Programming Explained: Embrace Change by Kent Beck

    Planning Extreme Programming by Kent Beck, Martin Fowler (favorite)

    Agile Modeling: Effective Practices for Extreme Programming and the Unified Process by Scott W. Ambler

    You will enjoy this book as it covers topics not covered in other books, i.e., essential topics that are critical to J2EE and Java development. This book is highly rated and is doing very well. If you are thinking about buying a copy check out these reviews reviews

  65. Knitting Together OSS Tools by shadowRider · · Score: 1

    Nice to see a book that pulls together several of the great OpenSource development tools that are out there. I've often thought that with enough time and effort, one could put together a truly amazing development system with nothing but OSS and elbow grease. Unfortunately, I've only been able to really internalize Ant and CVS so far. Imagine a well integrated suite of the following...

    NetBeans
    ArgoUML
    JRefactory
    JUnit
    Ant
    CVS
    Bugzilla
    Tomcat
    JBoss
    Linux

    ...and of course a little Perl to glue it all together. ;)

  66. From the Back Cover Re:This isn't a review by Anonymous Coward · · Score: 0
    Not True... Here is the back cover... (I am going for funny...or how about ironic)

    Learn how to transform XP theory into concrete Java® development techniques!

    Software developers live by the mantra "evolve or die." Adhering to that philosophy, Richard Hightower and Nicholas Lesiecki present you with an innovative book about Extreme Programming (XP)-- a development methodology that enables developers to build flexible, high-quality software in a quick, efficient, and cost-effective manner. This book teaches you how to implement XP in Java using open source Java XP development tools and how to master the most difficult part of the XP process: testing, integration, and deployment.

    Written with experienced Java developers in mind, this book begins with a brief introduction to XP methodology and techniques, and then dives into a sample application used throughout the rest of the book to provide a real-world view of the tools and development practices in action. The authors provide concise descriptions of the key concepts behind each tool, offering code examples and step-by-step tutorials to guide readers to mastery of the technical aspects of XP development.

    This book covers the following XP subjects: Automated unit and functional testing Continuous integration through build and deployment automation The value of refactoring and continuous integration How Ant, JUnit, JUnitPerf, Cactus, HTTPUnit, and JMeter can be used to achieve the goals of the XP methodology The companion Web site contains:

    1. Sample code
    2. Updates on XP software tools
    3. Links to useful XP sites

    Wiley Computer Publishing's Java (TM) Open Source Library provides professional Java programmers with in-depth guides to the growing number of open source tools and technologies for developing , testing, and deploying Java applications.

    Wiley Computer Publishing Timely. Practical. Reliable. Visit our Web site at wiley.com/compbooks/

    About the Authors

    RICHARD HIGHTOWER is Director of Development at eBlox, where he spearheads the company's XP adoption efforts and provides technical leadership. He is a regular contributor to Java Developer's Journal and is the former Senior Software Engineer for Java Architecture at Intel.

    NICHOLAS LESIECKI has been employed in the software industry for longer than the corporate life spans of most dot-coms. He currently boasts one of the top ten Java certification scores in the nation.

  67. RE: What does Ant have to do with Extreme Prog. by Anonymous Coward · · Score: 0

    You can use Ant to automate builds, deploys and testing which is crtical to extreme programming, i.e., it is called continous integration--a core practice of XP. Ant integrates nicely with JUnit to create some very nice test reports. BTW XP is about quality software discipline. Read any book on XP then think before you post!

  68. Small Room Programming instead by DamnYankee · · Score: 1

    At our small telco platform dev company, we found that pair programming didn't make the code better and lead to much longer development times. What seems to work better with all the added benefits are a small team (less than 12 developers) in an open space plan in the same room. Morning review meetings keep everyone sync'ed up and the crosstalk and over-the-shoulder checks as development occurs give the same benefits.

    --

    Life is a tale told by an idiot, full of sound and fury, signifying nothing.
    William Shakespeare

  69. XP doesn't mean everybody has to do everything by stremo · · Score: 1

    I don't know how your project is organized, but I get to sign up for what I want to do, every two weeks. Sometimes I get shit jobs, but so does everyone else. If I'm feeling like SOS, I sign up for about what I did last week (a little biz logic and database changes at the moment). If I'm sick of SOS, I try something different. I came in as a GUI guy, and now I'm getting into junior Oracle wizardom.

  70. This book's examples & source code are horribl by akepa · · Score: 1

    I suspect that those who gave this book rave reviews never bothered trying to run the examples/source code which can be downloaded from the author's website. I haven't gotten any of them to run properly.

  71. Re:This book's examples & source code are horr by Anonymous Coward · · Score: 0

    Try using Resin instead of Tomcat. The authors did all of their development on Resin (a little on JBoss).

    If you can not get "any" of them to work. The problem is probably with your skill level and not the book.

    The book is not a Java for Dummies book. It requires some skill with J2EE to use this book! Novices will have a tough time with this book.

  72. CHALLENGE: Re:This book's examples & source co by RickHigh · · Score: 1

    CHALLENGE:

    You could post the problems you are having here in this forum. Then we can judge if its the book's examples or your skillset with Java and J2EE that is the problem. Some of the examples require J2EE experience.

    BTW Try using Resin. We used the Resin application server for the examples.

    If you like, you can email me privately and I can try to help. rick@rickhigtower.com