project data. These maps are typically
designed to supplement a standard
development environment. Our goal
is to integrate maps into the development environment such that developers can carry out most tasks within
the map.
To address these issues, using a user-centered approach we are designing an interactive code map for development environments. In preparation
for our initial design we conducted
a series of field studies at Microsoft
Corporation. We interviewed developers to find how and why they draw
diagrams of their code, and we collected many example diagrams along
the way. 3 We also directly observed
developers at work to watch their
information-seeking behavior and to
catalog their information needs. 7
Finally, we did a participatory design of
a paper-based code map to allow a development team to design its content
and appearance and to witness how it
supported their conversations. 1 Using
insights from these three studies, we
are actively prototyping Code Canvas,
a Microsoft Visual Studio plug-in that
replaces the tabbed documents with a
zoomable code map. 5
how and Why Developers Diagram
To better understand how professional software developers use visual representations of their code, we interviewed nine developers at Microsoft to
identify common scenarios, and then
surveyed more than 400 developers to
understand the scenarios more deeply. 3 The three most frequently mentioned scenarios were:
˲ ˲ Understanding existing code.
Examining source code and its behavior
to develop an understanding of it.
˲ ˲ Designing/refactoring. Planning
how to implement new functionality,
fix a bug, or make the program structure better match its functionality.
˲ ˲ Ad hoc meetings. Asking a cowork-er to explain existing code, vet a decision, or help work through a problem.
Developers rated these three
among the most important to their
job functions. More than half of survey respondents indicated that diagrams were important in these scenarios. Most ad hoc meetings were
small, involving two or at most five
people. While typically done solo, un-
Better support for
code diagrams in
the development
environment could
support code
understanding and
communication,
and could serve
as a “map” to help
keep developers
oriented.
derstanding existing code and designing/refactoring often involved pairs or
small groups.
In a separate study we sought to
understand developers’ information
needs while carrying out their development tasks. 7 We observed 17 developers at Microsoft for approximately
90 minutes each, manually recorded
their activity minute by minute, and
coded these logs into 334 instances of
information-seeking behavior. From
this data, we identified 21 general information needs, clustered into seven
work categories. Consistent with the
previous study, we found many of
their information needs fell into the
categories of understanding execution
behavior and reasoning about design,
see Table 1.
In our observations, ad hoc communication with coworkers was a
common way of addressing a variety
of information needs. Table 2 shows
the information needs that were most
frequently addressed by talking with
coworkers. This reliance on conversations with coworkers corresponds
with the ad hoc meeting scenario from
the diagramming study.
From these two studies we know
that developers have frequent, specific information needs when trying
to understand existing code and planning code changes, and they often use
diagrams when looking for answers.
This suggests the plausible utility of
a code map that answers these needs
either directly or through interaction.
We also know that developers often
turn to coworkers to find the answers
they need, and they create diagrams to
Table 2. Top information needs for
which software developers turned to
their coworkers.
1. What have my coworkers been doing?
2. What are the implications of this change?
3. Is this problem worth fixing?
4. What is the program supposed to do?
5. In what situations does this failure occur?
6. How have resources I depend
on changed?
7. What code could have caused
this behavior?