This post originated from an RSS feed registered with Agile Buzz
by Martin Fowler.
Original Post: Bliki: TeamRoom
Feed Title: Martin Fowler's Bliki
Feed URL: http://martinfowler.com/feed.atom
Feed Description: A cross between a blog and wiki of my partly-formed ideas on software development
A common thing you find in agile projects is that the development
team sits in a single open team room. It was advocated early on in
Extreme Programming and called out as one of primary practices in
the second edition. Agilists favor a open team room as it promotes
lots of informal and deep communication between people on the
team.
Why
Software development is an intense exercise in
collaboration. An open space encourages regular conversations and
interactions between people. You can see what everyone's doing and
easily ask for help when you need to. Often you get serendipitous
communication, where you overhear something that's really useful.
Hearing this, some people are concerned about noise, and would
prefer private offices. In practice I find that teams don't find
noise to be a serious issue. There's usually a hum of conversation
going on, after all pair programming often accompanies this style
of development. But the conversation isn't usually that
distracting, particularly as you're focused on the conversation with
your pair. I suspect the reason it's not that distracting is
because the team has a common purpose around a collaborative
activity. It isn't comparable to an open-plan office where
everyone is doing something different.
Tips for a good Team Room
First make sure it is the right size for the team. While a team
room should be open within itself, it should be closed to everyone
else. In an ideal world you'd like flexible walls that can
insulate one team from another, so an office consists of pods of
teams. This is hard to do in practice. Our offices tend to be
completely open, with little barriers between teams. This seems to
work well-enough, although there are some complaints about the
inter-team noise.
Pay attention to natural light. Humans are used to seeing the
outside world, and all sorts of natural rhythms work off of
light. So it's no surprise that people get very cranky if there
isn't enough light about. I've spent plenty of days in enclosed
conference rooms, and it certainly wears down my energy.
Provide enough space: about 50 square feet per person (4.5
square meters for those on metric).
With the right kind of space the next key thing is to ensure
that the team has control over that space. An important part of
agile thinking is that the team is responsible for how it works,
and how it organizes its space is part of that. Ideally you want a
team to have complete control over their space, with freedom to
configure it how they like and reconfigure it at will. Things
should be done so it's easy to move things around, because during
the project the team will need to change things as the project
changes.
The purpose-built tables in our Beijing office have
handy baskets for power and other cables.
An immediate consequence of this is to ditch any kind of
modular furniture that requires a facilities group to move more than
an inch. Most teams I see use simple tables, and you can certainly
go cheap here.
The biggest hassle is wires - primarily for power and network
access. Ideally you want these underfloor or overhead so that
people can easily route wires to the tables, wherever the tables
happen to be.
The place to spend money on furniture is for good quality
chairs. Programmers spend a lot of time sitting, and any physical
damage due to poor posture will have a direct effect on the team's
productivity - so don't stint here. It may be that some people
will want strange chairs, such as balls or kneeling chairs. Do
your best to accommodate them.
Some people are big fans of tables that can be adjusted between
a sitting and standing height, as they find that standing for a
while helps with back pain. These are harder to find, but worth
looking into if your team members need it. Back pain is a common
issue, but everyone's pain (and treatment) is different.
You'll need lots of wall space, as agilists love their information
radiators. You want plenty of room for story walls,
architectural diagrams, whatever people want to stick on the
wall. A good bit of this wall space should be whiteboards so
people can draw something whenever the mood takes them. Include
some wheeled whiteboards. Make sure there's a digital camera
around so people can easily record what's on the board. Now that
displays are so cheap, consider getting some just for wall
displays - this is particularly handy for dynamic displays such as
build status. I've seen one team have projectors trained on a wall
with various kinds of information displays.
The traditional layout is to have people working around clumps
of desks. This gives you regular eye contact with the rest of your
team. However I've heard many people sing the praises of the
UPod.
People will occasionally need some private space, so ensure
there are one or two small conference rooms available, with
telephones. These can be used for privacy or when there's a
concern about distraction. A large meeting room that the team can
gather in for meetings away from the working space is also
handy.
I've always been a big proponent of lots of monitor
space. Clever software with multiple virtual workspaces is a great
feature, but nothing is faster than just moving your eyes. Every
workstation should have a couple of 20 inch monitors as a bare
minimum. My desk has a pair of 20 inch monitors for my Ubuntu
machine and a 25 inch for my mac laptop. I don't think that's at
all excessive.
Software development is inherently creative, so expect to see
lots of baubly distractions. Toys are commonly found around our
teams (as Neal Ford says: "every team needs a plastic
kangaroo"). There are good cognitive reasons why this is valuable,
it's all about keeping the brain stimulated and creative.
Similarly do provide easy access to snacks and drinks. This
helps support informal, conversational breaks in the team
area. It's hard to be creative when you have to pay for awful
coffee.
If you're working with remote workers, make it easy to set up a
video link. Indeed many teams like having permanent video links to
any remote workers so you can always maintain that casual video
contact.