We are DevX!
We study how humans interact with code and design new ways to build software.
News
Our paper on Crowdsourced Behavior-Driven Development will appear in Journal of Systems and Software (JSS).
Our paper Can Microtask Programming Work in Industry? will appear at ESEC/FSE Industry Papers 2020.
Our paper RulePad: Interactive Authoring of Checkable Design Rules will appear at ESEC/FSE 2020.
Research Highlights
Good documentation has long been argued to be the key to helping developers work more quickly and consistently with design decisions. But our studies have found that documentation is left largely disconnected from code, making it hard to write and update and causing it to become out of date and untrusted. This leaves developers to instead reverse engineer design decisions...
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...
When working in large and complex codebases, developers face challenges using Find Usages to understand how to reuse classes and methods. To better understand these challenges, we conducted a small exploratory study with 4 participants. We found that developers often wasted time reading long lists of similar usages or prematurely focused on a single usage. Based on these findings, we...
Onboarding on a new project is often a long, hard process, dissuading casual contributors from ever starting. What if you could contribute code to a new software project in a few minutes? How would enabling many transient contributors change software development? We've been exploring these questions through building web-based programming environments which enable microtask programming and conducting studies to understand...
Developers solve problems by applying programming strategies, describing sequences of steps to debug, reuse, design, test, and understand code. Experienced developers work better by using more effective strategies. We've been exploring ways to capture and make explicit the strategies developers use, helping uncover how developers work differently and to create new ways to help developers benefit from the hard-earned wisdom...
Good documentation offers the promise of enabling developers to easily understand design decisions. Unfortunately, in practice, design documents are often rarely updated, becoming inaccurate, incomplete, and untrustworthy. A better solution is to enable developers to write down design rules which may be checked against code for consistency. But existing rule checkers require learning specialized query languages or program analysis frameworks,...