52858.fb2 Agile Software Development - читать онлайн бесплатно полную версию книги . Страница 21

Agile Software Development - читать онлайн бесплатно полную версию книги . Страница 21

Drafts

A good metaphor is that it generates unexpected but useful associations. Drafty Cubicles

One day, while I was describing this peculiar notion of convection currents of information flow, one of the listeners suddenly exclaimed, "But you have to watch out for drafts!" He went on to explain that he had been working in a place where he and the other programmers had low-walled cubicles next to each other, and so benefitted from overhearing each other. On the other side of their bank of cubicles sat the call center people, who answered questions on the phone all day. They also benefitted from overhearing each other. But, and here was the bad part, the conversation of the call center people would (in his words) "wash over the walls to the programmers' area." There was a "draft" of unwanted information coming from that area.

Drafts are unwanted information, in our newly extended metaphor.

Later, two programmers were talking about how their walls were too thin. They enjoyed their shared room, but were bothered by their neighbors, who argued loudly with each other. Their room was drafty, in an information sense.

We now have a nice pair of forces to balance: we want to set up seating clusters that increase information flow across people sitting within hearing distance, and balance that against draftiness: their overhearing information that is not helpful to them. You can develop a sense for this yourself, as you walk around.

Osmosis across Distances

Is there anything that teams can do, if they do not sit together, for whatever reason?

Charles Herring, in Australia descirbes applying technology to simulate "presence and awareness," a term used by by researcher in computer-supported collaborative work (Herring 2000). In my words, summarizing their experience: e-Presence and e-Awareness

The people sat in different parts of the same building. They had microphone and web camera on their workstations, and arranged small windows on their monitors, showing the picture from the other people's cameras. They wanted to give each person a sensation that they were sitting in a group ("presence"), and an awareness of what the other people were all doing.

Pat could just glance at Kim's image to decide if Kim was in a state to be disturbed with a question. In that glance, he could detect if Kim was typing with great concentration, working in a relaxed mode, talking to someone else, or gone. Pat could then ask Kim a question, using the microphone or chat boxes they kept on their screens. They could even drop code fragments from their programming workspaces into the chat boxes.

They reported a low distraction rate. Charles added that while programming, he could easily respond to queries, even answer programming problems, without losing his main train of thought on his own work.

Pavel Curtis and others at Xerox PARC were able to simulate "whispering" (when a user would like to speak to just one person in a room) through video and audio, and have rooms produce background sounds as people entered or left (Curtis 19??, Curtis 1995).

Because memes don't have to travel through air, but travel through the senses, primarily audio and visual, we should be able to mimic the effects of convection currents of information using high-bandwidth technology. What is still missing from that technology, of course, and the tactile and kinaestetic cues that can often be so important.

Information Radiators

An information radiator displays information in a place where passers by can see it. With information radiators, the passers by need not ask any question; the information simply hits them as they pass.

Figure 3-6. Hall with information radiators. (Courtesy of Thoughtworks, Inc.)

Two characteristics are key to a good information radiator. The first is that the information changes over time. This makes it worth a person's while to look at the display. This characteristic explains why a status display makes for a useful information radiator, and a display of the company's development process does not.

The other characteristic is that it takes very little energy to view the display. Size matters when it comes to information radiators - the bigger the better, as many people remind me.

Hallways qualify very nicely as good places for information radiators. Web pages don't. Accessing the web page costs most people more effort than they are willing to expend, and so the information stays hidden. The following story contributed by Martin Fowler, at Thoughtworks, reports an exception: this team found this particular report worked best on a web page.

A program auto-builds the team's system every 15 minutes. After each build, it sends emails to each person whose test cases failed, and posts the build statistics to a web page. The information about the system is updated every 15 minutes on the web page. Martin reports that a growing number of programmers keep that web page up on their screen at all times, and periodically just hit the Refresh button to check the recent system build history.

