Come up for air is a pattern for taking regular
opportunities to communicate and to refresh awareness.
Before examining the pattern, let's take a look at a metaphor:
When snorkelling, you have to come up for air regularly
otherwise a bad thing can happen. When up and before submerging
again, you should check that it's safe to do so by surveying your
surroundings and taking your bearings.
Pattern Name: Come Up For Air
Summary:
During development, a developer should never miss an opportunity
to communicate with the team and to raise his awareness of any
tactical and strategic changes, recent decisions and the general
project status.
Context:
A developer is writing code alone to satisfy a number of tasks
that he owns in relation to a particular user story.
Problem:
Writing code is an intensive activity that requires deep
concentration. A developer can become so engrossed in the coding
effort that he can forget to Come Up For Air on a regular basis.
Consequently the developer becomes disconnected from what is going
on around him. Even when a developer disengages from the coding he
can remain engaged by its details. Here's a story:
George has just got a green light on his unit tests and decides he
needs a fresh coffee. Walking to the machine, George starts to
think about his coding to-do list and the next code he needs to
write. He's blinkered and unaware of the latest information in the
team's
Informative Workspace and the
chatter occurring amongst other team members. Without taking the
time to look around, George misses the opportunity to catch up on
things that may affect him sooner or later. While
Continuous Integration will
highlight code divergence, perhaps he missed that key metric
relating to progress in a
Big Visible Chart or that useful
snippet of information from a conversation which should have
influenced how he is going to approach the next piece of code.
Solution:
Pair programming helps but an individual still needs to develop a
personal awareness. Firstly, a developer needs to become tuned in
to 'team chatter' while coding, absorbing any relevant information
revealed by other developers through osmosis. Secondly, he should
make a conscious effort to be frequently proactive and interactive
beyond his pair programming partner. He should break regularly from
coding activities in order to reacquaint himself with all team
mates and the
Informative Workspace . Whether
he simply sits back in his seat or gets up to stretch his legs, a
developer should regularly consume all new information available
and learn from it.
During a break from coding, try doing some of the following:
- Walk around the team's workspace taking time to appreciate the surroundings and the atmosphere.
- Absorb the information portrayed by the Big Visible Charts and other Information Radiators in the Informative Workspace .
- Make conversation with other team members but do not interrupt those with 'heads-down' or those in the private area of the workspace. Keep in touch with any remote team members using an instant messenger, phone or video phone facility.
- Observe any white board sessions engaging some of the team members, and do not be afraid to get involved.
- Seek advice and opinion, and offer it when it is requested or you deem it pertinent or useful.
- Check your email for communications from other team members and project stakeholders.
- Assess everything seen or heard with reference to the sprint/iteration plan and the big picture (product backlog or release plan) to identify any potential impact, risks or obstacles.
- Take a holistic snapshot of key metrics, e.g. test coverage, acceptance test pass/fail rates, etc. Update any Information Radiators or data associated with Big Visible Charts .
As each individual developer operates at a higher level of awareness, he will become attuned to the team's collective effort and goals. Each developer will see and understand more than just the bubble defined by the tasks they own. As each developer tunes in, the team will start to resonate, generating a 'buzz' as communication, confidence, visibility and productivity increases.