Last Friday I attended the XP Days Germany 2006. As promised, this is an experience report from the conference.
Thursday
My flight landed at the Hamburg Fuhlsbuttel airport soon after 1pm on Thursday afternoon. Markus had a separate flight because we were going to go to different directions after the conference. I arrived at the Hotel Wedina around 2pm and was pleasantly surprised of the atmosphere of the hotel. I learned that the room (in the red building of Hotel Wedina) had no Internet connection but that wasn't a big deal this time.
Frank promised me a quick sightseeing tour around Hamburg before the pre-conference meetup at the Landungsbrucken but since the weather wasn't so nice and the sightseeing train was out of order, we ended up just taking a regular S-bahn train to Sternschanzen where we were supposed to meet Markus (not the same Markus, Markus from compeople AG). The three of us headed to a Thai restaurant, which turned out to be a poly-asian cuisine restaurant offering not just Thai food but also Korean, Chinese and Japanese food. I really enjoyed the dinner discussion which was relaxed, not too much work-related, and we even coined a new term: Torstenized.
Torstenized (adj) Converted radically from one position to another, opposing position; Bob has been completely torstenized--he's now promoting agile methods rather than being the vocal skeptic that he used to be.
Torstenize (verb) To radically convert someone from one position to another, opposing position; Frank basically torstenized our biggest J2EE advocate by demonstrating how he could build a blog application with Ruby on Rails in less than half the time.
After the excellent Thai dinner, we headed towards the Landungsbrucken for the 9 o'clock meetup. By this time, the compeople Markus had decided to see the new Bond movie but the Reaktor Markus had also arrived to Hamburg and was asking directions from the hotel to the Landungsbrucken. We eventually picked up Markus, a fellow JavaRanch moderator Ilja, and Horst.
We walked a bit around the Reeperbahn, learned some new German words, and picked up Jurgen Ahting along the way, eventually settling down to a bar that looked big enough to host us and the horde of people on their way from the conference center where they had had some pre-conference evening session on Grails.
After several Weissbier, an interesting discussion with Jurgen about Second Life, me and Markus finally decided that it's time to grab some quality fast-food and get some sleep before the conference.
Friday
We arrived at the conference center a bit late but still just in time for Johannes Link's keynote. As the keynote was about to start, I tried to scan through the audience for familiar faces but couldn't see too many foreigners. Me, Markus and Dave Nicolette were the only three "aliens". Because the keynote was in German, which neither me nor Markus understands too well, we decided to step outside and go prepare our workshop instead.
Coding Tournament
Me and Markus ran the Coding Tournament session now for the third time. This time, we didn't really need to prepare all that much for the session. Well, there are some things on the to-do list but none of them were considered urgent enough to replace beer with coding ;) We simply carried our stuff to the room some 45 minutes before the session to configure and connect our laptops.
In Belgium, we'd had significant trouble getting all computers see each other through the wireless. In Germany, there was no sign of trouble as the organizers had set everything up better than U.S. Marines take care of their "girlfriends". There was plenty of switches to provide a local area network for a dozen or so computers and the cables were even rolled up nicely for easy access. They even had computer speakers ready for playing the tournament with sounds (the "live commentator" gives a rather unique touch to watching the game!).
We had (again) five teams furiously developing their bot implementations. Most people were using Java but we also had one Ruby bot competing for the title. The only glitch was that we had to run the final tournament twice because the first run found a bug in the server, causing an endless loop... In any case, the winning bot was eventually resolved and the two computer games found their way to the authors of FrankAndreas.
Developer Awareness
After lunch, the English-speaking track had an interesting session by Shamsuddin Butt, a psychologist from Butt Consulting. The title of the workshop was "Developer Awareness." The fundamental idea behind the workshop, deriving from Timothy Gallwey's concept of the Inner Game, was to illustrate how our two "selfs" affect our ability to function effectively.
Mr. Butt eased us into the topic with a nice physical exercise involving a circle of people throwing tennis balls across to each other. We basically formed a circle where each individual had two contacts on the other side of the circle: one person who throws balls to you and one person who you throw the balls to. We did three rounds of throwing balls, trying to improve the throughput of the system--how many balls we can pass through the hands of each individual standing in the circle in a given amount of time. Between the different rounds, we could clearly see a difference in how we were able to improve our throughput by focusing on the essential instead of trying to let "self 1", the controlling self, coordinate our actions on behalf of the "doer" Mr. Butt called "self 2".
We also had another exercise where Mr. Butt asked for someone who's always been bad at ball games and someone who's always been good at ball games. The exercise was basically about the one who's not good at catching tennis balls trying to catch balls thrown by the other volunteer. Mr. Butt coordinated the exercise by instructing the thrower and the catcher. Again, we could clearly see how the catcher's performance improved when he was instructed to focus on something else than the actual catching, letting "self 2" take care of the motorics of catching the balls while "self 1" was distracted with something else (trying to describe the trajectory and spin of the balls).
I have to say I was a bit tired but the session was good and thought-provoking.
Resistance as a Resource
I had only 45 minutes for the Resistance as a Resource workshop which was less than in Mechelen the previous week. A lot of people were also arriving late, which kind of ate up some time. Anyway, we did eventually get started with the workshop, five people each in four tables, and it worked out pretty well. The main drawback, based on the feedback I've received so far, was really the lack of time.
The last English-speaking session was canceled so me, Markus, Dave Nicolette, and Christian Schmidkonz from SAP headed downstairs to the bar. Others joined some 30 minutes later. Jurgen, Markus, Dave, Johannes Link, me, and Frank (plus others) mostly continued the discussion about Second Life we started in the Reeperbahn on Thursday.
As the evening progressed, me and Markus dropped our bags to the hotel and headed to St. Pauli to catch up with some of the conference delegates for a couple of beers. We didn't know where they had gone, though, and because we were having problems getting a call through to Frank, we ended up taking a nice walk around the St. Pauli area, following the locals and wondering why there are no football-oriented bars around even though Germany has Bundesliga and everything.
Finally we got through to Frank and heard that they were in a wine bar near the Sternschance station so we headed that way to say a quick "hi" before we had to go.
It was good that we didn't stay up too long because I had an early wake-up. I had planned a pretty tight schedule with my flight departing for London soon after 7am. The reason for such insanity was me wanting to attend the first international conference on postmodern programming in London on Saturday. In fact, I'll also write up some notes from the "PoMoPro" conference. Stay tuned...
I just received feedback for the sessions I ran at the XP Day Benelux conference. One item in specific gave me some essential information on my performance. I'll paraphrase it below:
The Resistance as a Resource game is exactly what not to do when facing resistance. Dealing with resistance requires more coaching or change management skills, than just a brainstorm elaborating counter measures.
I fully agree with the notion that dealing with resistance by simply elaborating counter measures is not a good idea. I do think, however, that the Resistance as a Resource game is a great thinking tool for analysing the resistance you're experiencing.
The goal of the game is not to devise counter measures through brainstorming as much as it is about understanding the reasons behind the resistance better, thus leading to ability to deal with the resistance in an appropriate manner.
I'll have to make sure I'll explain the goal of the game better in tomorrow's session in London.
The following quote comes from the abstract of Steve Freeman's and Nat Pryce's workshop "Are Your Tests Really Driving Your Development?" they're going to present at the XP Day conference in London (Emphasis mine):
Everybody knows that TDD stands for Test Driven Development. However, people too often concentrate on the words "Test" and "Development" and don't consider the what the word "Driven" really implies. For tests to drive development they must do more than just test that code performs its required functionality: they must clearly express that required functionality to the reader. That is, they must be clear specifications of the required functionality. Tests that are not written with their role as specifications in mind can be very confusing to read. The difficulty in understanding what they are testing can greatly reduce the velocity at which a codebase can be changed.
That's some awesome text right there and quite nicely describes why TDD done "right" is not just about writing unit tests or just about writing unit tests before the code. And why nurturing our test code is as vital as nurturing our production code.
Why is it that all of my flights seem to depart from the exact same gate in Helsinki, no matter where I'm going and no matter which airline I'm flying?
I've been wondering a lot about a certain aspect of the hotel business. Why is it that I feel like most hotels I've visited have focused on fulfilling only their customers' most basic needs and not aiming higher?
I'll give you a concrete example that's fresh in my memory. Hotel Le Plaza in Brussels. Five stars and excellent staff but some things were not quite right.
"What, you mean I have to pay for the Wi-fi?" That was my first thought when I glanced at the little leaflet on the room table. The issue of for-pay Internet access is quite possibly the single most irritating one of all when it comes to a techie like me staying in a hotel for several nights in a row.
Yes, it costs the hotel something to set up Internet access to all rooms and it's perfectly ok for them to adjust their rates accordingly. I don't have any problem with that. What pisses me off is a hotel charging anywhere between 15-30 euros per day or 5-15 euros per hour for Internet access. It. Does. Not. Cost. That. Much. To. Have. Internet. Access.
I'm pretty sure the hotel's customers would have a much better image of the hotel's services if they wouldn't feel like being ripped off in any way they can. In fact, I'd bet that the hotel would see an immediate bump in their revenue by making free wireless available to all customers. I know nothing about the hotel's customer demography but I suspect it's mostly business people who likely appreciate the ease of having the wireless connection just work instead of going through the usual hassle of asking for a room that has wireless and buying vouchers or getting the outrageously priced Internet access from a crappy website that only works with a specific shitty web browser.
Besides, the hotel would already save a ton of money by getting rid of the billing infrastructure they've built for charging their customers for the pleasure.
The same kind of ignorance towards the higher levels of Maslow's Hierarchy for Hotel Customers™ can be seen in other details, too. For example, if the hotel accommodates two people in a double room, wouldn't it make a lot of sense for the room's bathroom to feature not one but two bathrobes? I guess not. But of course! I can call the reception if I need another bathrobe. Not exactly the best service I could've imagined and certainly not much cheaper for the hotel either.
There seems to be an awful lot of local optimization happening in the hotel business...
After the XP Day Benelux 2006 was nearing its end, we realized with Markus that we need accommodation for the night so online we went (I recommend lastminute.com, by the way. It has saved my day--or night--a couple of times).
We decided to stay at Le Plaza. It's a very nice 5-star hotel right in the middle of the shopping streets in Brussels and close to the King's residence and the Parliament House. Perfect for our day-as-a-tourist plan since we're not that much into museums, especially when we only have a few hours to spare during day time. If you're going to Brussels, do look into staying at Le Plaza (although I did have some complaints, too. I'll blog about it separately. Maybe).
Oh, the fact that the hotel was hosting an audition for the Belgian Idols 2007 had nothing to do with our decision to stay there. Really. We only found out about it on Saturday, wondering why there is a horde of teenagers standing in front of our hotel...
After the conference, a small group of us went to a nice restaurant in Mechelen called Passade for some crocodile and kangaroo before heading to Brussels. It was also very nice of Pascal to drive me and Markus to our hotel after the dinner. Thanks again!
Anyway, after getting some taste of Brussels' nightlife and especially the local beverages, we headed back to the hotel for a well-deserved long sleep. Obviously we forgot to mention at the check-in that we'd like a late checkout so the staff (which was very friendly by the way) woke me up a couple of hours before we had intended to get the move on. I suppose that was only a good thing because we didn't have too much time in Brussels anyway.
We ended up descoping all of the artsy museum stuff from our tourist backlog. As much as the thought of a French comics museum excited our inner geek, we opted for something easier:
- Eat well
- Check out King's crib
- Buy local waffel
- Buy le crayon de lumiére
- Buy toy for 2-year old
- Buy something else
Yes. We are slaves of the increasingly commercial world.
After completing our short sightseeing tour and a rather insignificant shopping spree, we headed back to the hotel to pick up our gear. We had reserved plenty of time to get to the airport, not knowing how bad the Brussels saturday traffic would be and how long queues the Brussels airport would have on weekends.
It turns out the traffic in the city centre is horrible also on saturdays. The taxi ride took somewhere around 50 minutes, out of which 5 minutes was highway and the rest was trying to get out of the city. It would've taken longer if our taxi driver would not have taken some shortcuts, such as driving a lane to the wrong direction...
Much to our pleasure, the airport was dead silent, though, which made for a nice no-queueing experience which (for me at leat) is hardly a common thing at airports. Speaking of the airport, you can't not love seeing this sticker everywhere:
The annual XP Day Benelux conference took place last week in the small Belgian town of Mechelen, a stone's throw from Brussels. As you may know, I attended the conference and also ran two sessions.
Consider this my personal field report from XP Day Benelux 2006.
WEDNESDAY
We arrived at the Brussels airport after 6pm local time with Markus. The ever-so-thoughtful Pascal van Cauwenberghe picked us from the airport by car, which was a huge help as we didn't have to try and figure out the train connection to Mechelen nor worry about the taxi driver knowing where we need to go.
After dropping off our bags at the Elewijt conference center, and a short panic due to us (mistakenly) thinking our power adapter plugs wouldn't fit the local outlets, we headed to the Mechelen fish market for a dinner. We met more people at the fish market and set out to find a nearby restaurant to feed 10 hungry and thirsty agilists.
We continued the nice dinner table discussions back at the Elewijt center after a short walk in the quiet streets of Mechelen, joining other conference delegates preparing for their upcoming sessions. True to our "Yesterday'sLast Conferences' Weather", me and Markus decided to invest in socialising with fellow delegates first, leaving the preparations for our Coding Tournament until after midnight.
Note to self: Remember sustainable sleeping hours during conferences.
THURSDAY
The conference started with a rush to set up our room for the Coding Tournament, which was going to take place right after the opening plenary. We were having a lot of trouble getting all computers on the wireless network but things were looking good enough for both of us to attend the opening plenary.
Coding Tournament
Our agile-spirited one-minute advertisement for the Coding Tournament during the opening plenary lured some 15 people to our session. Being still a relatively fresh Mac-convert, I soon noticed a rather interesting ratio of hardware among the participants--more Macs than PCs! But I digress.
Out of the 15 or so people, five pairs continued developing their implementations and participated the final tournament at the end of the session. While we ran the final tournament successfully and found a clear winner among the five competitors, the session certainly wasn't without its problems.
We again had problems with getting the participants' computers connected to the server and vice versa and ended up copying the different implementations on the server machine with USB keys. Next time, we'll opt for the fallback sooner if it seems like the network stuff isn't working properly. There was also a problem with the Ruby XML-RPC client code, which apparently was related to running against "localhost" vs. a normal IP address.
In any case, we managed to get all implementations joined to the final tournament and watched from the screen as the participants' genius poker algorithms were facing off. Some with more success than others.
The lunch was being served in the atrium as we wrapped up our session and gathered all the equipment, which was nice because we had skipped breakfast in an attempt to maximize TTW (Time-To-Wakeup). The lunch consisted of a mix of hot soup, bread filled with all sorts of good stuff, and a variety of yoghurt and pudding. I think that kind of a standing lunch is perfect for this kind of a conference. It's a lot easier to mingle and move around when you're not tied to a seat in a table...
Getting Things Done
The first afternoon session proved that we should've prioritized Time-To-Wakeup over socializing with other delegates. Both me and Markus decided to attend Bernard Vander Beken's session on David Allen's Getting Things Done (GTD) method. The session was quite good as I hadn't managed to really look into GTD before (beyond knowing the basic idea of having a "tickler" file). Bernard described how GTD could be implemented in practice, answering very knowledgeably to all kinds of questions from the audience. If you've been thinking about adopting GTD, maybe your next action should be attending Bernard's session on GTD...
And, yes, the "next action" pun was intentional.
Unfortunately, the combination of shorter than usual sleep, just having eaten lunch, and lack of oxygen, I wasn't exactly "fully aware" all of the time and decided to take a power nap before the closing plenary and conference dinner.
Conference Dinner
The conference dinner was served in the conference center. The food was quite good and the dessert chocolate even better. Most importantly, however, it's always fun to chat with people you only meet a couple times a year at such events. At some point, realizing that most people had already left the dining hall, we too headed towards the bar.
The conference center's bar was carrying a bit unusual beer mats, shaped like pieces of a puzzle, which, combined with Belgian beer and the company of Conan the jolly Dubliner, led to the creation of the main feature of the night. The Beer for Sphere project.
FRIDAY
Friday started much more relaxed than Thursday. We actually made it to the breakfast before the opening plenary!
Turning Up The Heat
My Friday morning started with Joseph Pelrine's and Ben Fuchs' session titled "Turning up the heat (without getting burnt)". We explored team dynamics through a cooking metaphor of a team being in any of several states ranging from solidified to stagnating to cooking to burning and how we might be able to tune the "heat" and affect the team's dynamics using a number of "knobs" such as changing the roles within the team, increasing/decreasing external pressure, and so forth.
Already the first 30 minutes gave me some insights about certain events from past consulting gigs that I hadn't thought of. I highly recommend attending the session if you get the chance. Joseph and Ben will be presenting it also in the London XP Day conference, for example.
Resistance As A Resource
While I had managed to wake up early enough to grab a good breakfast, I decided to postpone lunch until the last responsible moment. The reason being that I needed to arrange the plenary room's furniture for my Resistance as a Resource workshop that was going to take place there right after lunch. I didn't need to do it all by myself, though, as Cedric, Pascal and someone else (Rob, was it you perhaps?) helped out. Also, Pascal's and Vera's Presentation Zen session was going to take place in the same room after my workshop and they were going to use the same table layout so there was no need to move the furniture back after the workshop. A big relief!
I created the Resistance as a Resource workshop based on Dale H. Emery's excellent Resistance as a Resource game. To my and Dale's best knowledge, the game hasn't been run in a public conference like the XP Day ever, anywhere. That made it all the more exciting, of course, both for me as the session organizer as well as for Dale as the inventor of the game itself.
I started the session with a story of a past encounter with a somewhat strange case of resistance to the idea of unit testing by a programmer. The reason for sharing the story with the group was to help everyone transition into the proper mindset of thinking about resistance.
Next, I described Dale's Resistance as a Resource game and its simple rules. I also explained how the rest of the workshop would be spent. And we didn't follow that plan, by the way.
After explaining the rules of the game, we split the group randomly into four tables and started brainstorming with a stack of index cards and coloured whiteboard markers. After some 15 to 20 minutes, the groups seemed to be slowing down so we mixed it up a bit by sending three people from each group to the other tables. Each table restarted brainstorming by first explaining the cards they had organized on the table. The three new people in each table clearly revitalized the discussions. We did a total of three such iterations before it was time to wrap up.
To wrap up the session, I asked the teams if they'd like to create posters of their creations and they whipped up four colourful flipchart papers we hung up on the atrium wall for the rest of the conference delegates to investigate.
It was exciting to observe the teams busy brainstorming possible reasons and responses to different forms of resistance they had observed. I'm already anxious to run the session at the upcoming conferences in Hamburg and London.
Presentation Zen
I had planned to attend the Presentation Zen workshop in the last slot in the schedule before the closing plenary. I missed most of the session, however, due to a sudden need to bok a hotel room from Brussels (we thought we'd have a room until Saturday morning but we didn't). We did sneak in to follow the session from the back of the room, however, after sorting out our accommodation.
The organizers of the Presentation Zen workshop had slightly underestimated the time they need for the multiple rounds of presentations. Luckily, the program committee had happened to schedule the workshop in the last slot before the closing plenary so the workshop participants could present their creations to the whole conference. What a coincidence! :)
All in all, the participants of the Presentation Zen workshop were clearly having a lot of fun. Too bad that I couldn't participate myself. Although me and Markus did get a mention in Conan's team's presentation.
Closing Plenary and Farewells
All session organizers still present got handed a bottle of local (Mechelen) beer during the closing plenary. Nice! It was also nice to hear people sharing a couple of words about the different sessions they had participated.
After the closing plenary, a few beers in the bar, and dozens of farewells, we headed out to Mechelen with a small group for a quick dinner before people had to leave for their trains, buses and airplanes.
It was a good conference, although I did miss a lot of potential fun being a session organizer myself. I'm hoping to see some of the nice folks at the conference also in Hamburg and London, and I'm certainly looking forward to attending some of the same sessions I missed in Mechelen!
I'll try to write up a similar story about the upcoming XP Day Germany and XP Day London. Until then...







