**2. Debugging and end-user programmers**

Debugging is the process of finding and fixing bugs in the code. Programmers often struggle to debug and hypothesize the "when", "why" and "how" of the bug [29–32]. Debugging is even more challenging for end-user programmers as in one study [33] they spent two-thirds of their time foraging for bugs, while professionals spent only half of their time.

Professionals and end-users use web resources to complete their programming tasks. For example, in one study, novice programmers spent about 19% of their programming time in foraging the web for information such as selecting and using tutorials, searching with synonyms, finding code snippets, and using the web to debug [34], while they spent 35% of their time navigating source code [35]. Vessey [36] investigated both professionals and end-users' debugging approach and found that professionals took a breadth-first approach whereas end-users took a depth-first approach. Our study found that in mashup environments the end user programmers struggle foraging for solutions to bugs on the web.

A major huddle for programmers during debugging is understanding the error messages to fix bugs in the code. Naveed and Sarim [37] analyzed how presentation of error messages affected debugging and programming in IDEs. To fix a bug, first programmers must understand what the error is and where it is located. Mashup environments tend to show errors without much explanation or direction for the end-user to comprehend [9]. End-users struggle to adapt code from tutorials and web forums [38] while fixing bugs. They often struggle with debugging due to lack of knowledge and experience in software engineering and interactive programming environments [39]. Our study confirms that end-user programmers struggle with the lack of or unclear error messages in IDEs.

Understanding end-user programmers' behavior while debugging can help to build better debugging tools that facilitates programming tasks effectively and efficiently. Phalgune et al. [40] studied oracle mistakes - mistakes users make about which values are right and which are wrong - that impact the effectiveness of interactions, testing, and debugging support for end-users. Kuttal et al. [41] added version support to Yahoo! Pipes and investigated how versioning can help end-user programmers to create and debug mashups. Servant et al. [42] create support that allowed panning and zooming of a canvas that contained the snapshots of the code. Myers and Ko suggested various interaction features for IDE to improve debugging such as full visibility of code and timeline visualization of changing values of variables at run-time [43]. Our study helps to understand how end-user programmers debug from a theory perspective that can inform better debugging support for mashup environments.
