I’ve decided not to talk about work-related stuff until I have a blog policy to refer to (it’s still being written). I’ve considered a few topics, but I wouldn’t feel safe unless I ran every related post by my manager and that’s just too much effort. I’m making an exception tonight though, because I have this nice big post in my head and there’s nothing about it that could reveal some deep dark company secret 😉
Earlier this year we started pair programming as a part of our move towards becoming an XP team. I don’t want to give any specific details right now, but I am going to talk about what happens when we’re not pairing. We take breaks at intervals through the day in order to prevent burnout, however due to varied finishing times in the team I’m left with no pair for 1-2 hours each afternoon. More often than not, I’m the last person in the office for anywhere up to an hour.
I haven’t taken much notice of it until this evening, but these times are when I get some of my best work done. This is not to say that I want to stop pairing, because we get real and noticable benefits from it. And the stuff I produce isn’t necessarily better than what we produce while pairing, I just find that after 4 years of programming solo at this company there are some things that don’t really click until I’m off by myself.
As I posted about 6 months ago, trance music helps me to concentrate. Most programmers (and likely others too) will recognise what I was trying to say then as being “in the zone” and I often surprise myself how quickly I can get there. I put my ear buds in and turn the volume to just above idle conversation level so I don’t get any noise interruptions (I try to keep it quiet enough that I’m not going to damage my hearing though ;)). I’ve trained myself well, and it rarely takes more than a few minutes as long as I don’t get any other distractions.
If it’s the middle of the work day and I’m not working on a huge challenge, I’ve actually taken to listening to a music podcast instead because the talking bits serve to break up my concentration and distract me. As my workmates can attest, if I accidentally end up in the zone it can be very hard to get my attention and that’s not only counter-productive for them it leads to me getting annoyed when they force me out for normal day-to-day stuff. Like pairing 🙂
Luckily it’s much harder to get in the zone during the day because either people are moving around or something flashes up on my screen pretty regularly – this was one of the reasons I chose my current seating position, as a frequently-used walkway is within my field of view instead of just blank walls. On evenings like tonight though most people had gone home giving me over hour of time to myself so I resumed listening to the latest Trance Tuesday episode. I was only partway though the nearly 3hr set so there was no chance of it finishing and spoiling my fun.
I was working on a problem with a few tests that were failing incorrectly due to some third-party code; we’d been aware of the problem for about a week but nobody was immediatelysure of how to fix it so it had been left for someone to research. I had intended to investigate complete alternatives, but instead decided to look further into the code of what we were using, since it’s an open source project. In a very short amount of time I found an option we’d all missed, managing to implement a test utility
method for it using TDD and fix the failing tests before I left 😉
I’m sure this option would have been found eventually, but it wasn’t something I’d really considered before then and it turned out to be a very productive end to the day. The downside is that I had to spend a few minutes writing an email to explain what I’d done, because it wasn’t done paired and so there was no knowledge sharing. But I had fun doing it, and have already planned out what I want to do next time I’m going solo.
As far as I know doing decent sized tasks away from our pairing environments goes against the grain of the XP methodology we’re slowly implementing, but I don’t expect or want it to go away. One of the things I remember from discussions about pairing is that trying to do absolutely every line of code in pairs is insane. Going off solo to research something is quite normal, and (at least in my case) often leads to a different perspective on code – so I like to do more than just researchy things.