XP Immersion 2 was held at the Inn at Scotts Valley, just outside of Santa Cruz, CA., on the week of February 28th, 2000. See http://www.objectmentor.com for details. There were 43 students. They were divided into teams of six, supplied with three workstations per team, and asked to develop part of a software project using XP. The development languages were '''Java and C++''' The Java development environment was Win98, jdk1.2.2, JUnit, Kawa, cvs, and bash. The C++ development environment consisted of Win98, cvs, bash, gnu c++, make, other unix tools from Cygnus. KentBeck, MartinFowler, RobertCecilMartin WardCunningham and RonJeffries did most of the lecturing and coaching (other instructor/coaches included JimNewkirk, MichaelFeathers, BobKoss, and MarkWindholtz). Daytimes were filled with lecture, demonstrations, and lots of programming. We had informal talks by the experts in the evenings. The facility (http://www.theinnatscottsvalley.com/) was incredible. Ethernet ports in the '''desk lamp''' of every hotel room. T1 speeds. (NotSoRecentChanges coming from hosts ending in "innsv.hotel-internet.com" were posted live from the hotel during the conference.) ---- Attendees (who want to make their names known): * FrankWestphal Elk Team * ErikMeade Elk Team * GarethReeves * JohnBrewer Lion Team * JohnMerk * DavidAmbrose * NickSuri * TimWalker * DuncanMcGregor ''were we rabbits or hares?'' * PerAngstrom * JeanMarcHeneman Rooster Team * PhilGoodwin * JoshMacKenzie * AaronThompson * DwayneTowell * ArtThursland Lion Team * RickyWest * BruceWinegarden * MikeTwo * RobWylie Lion Team * RajeevBhat * JohnUrberg * TomGuyette Dog Team then Bear Team * BrianWilson * JimShiba * AlanHarriman * ThierryCros * LaurieKigner * ChunCheng Rooster Team ---- CosmologyThread Lets put first things first. Bob Martin gave short talks throughout all the sessions that (at the least) served the purpose of getting the group back from breaks with the minimum of straggling. These talks grabbed me by my interest in theoretical physics and astronomy. I would like to have a fun discussion on what your thoughts were on how this related to XP. (TomGuyette) ----- DependencyInversionPrinciple Bob Martin described a principle to use in isolating a grouping of code to allow testing of that grouping. This principle described the way to place an interface on both sides of the code to isolate and use those interfaces to communicate to the now isolatable code. I would like input from you as to references or your experiences on doing this in general and in specific with a JSP/Servlet/EJB development. (TomGuyette) Just discovered the paper at http://www.objectmentor.com/publications/dip.pdf (tg) ----- '''Monday''' After a morning of lecture from Bob and Kent, we started work on our first exercise. We were told that an entire XP team was involved in a plane crash; ( apparently their TruckNumber was too low ) and that we had to take over their project. There were some failing unit tests. We had to make them work. The program was a small automotive log book like application. Pretty cool that we could walk up to new code and fix bugs so quickly. ''But if they were an XP team, how come they checked in their code with failing unit tests?'' -- because they used a source code control tool that supported parallel development. Perhaps there's a relationship between letting the unit tests fail and their plane? -- XpHammer WardCunningham gave Monday's informal evening talk. See WardsTalkAtXpImmersionTwo for details. '''Tuesday''' Ward gave a morning lecture on AcceptanceTest''''''s; and then Kent and Ward talked about TestFirstDesign. Then we did a quick exercise to fix a failing acceptance test in our code. We had to write a failing UnitTest to characterize the acceptance test error; then make the unit test pass, thereby making the acceptance test pass too. After lunch, Kent and Martin talked about SimpleDesign, while Bob talked about ContinuousIntegration, CollectiveOwnership, SelfOrganizingSoftware and HistoricalAstronomy. Then we did our second exercise. Each pair was given three unit test specifications. We wrote the unit tests and then tried to make them pass. This is the first time that the pairs faced integration issues. RonJeffries gave the evening talk. He talked the history of the XP practices at ChryslerComprehensiveCompensation, and why he thinks they work. See RonsTalkAtXpImmersionTwo for details. '''Wednesday''' This morning MartinFowler talked about refactoring and walked through the example from Chapter 1 of his book ''Refactoring''. Using the VisualAgeJava IDE, he flew through numerous refactorings, and when he finally killed the switch statement there was a round of spontaneous applause. This afternoon, we continued on the coding tasks we started yesterday. At 4:00 we had a progress review. Every team was behind, some spectacularly so. RonJeffries played engineering manager and grilled each team ruthlessly, while MartinFowler played the role of the reasonable customer, who just wanted to know how many stories he could count on being done by 5:00. KentBeck came in late to the progress review, and noted the palpable fear response in each team as they were being grilled. People really did stop moving, and avoid eye contact with the reviewers. Even though we were ''paying'' these people large amounts of money to do this to us, it still felt like crap to miss our deadlines by a mile, and then be called on the carpet over it. Now we're unwinding, and we've been promised a schedule reset in the morning. Phew. KentBeck gave the evening talk, which was also attended by several members of the SiliconValleyPatternsGroup. See KentsTalkAtXpImmersionTwo for details. '''Thursday''' After a lecture and demonstration of IterationPlanning, each team worked with their own customer to plan a three hour iteration. The customers negotiated scope, and the developers made estimates. Teams listed their tasks on a flip chart by their development stations and checked them off, one by one as they completed them. The continual buzz of busy pairs was often punctuated by a whoop and holler of a victory dance. Having measured their velocity during the previous day, several teams finished the afternoon completing their iteration plan with working acceptance tests. MartinFowler gave the evening talk. See MartinsTalkAtXpImmersionTwo for details. '''Friday''' If I remember correctly Friday started with the opening scene to ''Contact'', ya? We also talked a bit about one of the ExtremeRoles Tracker. Someone also asked a question about the StoryCard''''''s shown in XPE. Turns out both of these will probably be marked ''deprecated''. ''What's deprecated is the overdesigned form used on the C3 story cards, not the use of story cards themselves. Since I found the C3 story card format very intimidating, I was relieved to hear Kent and Ron say to just use ordinary blank cards. -- JohnBrewer'' As the day wore down Robert and Kent took questions. JoshMacKenzie and PhilGoodwin pair-wrote IterationPlanningMeeting in an attempt to get the sequence of events down. ---- I know we filled out forms at the end, but does anyone have any XpImmersionTwoFeedback they'd like to share on Wiki? ---- Any plans to do something like this in Europe ? -- ChanningWalton I'd be interested in attending if there was to be a European counterpart. -- StuartBarker According to the XPDeveloper site, RobertMartin is going to be doing some training XP wise in London. -- MiroslavNovak Here's the info I have: RATIO GROUP MasterClass on eXtreme Programming Presented by: ROBERT C MARTIN, Date: 3rd to 6th April 2000. Location: London - Ealing. Email bookings@ratio.co.uk or call +44 (0)20 8579 7900 for further details. http://www.ratio.co.uk/news.html ---- ''Kent, Ron, Martin, and Robert were all in Lake Tahoe the week of 1/11/00 planning this class. It looks like we will be putting together a lot of skits that demonstrate the practices of XP. We did a few skits in XpImmersionOne, and they were very effective. This time we'll be doing lots more.'' ''We've also completely restructured the ordering of the class and the exercises. On the last day of Tahoe, Kent had this really neat idea that we should teach XP starting from the basic programming principles like PairProgramming, and then work backwards from there to TestFirstDesign, Refactoring, TaskPlanning, IterationPlanning, ReleasePlanning, StoryWriting, etc, etc.''