Addressing misconceptions about code with always-on programming visualizations

We present Theseus, an IDE extension that visualizes run-time behavior within a JavaScript code editor. By displaying real-time information about how code actually behaves during execution, Theseus proactively addresses misconceptions by drawing attention to similarities and differences between the programmer's idea of what code does and what it actually does. To understand how programmers would respond to this kind of an always-on visualization, we ran a lab study with graduate students, and interviewed 9 professional programmers who were asked to use Theseus in their day-to-day work. We found that users quickly adopted strategies that are unique to always-on, real-time visualizations, and used the additional information to guide their navigation through their code.

[1]  Sean McDirmid,et al.  Usable live programming , 2013, Onward!.

[2]  Brad A. Myers,et al.  Designing the whyline: a debugging interface for asking questions about program behavior , 2004, CHI.

[3]  John G. Hosking,et al.  Visual code annotations for cyberphysical programming , 2013, 2013 1st International Workshop on Live Programming (LIVE).

[4]  Lydia B. Chilton,et al.  Frenzy: collaborative data organization for creating conference sessions , 2014, CHI.

[5]  Thomas D. LaToza,et al.  Developers ask reachability questions , 2010, 2010 ACM/IEEE 32nd International Conference on Software Engineering.

[6]  Xiang Cao,et al.  DejaVu: integrated support for developing interactive camera-based programs , 2012, UIST.

[7]  Steven L. Tanimoto Towards a theory of progressive operators for live visual programming environments , 1990, Proceedings of the 1990 IEEE Workshop on Visual Languages.

[8]  Henry Lieberman,et al.  Bridging the gulf between code and behavior in programming , 1995, CHI '95.

[9]  Gail C. Murphy,et al.  Questions programmers ask during software evolution tasks , 2006, SIGSOFT '06/FSE-14.

[10]  Brad A. Myers,et al.  Six Learning Barriers in End-User Programming Systems , 2004, 2004 IEEE Symposium on Visual Languages - Human Centric Computing.

[11]  Michael D. Ernst,et al.  Interactive record/replay for web application debugging , 2013, UIST.

[12]  Rachel K. E. Bellamy,et al.  An Information Foraging Theory Perspective on Tools for Debugging, Refactoring, and Reuse Tasks , 2013, TSEM.

[13]  John A. Gould,et al.  Some Psychological Evidence on How People Debug Computer Programs , 1975, Int. J. Man Mach. Stud..

[14]  Eric Schrock Debugging AJAX in production , 2009, CACM.

[15]  Michael D. Ernst,et al.  Reducing wasted development time via continuous testing , 2003, 14th International Symposium on Software Reliability Engineering, 2003. ISSRE 2003..

[16]  Anind K. Dey,et al.  Heuristic evaluation of ambient displays , 2003, CHI '03.

[17]  Eric Rosenbaum,et al.  Scratch: programming for all , 2009, Commun. ACM.

[18]  Thomas D. LaToza,et al.  Visualizing call graphs , 2011, 2011 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC).

[19]  James R. Russell,et al.  Experiences with building distributed debuggers , 1996, SPDT '96.