Figure 3-7. Status display showing completion level and quality of user stories being implemented. (Courtesy of Thoughtworks, Inc.)

The first information radiators I noticed were at Thoughtworks, while talking with Martin Fowler about Thoughtwork' application of XP to an unusually large (40-person) project (Figure 3-6 and Figure 3-7). Progress Radiators

Martin was describing that the testing group had been worried about the state of the system. To assuage the testers, the programmers placed this poster in the hallway (Figure 3-6) to show their progress.

The chart shows the state of the user stories being worked on in the iteration, one Post-It note sticy per story. The programmers moved the stickies on the graph to show both completeness and implementation quality of the user stories they were working on. They moved the sticky to the right as the story grew to completion, and raised it higher on the poster as its quality improved. A sticky might stop moving to the right for a time while it moved up.

The testers could see the state of the system without pestering the programmers. In this case, they saw that the work was farther along than they thought and soon became less worried about the state of the project.

Just as a heating duct blows air into a hallway or a heater radiates heat into a room, these posters radiate information into the hallway, onto people walking by. They are marvelous for passing along information quietly, with little effort, and without disturbing the people whose status is being reported.

The best thing was that they could see the progress of the work daily, without asking the programmers a question.

A second use of information radiators, suited for any project using increments of a month or less, is to show the work breakdown and assignments for the next increment (Figure 3-8). The following example also comes from Thoughtworks.

The team created a flipchart for each user story. They put sticky notes on the flipchart for the tasks they would need to do for that story. They would move stickies below a flipchart to show tasks being taken out of scope of the current iteration in order to meet the delivery schedule.

Figure 3-8. Large information radiator wall showing the iteration plan, one flipchart per user story. (Courtesy of Thoughtworks, Inc.)

Figure 3-9. Detail of an XP task signup and status for one iteration (nicknamed "Mary Ann"). (Courtesy of Evant, Inc.)

Evant's XP team also used whiteboards and flipcharts as information radiators. Figure 3-9 shows the tasks for iteration "Mary Ann" (each iteration was nicknamed for someone on the Gilligan TV series).

A third use of flipchats as information radiators is to show the results of the project's periodic reflection workshop (Figure 3-10). During these one- to two-hour workshops, the team discusses what is going well for them and what they should do differently for the next period. They write those on a flipchart and post it in a prominent place so that people are reminded about these thoughts as they work.

The wording in the posters matters. One XP team had posted "Things we did wrong last increment." Another had posted, "Things to work on this increment." Imagine the difference in the projects: The first one radiated guilt into the project room, and was, not surprisingly, not referred to very much by the project team. The second one radiates promise. The people on the second team referred to their poster quite frequently when talking about their project.

Periodic reflection workshops such as these are used in Crystal Clear and XP projects. Obviously, this technique is appropriate for smaller, colocated groups.

A fourth use of information radiators is to show everyone the user stories delivered, in progress, the number of acceptance tests written and met, and so on. (Figure 3-11).

Figure 3-11. Graph showing growing completion. (Courtesy of Ron Jeffries)

The systems operations team at eBucks.com constructed a fifth use of information radiators, this time to keep the programmers from pestering them. Displaying System Status

The programmers kept asking, "Is system A up? Is system B up? Is the link to the back end up?" The maintenance team wrote the status of each system and link on the whiteboard outside their area. Each day, they updated the status. It looked rather like ski areas posting the status of lifts and runs (so skiers don't keep asking the ski resort staff.).

The group at eBucks.com came up with a sixth use of information radiators. This time it was the programmers who created the status displays:

Figure 3-10. Reflection workshop output. (Courtesy of IndustrialLogic, Inc.)

Displaying Work Progress

The programmers were being asked about the status of their work every hour or two, which caused them no end of frustration. They wrote on the whiteboard outside their office their intentions for the current week. As they completed their tasks, carefully sized to be of the half-day to two-day variety, they marked the tasks complete.