CodeRetreat 2011 in Prague
Never, never give up to you lazyness. We all know Christmas time is full of events and parties, and I admit that yesterday I was seriously considering whether I actually wanted to go to CodeRetreat and disappear early from the other event of my friends completely sober. I admit my weakness and I am ashamed that I ever doubted. CodeRetreat was one of my best events this year and I must say that it got into my top rated events I ever attended.
1) people who want to code at the weekend (a miracle and pre-selecting filter in itself)
2) at first glance a simple problem to solve in unreal time
3) condition: TDD, pair programming, pair change in 45 minute intervals
1) changing programming languages, IDE, keyboards and programming approaches
2) accession to the game that the way is the goal
3) distilled programmer experience
The essence of the problem was the Game of life represented by four rules that can be with no problem implemented in any language by student with a single year of programming class done. On the other hand it is a problem with open-end. You can go much further than you initally thought you could (it reminds me a bit a task in our interview process in FG Forrest). Complexity just depends on what circumstances you are willing to take into account. You can begin your journey in two-dimensional limited array and end up with an infinite universe, you can start with two-dimensional space and then try to think up what it would take to compute rules in multi-dimensional spaces, you can try implement your algorithm in Java, C#, DART or Groovy (I'm not making this up, I've really gone through all this today).
After the first iteration you completely lose appetite to do it seriously and you take it as a game. The game which you play with your buddy has fixed rules, but you can accept some simplifications. You enter the game freely with only aim - to learn and to have some fun. All (except 4 hard rules) turns upside down each 45 minutes when you change your colleague. Nobody wants to get bored and so each time you approach the same problem from another angle and come to a better solution. You have a laptop and fellow beats you over the knuckles when you slip to implement the logic before the test (by the way my fingers are now very battered).
Experience was exceptional even because CodeRetreat took place all around the world, perhaps in all time zones. In five o'clock in the morning on the train to Prague I read tweets from Melbourne, Tokyo and Beijing where CodeRetreat has already started. When I complained on the twitter that there are only males among developers (we had no women in Prague session) I got a reply from Berlin that at least two members of the fair sex in our ranks are after all. Last closing tweet came after a few hours from Honolulu, where CodeRetreat this year concluded. One cannot feel weird when there are so many people all around the world willing to code with him on such occasion.
The paradox is that by solving a trivial problem one can try out such a lot of things in a few hours - it just need to have a focus and not to have a target. A big surprise for me today was DART - along with @kolmanI spent some time playing with the problem in DART language (by the way thanks for the energy devoted to setting development environment up) and we came to the conclusion that DART is essentially a mix of C# and Java. Given lack of documentation when we weren't able to find out the notation we tried C# syntax and when it fails to compile we exchanged it for Java notation (@kolman is .NET guy and I'm from Java world). Compiler usually accepted one of the options we tried. I'm just wondering what audience Google aims to - C# programmers or Java ones? May be both?
It was easily visible how enterprise languages such as C# or Java lags in productivity behind languages like Groovy (at least on the problem of this type). The truth is that we were on the other hand far more confident with the unproductive languages. I also went through very fun game called TDD ping pong - your buddy writes a test and you write an implementation that meets the test but does nothing more (of course you try to deceive). I played it in the last iteration with @philipp_riemer(a German gui from Nuremberg currently studying at the University in Prague).
The article is originally located on my blog Thoughts of Father Fouras.