There’s more to software productivity than the physical environment. Communication is equally important. A developer may be in the zone and writing perfect code, but if they are writing the wrong code because they’re isolated then we haven’t done anything to help productivity. Frequently sharing information is essential to every project, and there are quite a few distinct levels:
- Structured communication – Planned meetings, stand-ups and retrospectives.
- Information radiators – Agile boards, build status lights etc.
- Ad hoc but intentional conversations.
- Osmotic sharing, serendipitous or ad hoc but unintentional conversations.
- Tacit learning.
Experience, observation and research tells me the following two things are true:
- Writing Software, designing things, planning and strategy are deep cognitive tasks which require extended periods of focus to perform at a very high level.
- Communication is a distraction or interruption for deep cognitive tasks.
If we’re looking to create the best possible agile system, we need to consider carefully which communication modes we embrace, and what we reject.
We should encourage high quality forms of communication:
- Face to Face conversations.
- Group Stand-ups.
- Whiteboard design sessions.
- Team lunches, drinks, social events.
- Agile boards, build lights, progress success metrics.
While avoiding low quality or distracting forms of communication:
- Group Emails, especially email chains.
- Paper specifications.
- Instant Messenger.
- Campfire / IRC / Team Chat Rooms.
- General office chatter around workspaces.
Carefully embracing high quality serendipitous communication:
- Overhead snippets around your workspace.
- The ‘water cooler’.
- Adhoc group problem solving or design sessions.
The most effective team I’ve worked with had a strong, if unwritten code of conduct about the way team members interact and communicate, respecting the value of productive blocks of time as well as plenty of time interacting both professionally and socially – this code was firmly cemented into the daily routine, with periods of communication and periods of quiet work.
The day starts with coffee, email, jokes and then stand-up around the Agile board. Then there is a period of solid and fairly quiet work time until lunch; team members interact if they need too, but the goal is to balance distraction with productivity. Everyone eats lunch together and the conversation nearly always comes around to some problem on that needs solving on the project. Afternoon is solid for a while, but tails off at the end as people get tired and lose concentration – this is often a good time for group administration tasks like estimation. Very often there is a social drink a few times a week.
When I worked at Ericsson there was a deeply ingrained culture about they value of communication and the importance of being face to face. There were certain things that were acceptable to share via email, others required a phone call, but all important or personal interactions were expected to be conducted face to face – even when that often required getting on a plane. Not environmentally friendly, nor perhaps very cost effective, but it sent a strong single about the importance of being considerate about how we communicated. I wish I could say there was such a strong sentiment about senior staff turning up to meetings on time!
I don’t pretend for a minute that this is something new – Lister and DeMarco have been talking about this since they wrote Peopleware in the late 80s and XP talks about managing communication and space via Caves and Commons. Physical space is important, and communication is important – the final thing I want us to think about ties these two themes together, the price of distractions and multitasking.