Wednesday, November 24, 2010

Coderetreat Belgium

Saturday November 6th, I attended the (first?) Belgian Coderetreat facilitated by Corey Haines and organized by AGILEMinds.

Since reading about coding dojos, coding katas and other code practices advocated by the software craftsmanship movement, I have been intrigued in trying these out. While I attended coding dojos organized by BeJUG, we never had an experienced facilitator around to guide us. We had lots fo fun, we ended up producing code and even achieving results, but not necessarily improving coding practices while doing so. And from what I got out of the description, some of these exercises target more the craft than the result.

So, when I heard about Coderetreat, facilitated by Corey, I decided I could not miss it. And it was a tough choice as the same week-end the CITCon conference was taking place.

The problem worked on is Conway's Game of Life. Not too big to require long description, but complex enough to require more work than the 45min session allows. And to go with that, some rules.

  • Sessions are paired
  • After 45 min sessions, the code is deleted, no VCS, no zip, no nothing. Wipe it clean
  • Focus is on code quality not quantity 


First of all, the deletion rule is tough. This definitely makes sure you will never complete the exercise. Even so I found myself trying to rush to the end of it for the first two sessions without success and probably breaking most TDD rules doing so. And producing crappy code!
After a while you really get that the whole point is to improve at code writing. From there on, I managed to put more focus on quality with each pair change.

It is a tough rule, but also very liberating. It allows you to forget about implementation details while retaining the abstractions. And it is here that you can really bring over results from a previous iteration to the next one. When my pair programmer and I achieved a nice abstraction, I tried to carry it over in the next run to test it with the rest of the problem to see how well it complied to the SOLID principles.
Related to that, Corey asked us to be even more focused on quality and work in basic steps:

  • make the test pass, 
  • verify names,
  • eliminate duplication
Basic and very hard to follow. but when the pair gels, follows the rules, the feeling of ending up with nice code is rewarding.
As with a lot of practices you see in the Agile world, the way all these elements fit together is impressive.

All in all, it was a very interesting day, and an experience I will certainly reproduce. Plus meeting other passionated developer is always nice.

As a conclusion, I cannot say if this is going to make me a better coder, but from what I see on the web, smarter people than me believe it can help, so I am willing to try out, and so should you!

AgileMinds announced the next coderetreat event on January 16th, 2011

Wednesday, October 27, 2010

DVCS talk at BeJUG

On October 20th, together with Jo Voordeckers, I did a presentation at the BeJUG around distributed version control systems (DVCS).
The goal was to give an overview of the features of these tools and also what they could bring over Subversion, which was the tool mostly used by our audience. The DVCS focus was on the ones we knew: Mercurial for Jo, Git for myself. Sorry for the fans out there, but once again no Bazaar.

The presentation was well received and we were lucky to have a very active audience that asked many questions. It seems the pain points of Subversion are well known, but the shift in thinking required to approach DVCS still blocks many from trying them out.
As a way to approach DVCS, I explained that my main Git experience comes from using it as a Subversion front-end. And I think this can be a great way to learn to appreciate the freedom such a tool gives you. It helped me a lot once again at work today.

As always, alongside the technical questions, we had also questions around the process and human interactions. Know of a shy developer not willing to let his code run wild?
I do not see these tools solving such problems. When the people or their relations are problematic, trying to fix these using tools has a tendency to increase the problem. You need to apply the fix at the right level, easier said than done though.

If you missed this presentation and live near Brussels, Belgium, we will most probably do a replay for the BruJUG. Stay tuned for details.

Jo also blogged about the event and has the slides available on SlideShare.