This week I participated in a project launch where we used the practices of the much-touted Extreme Programming. This was a four day event that's just a "kickoff" for a 90 day project. It started every morning at 0730 and lasted until approximately 2030 each night.
The good points:
Simply getting the customers, developers and testers in the same physical area and forcing them to flesh things out seemed to work. Why this stuff can't get done through email, phone, IM, etc is beyond me, but this seemed to work very well. Note that I didn't mention "managers" in that sentence. Although they participated, they were invisible and contributed little or nothing to the process IMO.
Pair programming - this seemed to work well, as the guy I worked with most of the time knew the Tibco software much better than I do, while I was able to message parsing and some sql construction logic.
Accomplishments - stuff definitely got done.
The Bad Points:
The toolset - since our company drank the.NET cool-aid, we had to use Microsoft's Visual Studio.NET and, specifically, C# and Visual SourceSafe for version control. We lost a *lot* of time dicking around with version control the first day because our source control server was 1000 miles away (we got a local one set up the next day). It *literally* took 3-5 minutes for every check-in and check-out. Insufficient hardware, IDE navigation and unfamiliarity with C# also hurt.
Long hours - at first the developers didn't mind but by Thursday afternoon it became clear to me and others that it had become counter-productive. We were all getting grumpy and our minds weren't as sharp as we would like. Coding started to get a little sloppier.
Remaining questions - how often do you get to go back and tweak code that has been "completed"? I know lots of error checking (try, catch, etc) got dropped at the wayside. Would programmers ever get to go back and fix stuff like that? I'm not actually assigned to the 90-day project, so I'll never know.