|
|
 Human Interactions in Programming
Since the earliest days of computing, software development tools
have been based on a dangerous stereotype: development is done by a
nerd alone in a box. In fact, when one observes modern software development,
it's a very social activity! Members of a development team collaborate,
cooperate, and learn from one another. Even the nerdiest programmer
spends as much time communicating with colleagues as studying code
in an editor.
The HIP group is creating new software development tools based
on the obvious observation that software development is done by people
working together. We believe in taking a user-centered
approach to designing tools. So, we spend half our time studying
software development, either through controlled experiments in the
lab or hanging out with developers through field studies. The other
half is spent in creating new tools to help difficult situations
that developers face, like being a newcomer to a team with a lot of
existing code or dealing with the interruptions and task switches
that break up a developer's day.
Are you a PhD student looking to study software development in the
beauty of the Pacific Northwest? Our group is always looking for
great summer interns! To apply, you should both follow the
instructions at the
MSR internship page and send email to
rob.deline@microsoft.com to let us know your application is in
the system. We look forward to hearing from you! We typically
evaluate candidates in February for summer positions.
If you are interested in a full-time position, please fill out the
online
application. Please note that group only interviews for research
positions, which typically require a PhD in computer science or related
disciplines.
Large-scale software development requires coordination between engineering teams who may be located in different buildings,
different corporate campuses, and in different time zones. Christopher Poile, Andrew Begel, Lucas Layman and Nachi Nagappan studied
a 3-year-old software application team at Microsoft to learn how they coordinate with three dependent teams, one co-located in Redmond,
one in Boston, MA and the third in Hyderabad, India. We found that coordination was most affected by communication, capacity and
cooperation. Distributed teams suffered the same problems as co-located teams, but problems caused by time zone and culture were magnified./p>
|
|
New college graduates experience many struggles during their first six months in a software development position. Andrew Begel
and Beth Simon from the University of California at San Diego conducted a two-month long study of eight newly hired developers to Microsoft to identify how they learned
the code, tools, processes, procedures, and social network in their new jobs. We found that developers know how to program, design,
and debug, but have trouble with tools, metacognition and orientation in large, legacy codebases, and face many difficulties with
communication and social skills.
|
|
Backstory is an application that you can use to help you
with search tasks, by providing two capabilities: (1)
simultaneous search across multiple data sources, and (2)
workflow support for multi-query investigations. See this web
page for more information.
|
|
Codifier is a programmer-centric search tool that enables software developers to ask some domain-specific questions
related to programming languages and software. For example, developers might use Codifier to find out where an API is defined or used, or
where the assignments to a variable are. They should still be able to find it, even if they do not know how it is spelled or even
remember exactly how it was named. See our HCIR paper for more information.
what it is called.
|
|
In the summer of 2006, Gina Venolia and Mauro Cherubini ran a
series of surveys and interviews on why and how developers use
visual depictions of their
code. We found that diagrams that documented design decisions
were often externalized in the temporary drawings and then
subsequently lost. Most of the diagrams had a transient nature
because of the high cost of changing whiteboard sketches to
electronic renderings. Current visualization tools and the
software development practices that we observed do not solve
these issues, but these results suggest several directions for
future research.
[CHI 2007]
|
|
In the summer of 2006, Rob DeLine and Andy Ko observed
seventeen developers and transcribed their activities minute by
minute in 90 minute sessions. We analyzed these logs for the
information that developers sought, the sources that they used,
and the situations that prevented information from being
acquired. We identify twenty-one information types and catalog
the outcome and source when each type of information was sought.
The most frequently sought information included awareness about
artifacts and coworkers. The most often deferred searches
included knowledge about design and program behavior, such as
why code was written a particular way, what a program was
supposed to do, and the cause of a program state. Developers
often had to defer tasks because the only sources of knowledge
were unavailable coworkers. [ICSE
2007 paper]
|
 |
Modern development environments provide many features for navigating
source code, yet recent studies show the developers still spend
a tremendous amount of time just navigating. Since existing navigation
features rely heavily on memorizing symbol names, we present a new
design, called Code Thumbnails, intended to allow a developer to
navigate source code by forming a spatial memory of it. To aid intra-file
navigation, we add a thumbnail image of the file to the scrollbar,
which makes any part of the file one click away. To aid interfile
navigation, we provide a desktop of file thumbnail images, which
make any part of any file one click away. We did a formative evaluation
of the design with eleven experienced developers and present the
results. [VL/HCC paper]
|
 |
As a human-centered effort, we draw from various research fields
including human-computer interaction, information visualization,
computer-supported cooperative work, and social computing. The central
tenet of these fields is that one needs to understand the user's
needs in order to design tools to support them. This
technical report describes our initial investigation (from
July 2005) into the needs and practices
of software development at Microsoft.
In October 2006, we
conducted a survey to learn how Agile development is practiced
at Microsoft. We learned what Agile methodologies are used, the
distribution of practice penetration within various product
groups, and what Microsoft engineers perceived to Agile's
benefits and problems. [ESEM 07 paper]
|
 |
There are myriad ways that a system could detect relationships
between code-related artifacts - static analysis, analysis of check-ins,
observing navigation sequences, etc. Our goal is to build a common
representation for the artifacts and relationships and then use
these data structures to improve code-related search and recommender
systems. See this
white paper for more information.
|
 |
