One of the recurring themes that we have in the HIP group is that we may be able to use spatial memory to augment the software development experience.
- How do developers depict their code when they explain it to others?
- What are the navigation patterns developers exhibit when working with code?
- What representations of code and other artifacts best support developers' work?
We are working on a successor to Code Thumbnails in which the spatial representation is the heart of the IDE's user experience. More details can be found on Kael Rowan's blog.
While Software Terrain Maps (below) provides a compact representation of code for forming spatial memory, the representation is unintuitive and must be learned. Instead, building on the Data Mountain, Code Thumbnails intuitively represents code with a shrunk down version of the source files themselves. 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.
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.
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.
- 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 2012.
- Jagoda Walny, Sheelagh Carpendale, Nathalie Henry Riche, Gina Venolia, and Phillip Fawcett, Visual Thinking In Action: Visualizations As Used On Whiteboards, in IEEE Transactions on Visualization and Computer Graphics, vol. 17, no. 12, pp. 2508-2517, IEEE, December 2011.
- 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 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 2010.
- Gina Venolia, Five Attempts at Spatializing Code, Microsoft, 9 July 2009.
- Kael Rowan, Code Canvas, in Kael Rowan's Blog, 26 March 2009.
- Mauro Cherubini, Gina Venolia, and Rob DeLine, Building an Ecologically-valid, Large-scale Diagram to Help Developers Stay Oriented in Their Code, in VLHCC '07: Proceedings of the IEEE Symposium on Visual Languages and Human-Centric Computing, IEEE Computer Society, Washington, DC, USA, September 2007.
- Mauro Cherubini, Gina Venolia, Rob DeLine, and Andrew J. Ko, Let's go to the whiteboard: how and why software developers use drawings, in CHI '07: Proceedings of the SIGCHI conference on Human factors in computing systems, Association for Computing Machinery, Inc., New York, NY, USA, May 2007.
- Robert DeLine, Mary Czerwinski, Brian Meyers, Gina Venolia, Steven Drucker, and George Robertson, Code Thumbnails: Using Spatial Memory to Navigate Source Code, in VLHCC '06: Proceedings of the Visual Languages and Human-Centric Computing, IEEE Computer Society, Washington, DC, USA, September 2006.
- Robert DeLine, Staying Oriented with Software Terrain Maps, in Workshop on Visual Languages and Computation , 2005.