One of the things that drew me to the emerging XP practices in the late ’90s was their embrace of the humanity of software development. So much of contemporary practice was concerned with removing human messiness from the process: unambiguous specification; meticulous design; error-free coding; precise testing. If every step of the transformation from ideas to running system was executed perfectly it all worked perfectly. But if not …
XP recognises that trying to become more machine-like is not the answer to delivering better machines. Instead XP practices and values (values in a software development process, what an idea!) are all about recognising the inevitable messiness and working with it. Find requirements hard to specify without ambiguity? Have a conversation and keep returning to that conversation as the vague and uncertain elements become recognised. Find it hard to deal with all the variance of an idea in one go? Build the software incrementally with a growing set of tests to describe all the subtle deviations and contradictions. Find it hard to decide which UX approach is better? Sit with the user/customer and try things out as you build.
Co-location is a crucial and somewhat assumed aspect of XP. Physical co-location was required or implied by many of the practices: Whole Team, Planning Game, and Pair Programming were all originally conceived as things to be done in the same place (indeed ‘Onsite Customer’ was an idea that became subsumed into ‘Whole Team’). But co-location of activity and focus is equally important: the purpose of having an ‘Onsite Customer’ is so that if an ambiguity or inconsistency pops up even as some code reaches the point of delivery the expert user can give feedback and changes made as necessary. No drama, no artificial separation of decision/design/development/deploy activities, just another short loop around the delivery cycle.
As a long-term XPer co-location is the norm for me, so much so that I am in the office with our engineering team for most of every week despite the fact I live about as far away as it is possible to live and still be in the same country. I love being there, in amongst the hubbub of it all, and the days I work from home – a necessity if I am to have any form of home life at all – are never quite as much fun.
And yet, from today we’ve requested that our engineering team work remotely for a period, as so many others are.
Partly this is to protect the health of our employees; we can’t possibly prevent them from becoming infected with COVID-19 but we can certainly help reduce exposure by not asking them to spend hours on tube trains and buses every day travelling into the busiest areas of London and New York. Partly it is to protect the health of the business; even if it is inevitable a significant proportion of the team will become ill, we can reduce the chances that people working closely together on important initiatives become ill at the same time.
But mostly we’re doing it because we can; in this period of uncertainty, while the scientists and politicians work out how to interpret the data and and what a good response looks like, we don’t need to require people to come into the office. We can spend a little time getting good at remote working while we have the opportunity to do so and we can give people back a little time to figure out how to deal with the impact of the pandemic and our government’s response to it on themselves and their home lives.
Because what concerns me isn’t the practices or the processes of building code remotely. There are tools for remote pairing, planning and meeting that have worked well for a couple of decades now (and will improve rapidly this year). I’ve no doubt that we’ll be shipping quality software just as quickly and productively as ever.
What will be harder is replacing that hubbub, the sense of shared purpose, the ease of micro-interaction and the subtle glue of togetherness that comes from being in one place; and the positive impact that has on our peoples’ mental health. But we’ll work hard at maintaining these aspects of working together even as we work remotely, starting with our first ever fully-remote ‘All Hands’ this week.
I’m already looking forward to that first day back in the office though, hopefully not before too long.