Information Foraging Theory for Software Engineering
- We have been working to harness a theory from the area of human-computer interaction called Information Foraging Theory to bring such scientific principles to the researchers and tool builders who create software tools. IFT has a solid history of predicting navigation through information on the web by end users. Further, earlier research has shown that models based on IFT can describe the navigation behavior of developers through code. However, IFT needs to be expanded to account for the on-the-spot learning that developers do as they navigate. Further, no work has yet leveraged the theory for software engineering practice. The overall goal of our work is to harness IFT to bring scientific principles to researchers and other tool builders who create software development tools.
- David Piorkowski, Scott D. Fleming, Christopher Scaffidi, Christopher Bogart, Margaret Burnett, Bonnie E. John, Rachel K. E. Bellamy, and Calvin Swart. Reactive information foraging: An empirical investigation of theory-based recommender systems for programmers. CHI ’12: ACM SIGCHI Conference on Human Factors in Computing Systems, Austin, TX, May 2012. DOI: 10.1145/2207676.2208608
- David Piorkowski, Scott D. Fleming, Irwin Kwan, Margaret Burnett, Chris Scaffidi, Rachel K.E. Bellamy, and Joshua Jordhal. The whats and hows of programmers’ foraging diets. CHI ’13: ACM SIGCHI Conference on Human Factors in Computing Systems, Paris, France, May 2013. DOI: 10.1145/2466416.2466418
- Joseph Lawrance, Christopher Bogart, Margaret Burnett, Rachel Bellamy, Kyle Rector, and Scott D. Fleming. How programmers debug, revisited: An information foraging theory perspective. IEEE Transactions on Software Engineering. 39(2):197–215, Feb. 2013. DOI: 10.1109/TSE.2010.111
- Scott D. Fleming, Christopher Scaffidi, David Piorkowski, Margaret Burnett, Rachel K. E. Bellamy, Joseph Lawrance, and Irwin Kwan. An information foraging theory perspective on tools for debugging, refactoring, and reuse tasks. ACM Transactions on Software Engineering and Methodology. 22(2):14:1–14:41, Mar. 2013. DOI: 10.1145/2430545.2430551
- David Piorkowski, Scott D. Fleming, Christopher Scaffidi, Liza John, Christopher Bogart, Bonnie E. John, Margaret Burnett, and Rachel Bellamy. Modeling programmer navigation: A head-to-head empirical evaluation of predictive models. VL/HCC ’11: IEEE Symposium on Visual Languages and Human-Centric Computing, Pittsburgh, PA, Sep. 2011. DOI: 10.1109/VLHCC.2011.6070387
- Support: This material is based upon work supported by the National Science Foundation (NSF) under Grant No.1302117. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of the NSF.
[Return to top]
Investigating Practices and Tools for Pair Programming
- Pair programming has demonstrated considerable promise as a technique for enhancing both software engineering education and practice. In pair programming, two programmers work together on a single computer and collaboratively perform programming tasks. Studies have found that pair programming can improve software quality, that pairs complete tasks faster, and that pairing leads to increased programming self-efficacy. Despite this positive evidence, pair programming remains among the most controversial of development practices. For example, many practitioners have expressed doubts about whether the practice is in fact more efficient than programming individually, and some studies have contradicted the findings of benefit. This controversy no doubt arises because pair programming is a rich, complex human activity with many potential moderating factors, which are not well understood. To help fill this gap, this project seeks to gain a detailed empirically based understanding of pair programming and to explore new methods and tools for applying the practice.
- Danielle Jones and Scott Fleming. What use is a backseat driver? A qualitative investigation of pair programming. VL/HCC ’13: IEEE Symposium on Visual Languages and Human-Centric Computing, San Jose, CA, Sep. 2013. DOI: 10.1109/VLHCC.2013.6645252
[Return to top]
Designing Programming Environments for End Users
- There are numerous programming environments for end-user programmers in both research and practice, with spreadsheets and database systems being arguably the most widespread examples. End-user programming has become so widespread that, according to the U.S. Bureau of Labor and Statistics, by 2012 the number of people using spreadsheets and databases at work will reach 55 million – an order of magnitude greater than the number of professional programmers. However, for many end users, programming remains a challenging task that requires overcoming numerous barriers, such as decomposing design problems, using primitives such as loops, and selecting and combining modules. This project seeks to improve our understanding of the needs of end-user programmers and to inform the design of better end-user programming environments.
- Jill Cao, Scott D. Fleming, and Margaret Burnett. An exploration of design opportunities for “gardening” end-user programmers’ ideas. VL/HCC ’11: IEEE Symposium on Visual Languages and Human-Centric Computing, Pittsburgh, PA, Sep. 2011. DOI: 10.1109/VLHCC.2011.6070375
- Jill Cao, Irwin Kwan, Rachel White, Scott D. Fleming, Margaret Burnett, and Christopher Scaffidi. From barriers to learning in the idea garden: An empirical study. VL/HCC ’12: IEEE Symposium on Visual Languages and Human-Centric Computing, Innsbruck, Austria, Sep. 2012. DOI: 10.1109/VLHCC.2012.6344483
- Jill Cao, Irwin Kwan, Faezeh Bahmani, Margaret Burnett, Josh Jordahl, Amber Horvath, Scott Fleming, and Sherry Yang. End-user programmers in trouble: Can the Idea Garden help them to help themselves? VL/HCC ’13: IEEE Symposium on Visual Languages and Human-Centric Computing, San Jose, CA, Sep. 2013. DOI: 10.1109/VLHCC.2013.6645260
[Return to top]