On Thursday I went to Software Craftsmanship 2011 at Bletchley Park. I was a few minutes late getting there, as I stupidly decided to walk the short distance from the hotel. I should have taken a taxi. It wasn’t actually far but the combined foot and cycle paths are poorly signposted and don’t always lead in the direction you want to go in.
I couldn’t really decide what sessions I wanted to attend so I decided to prepare my Mac laptop for maximum flexibility, and updated MonoDevelop and Eclipse. I had a non-default Ruby installed with RVM and decided to follow the preparation instructions for one of the Ruby sessions just to make sure I had all the gems etc. It didn’t quite work out as nicely as I expected and reminded me of the shambles I experienced last year when Ruby 1.9 and Rails 3 came out, with all the version conflicts caused by the whole gem, rvm, bundler mess. I just put it down to early versions. I still had problems so I deleted my .rvm and started from scratch. I had problems at bundle install, with nokogiri, something to do with the versions of libiconv and/or libxml2 I had installed with brew, which I generally keep up to date. From googling I got the feeling I needed to install a specific version of libxslt from source so I did that, and tried to reinstall nokogiri with gem but still didn’t get anywhere. It felt like using linux in the 90s but a bit worse. At least in linux there were 2 ways to install libraries, from source or as a precompiled package and once it is installed it is available. Here I didn’t really know why some things needed to be installed with brew, some with gem, and some with bundler, and what libraries ended up where. The ruby infrastructure seems to be a lot less elegant than it used to be with all this rvm and bundler nonsense. Strangely I just now tried to do the bundle install again and it got past nokogiri but had problems with mysql2. Probably because I need to install a native mysql library with brew or something.
Anyway, I got there late on the day and my first two choices were full, so I went to the "Space Invaders vs Continuous Testing" one. It was only my third choice because it sounded as if I may really need Visual Studio and Windows to get the most out of it, but I decided it might be fun to try it with MonoDevelop. Technically MonoDevelop worked fine, and did not hold me back at all (the only issue was not being able to install NCrunch, which was not critical to the task). As I missed the explanation at the beginning it took me a while to work out what had to be done, but I was able to make a start, and caught up with most of the others. We really needed more time though. The first 200 points were easy to get, and most of us got that without actually doing any programming, and only one team actually managed to get 400 points. I still feel motivated to work on it, and see if I can solve it at some stage. If I have time I will have to see if it is possible to work on the kata without the server, that tests how well our code actually performs in defending cities against waves of invading aliens.
After the coffee break I attended a session on "Asynchronous Unit Tests in FlexUnit". It was interesting, and gave me a good introduction to not only FlexUnit and asynchronous tests, but to the whole Flex system which is not something I had played with before. We only had 3 participants because Michael Feathers showed up and most people wanted to see what he was doing.
During lunch we had an interesting tour of Bletchley Park, and after that I attended "The Lean Code Challenge" which was a lot of fun. In pairs we were to go through a series of 10 minute iterations building up and modifying a simple console program. We chose to do it in Ruby, because the session provided a minimal Ruby skeleton to work from, and it seemed as good as any other, considering my coding partner didn’t know c# and I didn’t know Flex. So we did ok I think considering we were both basically learning Ruby at the same time. An added bonus for me was improving my Vim skills. I still hadn’t managed to memorize many vim keystrokes, despite doing tutorials every now and then. I tend to forget how to use it effectively and revert to using it in a clumsy way. Pairing with someone who was able to remember a few keystrokes from when he used to use vi a lot really helped me learn some new vim keystrokes too, and it motivated me to improve even further.
One funny observation I made is because of time pressure I probably wrote the worst code at this event than I ever had in the past few years, which seems unfortunate for a software craftsmanship event.
In the evening we had dinner, drinks and an extra session "Personal Codes of Conduct" which was interesting, considering it was not hands on, and nothing to do with code. The discussion afterwards reminded me of some of the very long threads on the software craftsmanship mailing list and made me feel sleepy.
SC2011 did inspire me to think of giving a session at the upcoming SoCraTes 2011 in Germany. I think the best sessions involve:
- Some aspect of a challenge
- Working in pairs or small teams
- Competing against other teams
- Ideally less time pressure so people can come up with good quality code rather than hack something up as time is running out
I am sure I should be able to come up with something.
Here are some other blog posts I found about Software Craftsmanship 2011:
- Take-Away Points From my Software Craftmanship 2011 Session
- Software Craftsmanship 2011 – Thanks & Thoughts
- Software Craftsmanship 2011 – My Takeaways