Making End User Development More Natural

When end users approach a development task, they bring with them a set of techniques, expressions, and knowledge, which can be leveraged in order to make the process easier. The Natural Programming Project has been working for over twenty years to better understand how end users think about their tasks, and to develop new ways for users to express those tasks that will be more “natural,” by which we mean closer to the way they think. Our chapter in the previous book covered the first 10 years of this research; and here we summarize the most recent 10 years. This includes studies on barriers that impede EUD, and a new tool that helps with the understanding and debugging barriers by showing developers why their program has its current behavior. We also describe a tool that we created to help EUDs input, process, and transform data in the context of spreadsheets and web pages. Interaction designers are a class of EUDs that may need to program interactive behaviors, so we studied how they naturally express those behaviors, and then built a spreadsheet-like tool to allow them to author new behaviors. Another spreadsheet tool we created helps EUDs access web service data without writing code, and extends the familiar spreadsheet to support analyzing the acquired web-based hierarchical data and programming data-driven GUI applications. Finally, EUDs often need to engage in exploratory programming, where the goals and tasks are not well-formed in advance. We describe new tools to help users selectively undo past actions, along with on-going research to help EUDs create more efficient behaviors on smartphones and facilitate variations when performing data analysis.

[1]  Brad A. Myers,et al.  Extracting and answering why and why not questions about Java program output , 2010, TSEM.

[2]  Amos Azaria,et al.  SUGILITE: Creating Multimodal Smartphone Automation by Demonstration , 2017, CHI.

[3]  Mary Shaw,et al.  Topes , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[4]  Margaret M. Burnett,et al.  Programming, Problem Solving, and Self-Awareness: Effects of Explicit Guidance , 2016, CHI.

[5]  Brad A. Myers Scripting graphical applications by demonstration , 1998, CHI.

[6]  Kori Inkpen Quinn,et al.  What designers want: Needs of interactive application designers , 2009, 2009 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC).

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

[8]  Brad A. Myers,et al.  Finding causes of program output with the Java Whyline , 2009, CHI.

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

[10]  Brad A. Myers,et al.  Supporting Selective Undo in a Code Editor , 2015, 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering.

[11]  Jeffrey Nichols,et al.  End-user programming of mashups with vegemite , 2009, IUI.

[12]  Colin Potts,et al.  Design of Everyday Things , 1988 .

[13]  Shriram Krishnamurthi,et al.  Flapjax: a programming language for Ajax applications , 2009, OOPSLA 2009.

[14]  Brad A. Myers,et al.  How designers design and program interactive behaviors , 2008, 2008 IEEE Symposium on Visual Languages and Human-Centric Computing.

[15]  Thomas D. LaToza,et al.  Programmers Are Users Too: Human-Centered Methods for Improving Programming Tools , 2016, Computer.

[16]  Mary Beth Rosson,et al.  Mashups: who? what? why? , 2008, CHI Extended Abstracts.

[17]  A MyersBrad,et al.  Extracting and answering why and why not questions about Java program output , 2010 .

[18]  Marian Petre,et al.  Usability Analysis of Visual Programming Environments: A 'Cognitive Dimensions' Framework , 1996, J. Vis. Lang. Comput..

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

[20]  Kayur Patel,et al.  Lowering the barrier to applying machine learning , 2010, UIST '10.

[21]  John Zimmerman,et al.  How to support designers in getting hold of the immaterial material of software , 2010, CHI.

[22]  Rachel K. E. Bellamy,et al.  Trials and tribulations of developers of intelligent systems: A field study , 2016, 2016 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC).

[23]  Brad A. Myers,et al.  Using and Exploring Hierarchical Data in Spreadsheets , 2016, CHI.

[24]  Alexander I. Rudnicky,et al.  Learning User Intentions Spanning Multiple Domains , 2016 .

[25]  Brad A. Myers,et al.  An exploratory study of backtracking strategies used by developers , 2012, 2012 5th International Workshop on Co-operative and Human Aspects of Software Engineering (CHASE).

[26]  Thomas Berlage,et al.  A selective undo mechanism for graphical user interfaces based on command objects , 1994, TCHI.

[27]  Brad A. Myers,et al.  A spreadsheet model for using web service data , 2014, 2014 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC).

[28]  Brad A. Myers,et al.  More Natural Programming Languages and Environments , 2006, End User Development.

[29]  Brad A. Myers,et al.  Creating interactive web data applications with spreadsheets , 2014, UIST.

[30]  David Wolber,et al.  Programming by example: intelligence in demonstrational interfaces , 2000, CACM.

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

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

[33]  Scott D. Fleming,et al.  Yestercode: Improving code-change support in visual dataflow programming environments , 2016, 2016 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC).

[34]  Gregg Rothermel,et al.  History repeats itself more easily when you log it: Versioning for mashups , 2011, 2011 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC).

[35]  Brad A. Myers,et al.  Past, Present and Future of User Interface Software Tools , 2000, TCHI.

[36]  Brad A. Myers,et al.  Designers’ natural descriptions of interactive behaviors , 2008, 2008 IEEE Symposium on Visual Languages and Human-Centric Computing.

[37]  Brad A. Myers,et al.  An Exploratory Study of How Developers Seek, Relate, and Collect Relevant Information during Software Maintenance Tasks , 2006, IEEE Transactions on Software Engineering.

[38]  Brad A. Myers Separating application code from toolkits: eliminating the spaghetti of call-backs , 1991, UIST '91.

[39]  Brad A. Myers,et al.  InterState: a language and environment for expressing interface behavior , 2014, UIST.

[40]  Brad A. Myers,et al.  A longitudinal study of programmers' backtracking , 2014, 2014 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC).

[41]  Brad A. Myers,et al.  A framework and methodology for studying the causes of software errors in programming systems , 2005, J. Vis. Lang. Comput..

[42]  Maya Cakmak,et al.  Power to the People: The Role of Humans in Interactive Machine Learning , 2014, AI Mag..

[43]  Henry Lieberman,et al.  Watch what I do: programming by demonstration , 1993 .

[44]  Brad A. Myers,et al.  ConstraintJS: programming interactive behaviors for the web by integrating constraints and states , 2012, UIST '12.

[45]  Huahai Yang,et al.  I can do text analytics!: designing development tools for novice developers , 2013, CHI.