Looking back on 2011

It’s November, and it seems I haven’t posted anything here since January. Partly that’s because I have a Proper Job™ these days, which means I spend a lot less time writing and blogging. Partly I’ve rediscovered the joy of actually programming, which means I get to spend most of my time hacking on code.

This is something of a catch-up post, bringing you up-to-date with some of the things I"ve been up to and some of the topics I intend to be blogging and writing about.

Patterns of Effective Delivery

Probably the things I’ve been talking most about are Patterns of Effective Delivery, a topic I’ll be expanding on over the coming weeks and months, and how the principle of embracing uncertainty seems to underpin most of them. I’ve done a few talks this year about the patterns, culminating in a keynote at Øredev 2011 which was graphic recorded by the fantastic Nora and Heather at ImageThink:

Heather’s version

Øredev Keynote recorded by Heather

Nora’s version

Øredev Keynote recorded by Nora


One of the reasons I left consulting was that I realised I was moving further away from technical delivery and deeper into “pure” organisational change, and I really missed actual programming. I was still speaking at conferences and I noticed the stories and examples I was using were becoming less recent. Since joining DRW I’ve managed to strike a healthy balance between delivery and organisational change. Nowadays I get to code at work. With other people. It’s great! I’ve spent this year getting very excited about mixing up OO and functional programming, primarily with Python (I know, talk about late to the party!) and JavaScript (ditto).


It’s been an interesting mind shift going from a statically-typed, class-based, multi-threaded OO environment to a single event loop, dynamic, event-based language that treats functions as first class citizens alongside objects. I’m intending to write up some of the idioms and techniques I’ve been learning, discovering and struggling with, and why I think JavaScript is a wonderful and misunderstood technology. With libraries like jQuery providing DOM manipulations in the browser and underscore.js providing proper functional programming affordances on both client and server, JavaScript really is great fun to work with.

In particular I’ve been deploying server-side apps into node.js, the potentially game-changing server-side runtime based on Google Chrome’s V8 engine. Its inventor Ryan Dahl started with the premise that blocking I/O is wrong, on the basis that most I/O is usually thousands or millions of times slower than the other things your program could be doing. So by taking concerns like threading and I/O off your hands - in return for you writing callbacks or event handlers - the world becomes a happier place.


I also intend to try sharing some of the joy I’ve found in programming in Python. Quite apart from the freedom of movement that thinking in functions can produce, I want to introduce you to list comprehensions, tuple-unpacking (a.k.a. destructuring), context managers, generators and coroutines - things that other, cooler languages are boasting about and that Python has quietly been getting on with for years.

I’ve started describing Python as runnable pseudocode: it’s become the language I carry around in my back pocket when I want to introduce non-programmers to the power of automation (displacing Ruby, which had been living there for the best part of a decade). It has the ability to quell fear and induce smiles in a way I’ve rarely seen in other languages. (I vaguely recall feeling the same about the magic it variable in HyperTalk many years ago.)

Organisational Change

My current gig involves working with all the non-programmer IT folks in a medium-sized trading firm, introducing ideas from Lean Operations and Theory of Constraints. We’re doing things like moving the people to the work, identifying and mapping value streams, measuring throughput and effectiveness rather than effort and activity - ironically all the things I was trying to introduce to my clients when I was a consultant!

So far we’ve had some encouraging successes. We’ve taken something like two thirds off the time it used to take to purchase and commission a new server, simply by focusing on reducing the >90% waiting time rather than trying to optimise the <10% of activity that was already pretty slick! (In my experience those numbers are fairly typical: when you first apply value stream mapping to a traditional process you often find well over 90% f the cycle time is lost in hand-offs and waiting.) The manager who owns the server commissioning process managed to chop one third off the time just by making two simple changes to the process. Talk about quick wins!

But the best part of this gig is that everyone is open to trying these ideas. Not just the people on the ground or their line managers, but right up to the CIO and CTO, people are not only receptive but are actively exploring ways to enable their organisation and challenge existing thinking. Most of my time and energy in Big Enterprise consulting involved trying to influence senior managers to think differently and embrace some of these ideas. It was exhausting. These days I find I can just get on with it: When I push on a closed door it usually flies open at the slightest touch. I’m still adjusting to that after nearly two years!

One of my plans is to write up some of my experiences introducing organisational change in this environment. I remember reading Esther Derby and Johanna Rothman’s excellent Behind Closed Doors, a management book that uses an experienced manager as a vehicle to illustrate how good leadership and team management can work. Many management books spend a lot of time advising on how to tolerate, subvert or otherwise handle toxic organisations. Esther and Johanna’s approach on the other hand was to invent a great manager in a grown-up organisation and use him to describe the art of the possible. I’d like to try something similar with organisational change: I haven’t seen much literature about how to operate when everyone wants you to succeed. I promise you, it’s a very different experience!

I’d like to thank…

This has been an interesting year for me in terms of meeting or reconnecting with people who have been influencing my thinking. I was lucky enough to encounter Benjamin Mitchell at QCon London earlier this year. He’s an irritatingly thoughtful and insightful guy who doesn’t let me get away with sloppy thinking. We meet for all-too-infrequent coffees and argue. He’s probably unaware of this but he’s been one of my biggest influences over the last year, and I’m especially grateful for him introducing me to the work of Chris Argyris and his Ladder of Inference.

A number of my work colleaguse at DRW have been a huge influence on my thinking over the last couple of years, not only on a technical level but also organisationally and personally. I’m not going to single them out because they’ll just point at me and laugh, but they know who they are.

Liz Keogh and Chris Matts continue to amaze me with where they’ve taken BDD, Gojko Adzic published Specification by Example, which gets me nicely off the hook for writing a BDD book, and I’ve been delighted to see Aslak Hellesøy and Matt Wynne’s Cucumber book make its way into print. It’s a marvellous read and you should go and buy it. Speaking of BDD, I owe a big thank you to Wendy Devolder and the other fine folks at SkillsMatter for hosting various in-the-brain sessions and organising the BDD Exchange (including getting all the videos online seemingly within minutes of the talks finishing). There are many others whom I’ve been learning from and exchanging ideas with during the year, so this is by no means an exhaustive list.

Others have been busy too. Arialdo Martini has translated my Introducing BDD article into Italian, and is currently working away translating some of my other articles. I’ll keep you posted on his progress. There is also a new Bulgarian translation of What’s in a Story? that I want to share with you, but I’m still trying to track down a reliable URL (the one I have keeps falling off the Internets).

Well I think that brings us pretty much up-to-date. If this is still the latest post on my blog in three month’s time, you’ll know I’ve failed to start writing regularly. Hopefully it won’t be.