Winter time. Cold. Dark, and paradoxically, in these northern latitudes, a perfect opportunity to watch the warmth of a winter sunrise without having to rise too early. A run of cold clear weather means that most mornings a pinkish, orange light spreads across the cold dark fields, leaves fringed with frost reflect the sudden glare and for a moment the sky flames.
Music to code by
What does work sound like.
What should work sound like.
If you walked the floors of a successful, creative digital agency with your eyes closed could you tell if ‘things’ were getting done.
One of the 12 items on the Joel Test is a quiet working environment, without distractions. For many developers, what this means in practice is a quiet environment where they can put on some oversized headphones to filter out interruptions and side conversations - and create their own carefully controlled musical accompaniment to coding.
In most cases developers are trying to create or maintain ‘flow’. Flow is for many coders the thing that gives them most satisfaction - the point where almost effortlessly working code seems to shoot from the brain through the keyboard and onto the screen without interruption. Coding downhill, with your feet off the pedals.
For many developers a day with good flow is a ‘good day at the office’.
Flow can be deceptive - extended periods of head down development without collaboration or an alternative viewpoint can result in a spaghetti code pile up of insane proportions. I’ve worked on plenty of projects where someone sat up all night writing code poetry - ‘fixing everything’ - because they were in the zone - only to leave the team saddled with the Object Oriented equivalent of doggrel.
Collaboration is a key attribute of a good developer, something that is especially true within an agency environment, but also true for anyone who isn’t just a ‘lone wolf’ developer. Which means how effective is ‘headphones on, head down coding’? Finding the right channel and balance of communication is important - traditionally IRC has provided the right level of persistence and real time for most developer discussion, but increasingly new tools such as HipChat and Campfire are finding ground. This seems to be especially true with more distributed remote teams.
So what to listen whilst coding, or rephrased, is there a musical shortcut to achieving ‘flow’. If it was that simple then I’d have one playlist or a couple of tunes to listen to on loop that would instantly transport me to the land of easy coding. If only it was that simple.
A dash for the train. Greens and brown blurred as the pedals spin and breathing hurries. The fields have a haze of green, early shoots of growth, wet with a misty rain. A pheasant fails to hide against this baize, an obvious shot, ready to be potted.
Into the effort now. Traffic grows; plumber, Golf, Audi, school bus. Past the two small woodlands, then down and over the little bridge, and up the bailey to skirt the embankment and into a village now fortified by roads and starter homes.
Down into the town, that welcomes careful drivers, though it does a poor job of attracting them, to make the train. Now I’m the one glistening with a morning dew.
The train pulls away, South. From the carriage window a kestrel hovers, already at work.
3 years ago moved into our little cottage. A new family with a new baby and a lot of work ahead of us. It had taken a few months to make the place even liveable.
A lot has changed since then, a wedding, another baby and an awful lot of hours spent fixing, painting, sanding and generally finagling a previously neglected old house.
We’ve had so much help from family, friends and neighbours that it almost seems like a betrayal of their efforts to be moving on. But moving we are, to another part of the same village. One thing we have learnt is that Stewkley, Bucks feels very much like home.
Dear Legacy Code Creator…
I’m sure you didn’t mean to create this problem. It probably seemed to make a lot of sense at the time. The client was a pain, you were under pressure to deliver - producer over your shoulder, asking “is it done yet”. As for that Tech Lead, he couldn’t code review his way out of a paper bag.
A project that nobody cared about. Ship it. Move on.
And it shows. Because 2 years later we are staring at the code. Trying to fix up some problem or other. It’s hard to know where to start because, well, there’s not many comments, the commit messages are garbage and the little documentation that there is makes no sense.
I understand that you didn’t think anyone would download that app, but people have. And the client, despite what you thought, thinks this is quite a good product and would like to promote it, if only it wasn’t so buggy. So now it’s over to us.
It’s OK for you, and the rest of the team. You left. A contractor. Got fired. Who knows, but you’re not here now as a couple of us go toe-to-toe with your lack of error handling and crazy re-invention of the most common design patterns.
And you know what, I know that we could all write better code, that I don’t have the context of those meetings and planning session when it all made sense. I wasn’t there.
But next time just write a few bloody comments and maybe some documentation that doesn’t assume you know the app inside out already. And think about those of us who have to up pick your pieces…
What we talk about when we talk about planning poker
How sizing stories (points, t-shirt sizes, days & hours) is more than just Numberwang.
For (digital) agencies who use agile techniques for managing the design and development process there are some added complexities hidden in the abstractions of the story sizing.
Depending on the nature of the development project, a typical agency team might run the gamut of disciplines, from Interaction & Visual Designers, working in Illustrator and Photoshop through to Python engineers coding in Vim and living in the command line. And each with a (subtly) different understanding of the complexities involved.
Planning poker is the technique of getting multiple people on the team to independently size user stories, whilst trying to avoid the risks of ‘anchoring’. It’s a great method for driving cross discipline understanding of those tiny assumptions that can threaten to derail a project further down the line.
Which looks something like this: Sat in a circle, post-it notes scattered across the floor and walls, someone is describing a level understanding of a particular user story — it’s pretty simple on the surface “As a user I can sign-in to the platform, so I can register to use the service”. People scribble on the post it notes, using the Fibonacci sequence to size stories based on the relative complexity involved for the UX (interaction and visual design) and technology teams. After a few seconds everyone stops writing and holds up their post-it notes. It’s near the start of the meeting so people are still getting a little warmed up, even so the variance in the numbers is quite high. Not just between disciplines but also between team members who work in the same area. This is where the interesting bit starts.
The discussion that follows is the bit I find fascinating. The cases where someone in tech misunderstands the complexity of a design challenge or someone missing the difficulty of integrating with a third-party (“it’s just an API call”) is understandable — that’s why we are doing this as a cross disciplinary group. These are easy to flush out and correct.
The real area of interest is where people explain the assumptions behind the scores they’ve given. At this point we are into the details, and it’s great for the momentum of the project. Weeks of thinking, sketching and notes come tumbling out in the conversation — no amount of ‘annotated wires’ can accomplish the benefit of someone challenging why “that’s only a 3”.
Capturing these assumptions is key — they make up the real scope and difficulty of a story. Often it’s also the risk factor that you’re gathering “I gave it a 21 because we just don’t know exactly how that’s going to work”. Whilst all forms of planning and project management are probably inherently flawed, you’re unlikely to get this level of collaboration and discussion whilst scoping out a typical waterfall build.
Agencies running agile are usually working with more constraints than a development shop. The client will probably have a fixed budget and timeline, so the only area of flexibility is scope. Whilst the aims of the project are (hopefully) going to be clearly documented and contractually agreed, these small instances of scope and the relationship between a ‘must’ and ‘could’ are the area of flex that teams are going to need deal with the reality of ‘unpacking a story’ and finding it’s more of a nightmare than a fairy tale. But that’s probably something to add to the backlog for another post…
Nearly 15 years ago I got my first ‘digital agency’ job in an old warehouse conversion just off Upper Street. The commercial web was still pretty new (we also did interactive CD ROMs, remember them) and Angel wasn’t quite the urban trend fest it is now. There wasn’t too much to do over lunch so a few days a week a couple of us would head to Vegas and play time-crisis or CrazyTaxi. The industry, games and Angel have changed almost beyond all recognition in that time. Today I went for a stroll round some of those old places and amazingly Vegas is still there.
Over the last few weeks, dusk has been falling noticeably earlier, and as I’ve been riding home, up to the village, there are lights moving across the fields. Farmers working late to bring in the harvest. Later after I’m home and hosed, the combine harvesters noisily edge past our front door, heading back to the farms on the other side of the village.
Today I spent some time working at the allotment, putting the effort in now for next year, preparing the ground. Sometimes you need to do some prep’ and think of the future. Maybe this is the right time of year for making plans.
Not racing, not training and not commuting.
Our latest bike is a very different machine to my usual rides. The Kona MinUte, a small load carrying bike, is no XtraCycle, but it’s certainly capable of lugging a fair amount of gear around. Our aim isn’t to try and move large loads, but to get the girls out on the back of the bike. With a good sized platform (and some careful drilling for the Yepp Maxi bike seat mount), we should be able to get 2 passengers on the back, but for now it’s set up for just one.
But it’s not the technical specs, gearing or comfortable position that makes this bike my favourite ride, it’s getting out on the road with Violet. Who knew load carrying could be so much fun.
An update to a post I made this time last year adding Froome to the list of British cyclists who have worn yellow at Le Tour. As I mentioned when I posted about this before, nationalism and sport are tricky areas, especially when we start talking about British sports people. Of the people on the list only 3 were born in the UK (by birth Millar, Wiggins and Froome are Maltese, Belgian and Kenyan respectively), which throws into relief what British might mean in this context.
From my perspective I’d hope to cheer anyone who rides with panache in the pro peloton, but as a British cyclist myself I take some pride in the performances of people representing British cycling. So to these six I say Chapeau.
Mountains of the mind.
We’ve been back in Buckinghamshire for a couple of weeks, but the Isle of Mull - the mountains, beaches and views are still travelling with me.
Sun set from Treshnish. Looking out over Eigg, Rum and Skye.
Gone for a ride…
Calgary Beach, Isle of Mull, Scotland
The R/GA Make Day 2 video, possibly featuring a little bit too much of me.
A cold afternoon, warmed by the tension of watching my team. My team - a strange phrase. They’re clearly not just mine - on this occasion I’m sharing them with the 700 other people who’ve decided to travel to the less than glamorous Abbey Stadium in Cambridge and pay £15 to sit in the away end (another 2000 or so locals are spread around the rest of the patchwork ground).
I’m always in the away end, that’s how I started watching them, with my dad at small grounds in the late 80’s and early 90’s. When football wasn’t an all pervasive fashion item that politicians and Hollywood a-listers were required to ‘like’. Not that this game is touched by much glamour. The Blue Square Premier League is a long way from the banal MOTD platitudes and millionaire showboating.
I don’t go and watch my team very often. For lots of reasons: money, family, geography, time. But one of the main reasons is that I don’t enjoy it. I can watch and enjoy most sport (except motor sport) and I enjoy watching football. But watching my team play is a long way from being a pleasurable experience.
It’s the tension, the stress.
The stress of getting to a ground in a town you don’t know. Arriving, taking a glance at the programme and with the dawning realisation that there isn’t a single player on the team who was playing for the club last time I watched a game. That strange superstition of not sitting down until the referee blows his whistle (I have no idea where that comes from). As the game progresses it gets worse. A knot in the stomach, voice growing hoarse, willing a good result. Those nearly moments - an almost great pass or the ball striking the bar. The collective frustration that pours out of the stands when a basic error is made.
Suddenly the end of the game approaches, nervous glances at my watch. The board held up for a few minutes of added time. Which drains away like the belief in fading light. Perhaps one last change and then the final whistle.
No win today. No end to the run of games without seeing them win. My team. Next time they’ll win. Next time I’ll enjoy it.