Debugging Hypotheses

Debugging Hypotheses

As developers debug, they use their mental models to formulate hypotheses about the cause of a defect. Unfortunately, when their hypotheses are wrong, developers can waste time and get stuck gathering information that does not lead them any closer to the cause of the defect. We've conducted studies to understand how developers debug and the role of hypotheses in debugging and are exploring new forms of debugging tools which enable developers to find, use, and test relevant hypotheses from similar defects.

Software engineering has long studied how software developers work, building a body of work which forms the foundation of many software engineering best practices, tools, and theories. Recently, some developers have begun recording videos of themselves engaged in programming tasks contributing to open source projects, enabling them to share knowledge and socialize with other developers. We believe that these videos offer an important opportunity for both software engineering research and education. In this paper, we discuss the potential use of these videos as well as open questions for how to best enable this envisioned use. We propose creating a central repository of programming videos, enabling analyzing and annotating videos to illustrate specific behaviors of interest such as asking and answering questions, employing strategies, and software engineering theories. Such a repository would offer an important new way in which both software engineering researchers and students can understand how software developers work.

In live-streamed programming, developers broadcast their development work on open source projects using streaming media such as YouTube or Twitch. Sessions are first announced by a developer acting as the streamer, inviting other developers to join and interact as watchers using chat. To better understand the characteristics, motivations, and challenges in live-streamed programming, we analyzed 20 hours of live-streamed programming videos and surveyed 7 streamers about their experiences. The results reveal that live-streamed programming shares some of the characteristics and benefits of pair programming, but differs in the nature of the relationship between the streamer and watchers. We also found that streamers are motivated by knowledge sharing, socializing, and building an online identity, but face challenges with tool limitations and maintaining engagement with watchers. We discuss the implications of these findings, identify limitations with current tools, and propose design recommendations for new forms of tools to better supporting live-streamed programming.

Project Members

Publications

  1. "Using Hypotheses as a Debugging Aid", Abdulaziz Alaboudi, Thomas D. LaToza, 2020 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC), 2020
    DOI Pre-Print
  2. "An Exploratory Study of Live-Streamed Programming", Abdulaziz Alaboudi, Thomas D. LaToza, IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC), 2019
    DOI
  3. "Supporting Software Engineering Research and Education by Annotating Public Videos of Developers Programming", Abdulaziz Alaboudi, Thomas D. LaToza, International Workshop on Cooperative and Human Aspects of Software Engineering (CHASE), 2019
    DOI Pre-Print