*
Quick Links|Home|Worldwide
Microsoft*
Search for


Logo Human Interactions in Programming

Overview

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.

Internships and Full-time Positions

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.

People
Projects
Software Development Team Coordination

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>

Struggles of Newly Hired Developers

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

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

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.

Whiteboards and Code Maps

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]

Developers' Information Needs

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]

Code Thumbnails

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]

Work Practice at Microsoft

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]

Bridge

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

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]

Software Terrain Maps

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]

Publications

2008

Andrew Begel and Nachiappan Nagappan.
Pair Programming: What's In It For Me? In the 2nd International Symposium on Empirical Software Engineering and Measurement (ESEM) Kaiserslautern, Germany. October 2008.

Andrew Begel and Beth Simon.
Novice Software Developers, All Over Again. In the International Computing Education Research Workshop, Sydney, Australia, September 2008.

Andrew Begel and Nachiappan Nagappan.
Global Software Development: Who Does It? In the International Conference on Global Software Engineering (ICGSE) Bangalore, India. August 2008.

Andrew Begel.
Effecting Change: Coordination in Large-Scale Software Development.
In the Workshop on Cooperative and Human Aspects of Software Engineering (CHASE) Leipzig, Germany. May 2008.

Lucas Layman, Nachiappan Nagappan, Sam Guckenheimer, Jeff Beehler, Andrew Begel.
Mining Software Effort Data: Preliminary Analysis of Visual Studio Team System Data. In the 5th Working Conference on Mining Software Repositories (MSR) Leipzig, Germany. May 2008.

Reid Holmes, Andrew Begel.
Deep Intellisense: A Tool for Rehydrating Evaporated Information.
In the 5th Working Conference on Mining Software Repositories (MSR), Leipzig, Germany. May 2008.

Andrew Begel and Beth Simon
Struggles of New College Graduates in their First Software Development Job
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.

Andrew Begel and Nachiappan Nagappan
Usage and Perceptions of Agile Software Development in an Industrial Context: An Exploratory Study
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.


©2008 Microsoft Corporation. All rights reserved. Terms of Use |Trademarks |Privacy Statement