I just got back from Agile By Example 2014 (Warsaw). One of the many questions folks asked me while I was there was
“What’s the ideal workspace for software development (teams)?”
Conventional wisdom, seeing software development as some kind of office work or even factory work, suggests that developers’ workspaces can simply look like the typical open-plan office. Or maybe the dreaded cube-farm.
More progressive organisations might choose to regard software development as more of a collaborative, creative endeavour, and arrange the workspace more like e.g. a design studio.
In my experience, both both of these, and other, assumptions are fundamentally flawed.
Software development does not benefit from just one kind of workspace. Any single style of workspace does not allow for the variety of different modes of work during a typical day of development working.
Software development ebbs and flows, more or less smoothly, and unpredictably, from mode to mode and back again, throughout each and every day.
Cave: Sometimes, one or two members of the team may wish to find a quiet, enclosed space to work on a particular issue where concentration, flow, and freedom from distractions are the predominant issues. A typical “cave” would be a small, private, soundproof office with space for a desk or two, a couple of chairs, and with a door that can be closed.
Bullpen: At other times, a subset of the whole team may wish to work together, either on the same thing (like Mob Programming), or on different, but vaguely-related things (like different User Stories of a given product). Here the predominant issues are explicit and incidental sharing of knowledge, status, and other information. A typical bullpen would be an enclosed space with a large desk – seating up to say eight people around its periphery – with room for chairs, desktops and laptop computers, information radiators, etc., and again with a door closing it off from corridors and other nearby spaces.
Lounge: At other times again, some number of the team may wish to relax, chat quietly, and socialise and work in a more informal space. Here, the space is purposed primarily to socialising and relationship-building. A typical lounge would be an enclosed space – again with a door – with sofas, bookshelves, information radiators, and maybe a place to get drinks (water cooler, fridge, coffee machine, kettle, etc.) and snacks.
Riffing on Modes
In a typical working day, members of the team – and their guests – may migrate repeatedly from space to space, as the pattern and rhythm of their day changes and morphs in response to the nature of the work of the moment.
I’d suggest each team (circa eight people) have their own dedicated area comprising caves (two to three in number), bullpen (or two) and lounge.
In organisations with more than one development team, other needs (meetings, eating, play, etc.) can be catered to by shared facilities (meeting rooms, canteen or refectories, recreation rooms, sports facilities, showers, bathrooms, and so on).
And on larger product development endeavours, involving more than one team, I find some arguments in favour of enlarging the workspace and having all the teams share this enlarged space. For example, with three 8-person teams in the same space, we might look to have five or six caves, two or three bullpens, and a common – albeit larger – lounge a.k.a. common room. And intermittent remote working – such as working from home, or God forbid, a client site – can further reduce the floorspace requirements somewhat.
I hear some mutterings at the back about how much this might all cost. All I can say is, do you know the (hidden) costs – in terms of reduced productivity, less employee engagement, morale, etc.) – of your current workplace arrangements?
Until you discover and quantify those, how can you evaluate the cost/benefit of creating workspaces better suited to software development?