Team Tracks helps developers learn unfamiliar source code by
mining data about where the development team navigates in the code
as they go about their daily programming activities. Team Tracks
is based on two insights: the more often developers visit a part
of the code, the more important it is; and the more often developers
visit two parts of the code in succession, the more related they
are. To help a newcomer quickly find the most important parts of
the code, Team Tracks limits the code overviews (like the list of
projects and files and the class hierarchy) to the most frequently
visited items. To help a newcomer find code related to the definition
currently being edited, Team Tracks recommends parts of the code
visited just before or after that definition (at right). In a controlled
lab study, we've shown that Team Tracks significantly improves a
developer's ability to perform updates to unfamiliar code. [VL/HCC
paper and presentation]
[SoftVis 05 paper and
presentation]
|
 |
As experienced developers navigate around unfamiliar code, they
often become disoriented. Indeed, in a recent observation study,
we even saw a participant not recognize a method he had visited
just a minute beforehand. It would be great if source code had a
sense of "place" that would allow us to use our spatial memory when
navigating, just as we do when navigating physical terrains. Software
Terrain Maps are a prototype visualization based on the metaphor
of cartographic maps, which are continuous (no wasted space), have
enough visual landmarks to allow the viewer to recognize locations
perceptually rather than cognitively, and lend themselves to data
overlay. [VLC
05 paper][VLC05 presentation]
|
 |
In Submission
2008
Andrew Begel and Beth Simon
Struggles of New College Graduates in their First Software Development Job
To appear in the Technical Symposium on Computer Science Education (SIGCSE), March 2008.
2007
Andrew Begel
Codifier: A Programmer-Centric Search User Interface
In the Workshop on Human-Computer Interaction and Information Retrieval (HCIR), October 2007.
Mauro Cherubini, Gina Venolia, and Robert DeLine
Building an Ecologically-valid, Large-scale
Diagram to Help Developers Stay Oriented in Their Code
In the IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC), September 2007.
AAndrew Begel and Nachiappan Nagappan
Usage and Perceptions of Agile Software Development in an Industrial Context:
An Exploratory Study/a>
In the 1st International Symposium on Empirical Software
Engineering and Metrics (ESEM), September 2007.
Mauro Cherubini, Gina Venolia, Robert DeLine, and Andrew J. Ko
Let's Go to the
Whiteboard: How and Why Developers Draw Code
In the Proceedings of CHI, April 2007.
Andrew J. Ko, Robert DeLine, and Gina Venolia
Information Needs in Collocated
Software Development Teams
In the Proceedings of the International Conference on Software Engineering (ICSE), May 2007.
2006
Li-Te Cheng (IBM Research), Anthony Cox (Dalhousie University), Rob
DeLine (Microsoft Research), Cleidson de Souza (Universidade Federal do
Para), Kevin Schneider (University of Saskatchewan), Janice Singer
(National Research Council of Canada), Margaret-Anne Storey (University
of Victoria), and Gina Venolia (Microsoft Research)
Proceedings of Supporting the
Social Side of Large-scale Software Development
Workshop at Computer Supported Cooperative Work (CSCW), November
2006.
Andrew Begel
Help, I Need Somebody!
In Proceedings of Supporting the
Social Side of Large-scale Software Development Workshop at CSCW, Nov. 2006
Robert DeLine, Mary Czerwinski, Brian Meyers, Gina Venolia, Steven
Drucker, and George Robertson
Code Thumbnails: Using spatial
memory to navigate source code In Proceedings of the IEEE Symposium on Visual Languages and
Human-Centered Computing (VL/HCC), Sept 2006.
Thomas D. LaToza, Gina Venolia, and Robert DeLine
Maintaining mental models: A study of
developer work habits In Proceedings of the International Conference on Software Engineering (ICSE),
May 2006.
Gina Venolia
Textual
Allusions to Artifacts in Software-related Repositories
In Proceedings of Mining Software Repositories (MSR), May 2006.
2005
Robert DeLine Staying oriented with Software Terrain
Maps Proceedings of Workshop on Visual Languages and Computation (VLC) 2005.
Gina Venolia, Robert DeLine, and Thomas LaToza
Software Development at Microsoft Observed: It's About People ...
Working Together
MSR Technical Report MSR-TR-2005-140. October 2005.
Robert DeLine, Mary Czerwinski, and George Robertson
Easing program comprehension
by sharing navigation data Proceedings of the IEEE Symposium on Visual Languages & Human-Centered Computing (VL/HCC)
September 2005 (best paper award).
Robert DeLine, Amir Khella, Mary Czerwinski, George Robertson
Towards understanding programs through
wear-based filtering Proceedings of the ACM Symposium on Software Visualization (SoftVis) 2005.
- Reid Holmes, U Calgary, Fall 2007
- Andrew Sutherland, U Saskatchewan, Fall 2007
- Christopher Poile, U Waterloo, Summer 2007
- Lucas Layman, NCSU, Summer 2007
- Sushil Bajracharya, UC Irvine, Summer 2007
- Mauro Cherubini,
EPFL, Summer 2006
- Andrew Ko, CMU, Summer 2006
- Thomas LaToza, CMU,
Summer 2005
- Amir Khella, U Maryland, Summer 2004
- Tony Tang, U
of Calgary, Summer 2004
|