To make a prairie it takes a clover and one bee,—
One clover, and a bee,
The revery alone will do
If bees are few.
— Emily Dickinson, 1830-1886
Over the years, my research projects have spanned user interfaces, software engineering and type theory, but they all share a common goal: to make it easier to produce usable, reliable software. When you observe the work practice of an experienced professional, like a surgeon or a car mechanic, you see efficient, graceful use of task-appropriate tools. In contrast, if you watch an experienced software developer doing an every-day task, you see fumbling, confusion and frustration. Software developers are every bit as trained and talented, but their tools and processes are often poorly suited for their tasks.
My group at Microsoft Research, Human Interactions in Programming (HIP), applies user-centered design to software development: studying developers both in the lab and in the field; understanding what is difficult about their typical tasks; building new tools to make those tasks easier; and evaluating those tools with developers. My recent research studies recommender systems for team newcomers, the use of spatial memory to navigate large code bases, retaining knowledge in long-lived projects, and patterns of communication and interruption in co-located and geographically distributed development teams.
- Robert DeLine, Making CHASE Mainstream (Keynote at CHASE Workshop), 17 May 2009
- Kael Rowan, Robert DeLine, Andrew Bragdon, and Jens Jacobsen, Debugger Canvas: Industrial Experience with the Code Bubbles Paradigm, International Conference on Software Engineering, 2 June 2012At ICSE 2010, the Code Bubbles team from Brown University and the Code Canvas team from Microsoft Research presented similar ideas for new user experiences for an integrated development environment. Since then, the two teams formed a collaboration, along with the Microsoft Visual Studio team, to release Debugger Canvas, an industrial version of the Code Bubbles paradigm. With Debugger Canvas, a programmer debugs her code as a collection of code bubbles, annotated with call paths and variable values, on a twodimensional pan-and-zoom surface. In this experience report, we describe new user interface ideas, describe the rationale behind our design choices, evaluate the performance overhead of the new design, and provide user feedback based on lab participants, post-release usage data, and a user survey and interviews. We conclude that the code bubbles paradigm does scale to existing customer code bases, is best implemented as a mode in the existing user experience rather than a replacement, and is most useful when the user has a long or complex call paths, a large or unfamiliar code base, or complex control patterns, like factories or dynamic linking.
- Danyel Fisher, Rob DeLine, Mary Czerwinski, and Steven Drucker, Interactions with Big Data Analytics, in ACM Interactions, ACM, May 2012
- Andrew Bragdon, Robert DeLine, Ken Hinckley, and Meredith Ringel Morris, Code Space: Combining Touch, Devices, and Skeletal Tracking to Support Developer Meetings, in Proceedings of ITS 2011, ACM, November 2011We present Code Space, a system that contributes touch + air gesture hybrid interactions to support co-located, small group developer meetings by democratizing access, control, and sharing of information across multiple personal devices and public displays. Our system uses a combination of a shared multi-touch screen, mobile touch devices, and Microsoft Kinect sensors. We describe cross-device interactions, which use a combination of in-air pointing for social disclosure of com-mands, targeting and mode setting, combined with touch for command execution and precise gestures. In a formative study, professional developers were positive about the interaction design, and most felt that pointing with hands or devices and forming hand postures are socially acceptable. Users also felt that the techniques adequately disclosed who was interacting and that existing social protocols would help to dictate most permissions, but also felt that our lightweight permission fea-ture helped presenters manage incoming content.
- Andrew Begel, Rob DeLine, and Thomas Zimmermann, Social Media for Software Engineering, in Proceedings of the FSE/SDP Workshop on the Future of Software Engineering Research (FoSER), Association for Computing Machinery, Inc., November 2010Social media has changed the way that people collaborate and share information. In this paper, we highlight its impact for enabling new ways for software teams to form and work together. Individuals will self-organize within and across organizational boundaries. Grassroots software development communities will emerge centered around new technologies, common processes and attractive target markets. Companies consisting of lone individuals will able to leverage social media to conceive of, design, develop, and deploy successful and profitable product lines. A challenge for researchers who are interested in studying, influencing, and supporting this shift in software teaming is to make sure that their research methods protect the privacy and reputation of their stakeholders.
- Robert DeLine, Gina Venolia, and Kael Rowan, Software Development with Code Maps, in Communications of the ACM, vol. 53, no. 8, pp. 48-54, Association for Computing Machinery, Inc., 4 July 2010Could those ubiquitous hand-drawn code diagrams become a thing of the past? (NOTE: Also appears in ACM Queue 8:7, Aug 2010.)
- Robert DeLine and Kael Rowan, Code Canvas: Zooming towards Better Development Environments, in Proceedings of the International Conference on Software Engineering (New Ideas and Emerging Results), Association for Computing Machinery, Inc., 2 May 2010The user interfaces of today’s development environments have a “bento box” design that partitions information into separate areas. This design makes it difficult to stay oriented in the open documents and to synthesize information shown in different areas. Code Canvas takes a new approach by providing an infinite zoomable surface for software develop-ment. A canvas both houses editable forms of all of a project’s documents and allows multiple layers of visualization over those documents. By uniting the content of a project and in-formation about it onto a single surface, Code Canvas is de-signed to leverage spatial memory to keep developers orient-ed and to make it easy to synthesize information.
- Robert DeLine and Chris Parnin, Evaluating Cues for Resuming Interrupted Programming Tasks, in CHI '10: Proceedings of the 28th international conference on Human factors in computing systems, Association for Computing Machinery, Inc., April 2010Developers, like all modern knowledge workers, are frequently interrupted and blocked in their tasks. In this paper we present a contextual inquiry into developers’ current strategies for resuming interrupted tasks and investigate the effect of automated cues on improving task resumption. We surveyed 371 programmers on the nature of their tasks, interruptions, task suspension and resumption strategies and found that they rely heavily on note-taking across several types of media. We then ran a controlled lab study to compare the effects of two different automated cues to note taking when resuming interrupted programming tasks. The two cues differed in (1) whether activities were summarized in aggregate or presented chronologically and (2) whether activities were presented as program symbols or as code snippets. Both cues performed well: developers using either cue completed their tasks with twice the success rate as those using note-taking alone. Despite the similar performance of the cues, developers strongly preferred the cue that presents activities chronologically as code snippets.
- Robert DeLine, Code Talkers, in Making Software: What Really Works, and Why We Believe It, O'Reilly Media, 2010
- Andrew Begel and Robert DeLine, Codebook: Social Networking over Code, in Proceedings of ICSE 09 (New Ideas and Emerging Results), Association for Computing Machinery, Inc., June 2009Social networking systems help people maintain connections to their friends, enabling awareness, communication, and collaboration, especially at a distance. In many studies of coordination in software engineering, the work artifacts, e.g. code, bugs, specifications, are themselves the objects that link engineers together. In this paper, we introduce Codebook, a social networking web service in which people can be “friends” not only with other people but with the work artifacts they share with them. Providing a web interface to the graph of these connections will enable software engineers to keep track of task dependencies, discover and maintain connections to other teams, and understand the history and rationale behind the code that they work on and use.
- Paula M. Bach, Robert DeLine, and John M. Carroll, Designers wanted: participation and the user experience in open source software development, in Proceedings of CHI 09, Association for Computing Machinery, Inc., 2009We present design concepts and related mockups that support the user experience for projects hosted on CodePlex, an open source project hosting website. Rationale for the design concepts is grounded in the open source literature and a thirteen-week study with the CodePlex team. We propose that fostering ways to build trust, providing opportunities for merit, supporting crossover of work activities, and supporting user experience (UX) best practices in CodePlex will help dismantle the social and technological barriers for UX and encourage UX designer participation. We address UX designer motivation as a challenge for participation and conclude that the mockups presented are a first step in furthering the user experience in open source software development.
One Microsoft Way
Redmond, WA 98052