Back in December of 2011 I attended a Code Retreat in Glasgow which was part of the global day of code retreat. In short code retreat is a day of TDD and pair programming in which we all work on the same problem for 45 minutes a session, have a retrospective discussion about the last session and delete the code then change pair and repeat. The day was global in the sense the same thing was happening in 90+ cities around the world.
(If you'd like to know more about code retreat go to
coderetreat.org and have a click around).
Now that I've had time to more than enough time to reflect on the day, I thought I'd write up what I think I learned on the day. Some may be totally obvious, some perhaps not so obvious... lets see where it goes shall we.
I don't know Ruby.
I went to code retreat with effectively one language I could work in and that was C#. Why was this? Well C# is my day job language and to be honest over the last few years I've not had the energy in the evenings to tinker with other languages after I have done my fatherly duties for the evening. Now that the kids are getting just that little bit older I'm slowly recovering both free time and energy meaning I can actually sit in front of a PC at night and not just fall asleep. So should I learn another language? Well yes, but not yet. Other languages will I'm certain expand my thinking and will no doubt improve my general coding skill but now is not the time. There are other lessons that I feel must come before this.
I haven't done pair programming.
Pair programming was a real eye opener for me. Obviously I've heard/read many people say many good things about it, but it was interesting for me to actually use it for the first time. The only downside is that due to the 45min time limit on a single pair it was hard to get in to a good flow before the dynamics would all change again. It's definitely something I'd like to try more, but I don't think it would be wise to pair with many of the individuals at my current employer as I really think it is worth working with someone that knows what they are doing. I could not bring myself to call some of these individuals "developers", I know that sounds bad and indeed they may read this but I think it's justified.
I'm comfortable.
Yes I'm a comfortable guy safe in the knowledge that I can work with the problem domain presented to me each day at work. Although the requirements evolve and change they do so at a speed that I rarely need to write brand new components or applications. The trouble is being comfortable like this is not good, this means when I'm starting something new I start it with a lot of doubt that prevents me from getting a lot done. The solution to this is clear...practice. Pick some code katas and start plugging away at them (more on that in a later post I think).
My development environment needs set up for productivity.
I turned up to the day with Visual Studio nearly in its default factory released state. With the minor exception of having installed nunit and testdriven.net. I was pretty much starting with a blank screen each time and I was getting mighty fed up of writing the same thing over and over again "test....void...public... test name" etc.
I've realised that I need to install just enough of the right tools and create just enough snippets to reduce the time I doing just simple but long typing. I need to work with and learn how to maximise tools such as ReSharper.
My head needs set up with TDD in mind.
More on this in a later post but I'll say this quickly, when first starting TDD getting your head in to the mind set of actually doing real TDD is actually quite difficult but only time and practice will improve this. This is what code kata is for, doing a simple problem you've probably done a few times means you can focus on writing good code in the way it should be done.
So I was measured, do I really need to practice?
Actually speaking of practice, this is the whole point of code retreat. We are there to practice, away from delivery dates and support requests. It was said by Corey Haines (one of the founders of code retreat) that there is the kind of code we'd like to write each day at work and then there is the actual code we end up having to write and that the difference in these is merely a measure of how much we suck. So I need to spend time writing good solid code and reduce that gap I measured for myself.
There are people who care and are willing to listen.
In my opinion I've saved the best till last. The people that attended the code retreat in Glasgow were everything you could have hoped they'd be, especially the guys that organised it
@mowat27,
@joe_jag and
@roblally and this fine chap
@paulanthonywils who's company coughed up the money to pay for the day. Let me be completely honest, though I was really looking forward to the day I was totally bricking it. I knew I was going to be in a room of people who were smart and really cared about code and there was me that on paper looked like one of the common (or garden) clock on clock off dev that spend their career only using if, else and switch and combinations there of. I was really made to feel welcome by everyone there and some of the guys I paired with who to me seemed clearly in advance of my level almost seemed glad to get the chance to pass on what they had learned. It was like I had made the choice to be there on a Saturday so I implicitly had earned their respect not to be a waste of anyone's time and this was refreshing and mind blowing at the same time.
So where has code retreat left me?
Well going to code retreat has been like another part of the journey that I have been on in the last year or so since my first DDD Scotland event. Each step of this journey is exponentially lighting the light bulbs of my brain and is ultimately going to increase my career's health and happiness. Now if you'll excuse me I have some kata to get on with.