Ruby Randori
TL;DR: The Ruby Randori was a success! Thanks guys! See you next time!
We just had our first "Ruby Randori" and man: it was fun! I think we can regard the experiment as successful and we're definitely doing it again! Thanks everyone for your attention! If you missed this one: no problem, come next time!
Here's a short overview what we did: After a short introduction by yours truly on what Conway's Game of Life is, and what the idea of the evening was, we discussed a while on how to implement it. There were two people that were unfamiliar with RSpec, so we gave a short introduction on that too. It was interesting to see these discussions develop. In general, developers think too far ahead, and some were solving problems in their heads way before they were even an issue. Remembering these same discussion from the Code Retreat, Arie and asked a few simple questions to make it a bit more interesting. Do you really need to know the neighboring cells? Do you really need to know the coordinates? Does a cell really need to have a state?
But after a while we were hacking away. Now we were pair programming. One person was writing specs, and the others was writing code. It became a game: the one writing the specs was really enjoying making the other write the code they just tested, and the other tried to dodge the implementation as long as he could by making simple methods. Still, the moment came when everybody realized: we need to refactor! We ended up with a really clean (stateless) implementation of a cell and a bunch of succinct and readable specs.
I really think we've all learnt something tonight. I saw a flicker in everyones eyes as they realized something they hadn't realize before, whether it was how to do BDD (and how a tool like RSpec can help you guide your thoughts and design decisions) or how you can use subclassing for separating out logic and creating classes that have only a single responsibility.
As for a next Randori: I think we're going to focus more on the coding and less on the discussion. For a short evening it's better to have a small, well marked, problem domain. There are countless ways of solving even the most simple problems, so the discussion on our approach can last forever. It is a worthwhile discussion, but it needs more time. We might even use Rails and Cucumber in the future.
The next Rotterdam.rb will be in januari. I'm not quite sure what we'll be doing. If you have something interesting to say, or some good suggestions, please share your thoughts :)
Cheers! See you at the next meeting!
Iain

