TweakIt: Supporting End-User Programmers Who Transmogrify Code

End-user programmers opportunistically copy-and-paste code snippets from colleagues or the web to accomplish their tasks. Unfortunately, these snippets often don’t work verbatim, so these people—who are non-specialists in the programming language—make guesses and tweak the code to understand and apply it successfully. To support their desired workflow and facilitate tweaking and understanding, we built a prototype tool, TweakIt, that provides users with a familiar live interaction to help them understand, introspect, and reify how different code snippets would transform their data. Through a usability study with 14 data analysts, participants found the tool to be useful to understand the function of otherwise unfamiliar code, to increase their confidence about what the code does, to identify relevant parts of code specific to their task, and to proactively explore and evaluate code. Overall, our participants were enthusiastic about incorporating TweakIt in their own day-to-day work.

[1]  Mary Beth Rosson,et al.  Paradox of the active user , 1987 .

[2]  Philip J. Guo,et al.  Opportunistic programming: how rapid ideation and prototyping occur in practice , 2008, WEUSE@ICSE.

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

[4]  Margaret M. Burnett,et al.  GenderMag: A Method for Evaluating Software's Gender Inclusiveness , 2016, Interact. Comput..

[5]  Mary Shaw,et al.  The state of the art in end-user software engineering , 2011, ACM Comput. Surv..

[6]  Bonnie A. Nardi,et al.  A Small Matter of Programming: Perspectives on End User Computing , 1993 .

[7]  Scott R. Klemmer,et al.  Example-centric programming: integrating web search into the development environment , 2010, CHI.

[8]  Björn Hartmann,et al.  HyperSource: bridging the gap between source and code-related web sites , 2011, CHI.

[9]  Margaret M. Burnett,et al.  Invited research overview: end-user programming , 2006, CHI Extended Abstracts.

[10]  Martin P. Robillard,et al.  Code fragment summarization , 2013, ESEC/FSE 2013.

[11]  Andrea Bunt,et al.  Beyond "One-Size-Fits-All": Understanding the Diversity in How Software Newcomers Discover and Make Use of Help Resources , 2019, CHI.

[12]  Brad A. Myers,et al.  The Story in the Notebook: Exploratory Data Science using a Literate Programming Tool , 2018, CHI.

[13]  Simone Stumpf,et al.  End-User Experiences of Visual and Textual Programming Environments for Arduino , 2013, IS-EUD.

[14]  Sorin Lerner,et al.  Projection Boxes: On-the-fly Reconfigurable Visualization for Live Programming , 2020, CHI.

[15]  Oscar Nierstrasz,et al.  Pharo by Example , 2010 .

[16]  Jeffrey Wong,et al.  Making mashups with marmite: towards end-user programming for the web , 2007, CHI.

[17]  Brad A. Myers,et al.  Visualization of fine-grained code change history , 2013, 2013 IEEE Symposium on Visual Languages and Human Centric Computing.

[18]  Jeffrey Heer,et al.  Proactive wrangling: mixed-initiative end-user programming of data transformation scripts , 2011, UIST.

[19]  Bonnie A. Nardi,et al.  A small matter of programming , 1993 .

[20]  Margaret M. Burnett,et al.  Foraging Among an Overabundance of Similar Variants , 2016, CHI.

[21]  Souti Chattopadhyay,et al.  What's Wrong with Computational Notebooks? Pain Points, Needs, and Design Opportunities , 2020, CHI.

[22]  Rob Miller,et al.  Addressing misconceptions about code with always-on programming visualizations , 2014, CHI.

[23]  Mary Beth Rosson,et al.  The reuse of uses in Smalltalk programming , 1996, TCHI.

[24]  Steven L. Tanimoto,et al.  VIVA: A visual language for image processing , 1990, J. Vis. Lang. Comput..

[25]  John T. Stasko,et al.  The buzz: supporting user tailorability in awareness applications , 2008, CHI.

[26]  Susanne Bødker,et al.  From implementation to design: tailoring and the emergence of systematization in CSCW , 1994, CSCW '94.

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

[28]  Michael Weber,et al.  Exploring End User Programming Needs in Home Automation , 2017, ACM Trans. Comput. Hum. Interact..

[29]  Philip J. Guo,et al.  Mismatch of Expectations: How Modern Learning Resources Fail Conversational Programmers , 2018, CHI.

[30]  Philip J. Guo,et al.  DS.js: Turn Any Webpage into an Example-Centric Live Programming Environment for Learning Data Science , 2017, UIST.

[31]  Volkmar Pipek,et al.  Supporting Collaborative Tailoring , 2006, End User Development.

[32]  Sumit Gulwani,et al.  Wrex: A Unified Programming-by-Example Interaction for Synthesizing Readable Code for Data Scientists , 2020, CHI.

[33]  James Fogarty,et al.  Assieme: finding and leveraging implicit references in a web search interface for programmers , 2007, UIST '07.

[34]  Wai-Tat Fu,et al.  Resolving the paradox of the active user: stable suboptimal performance in interactive tasks , 2004, Cogn. Sci..

[35]  Steven M. Drucker,et al.  Managing Messes in Computational Notebooks , 2019, CHI.

[36]  Brad A. Myers,et al.  Variolite: Supporting Exploratory Programming by Data Scientists , 2017, CHI.

[37]  Dominik Moritz,et al.  mage: Fluid Moves Between Code and Graphical Work in Computational Notebooks , 2020, UIST.

[38]  Jeffrey Heer,et al.  The Effects of Interactive Latency on Exploratory Visual Analysis , 2014, IEEE Transactions on Visualization and Computer Graphics.

[39]  Brad A. Myers,et al.  Exploring exploratory programming , 2017, 2017 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC).