Intelligent Programming Assistants


Programming is a challenging, time-consuming task that requires people recall broad sets of information. While modern development heavily relies on web resources for assistance, it leaves the end user to search for information sources, recognize an answer, and integrate it. This series of research explores different ways to augment the efficiency of programmers by leveraging both manchine and human intelligence.


On-Demand Expert Support for Software Developers


We conducted two studies [1, 2] that seek to inform the design of future systems that use remote experts to support developers on demand. The first explores what types of questions developers would ask a hypothetical assistant capable of answering any question they pose. The second study explores the interactions between developers and remote “experts” in supporting roles. Our results suggest eight key system features needed for on-demand remote developer assistants to be effective, which has implications for future human-powered development tools.

[1]  Yan Chen, Steve Oney and Walter Lasecki. Towards Providing On-Demand Expert Support for Software Developers. In Proceedings of the International ACM Conference on Human Factors in Computing Systems (CHI 2016). San Jose, CA.

[2] Yan Chen, Steve Oney and Walter Lasecki. Automatically Capturing Context to Create Microtasks for Software Development. Workshop at the International ACM Conference on Human Factors in Computing Systems (CHI 2016). San Jose, CA.



Codeon


Figure 1
We developed Codeon [1, 2], an intelligent programming support tool that enables more effective task hand-off between end-user developers and remote helpers by allowing asynchronous responses to on-demand requests. With Codeon, developers can request help by speaking their requests aloud within the context of their IDE. Codeon automatically captures the relevant code context and allows remote helpers to respond with high-level descriptions, code annotations, code snippets, and natural language explanations. Developers can then immediately view and integrate these responses into their code. Codeon consists of two modules: an Atom plugin and a web application. The plugin allows developers to make requests and integrate responses all in their IDEs. Helpers can use the web application to review and respond to the requests. Here we demonstrate all the interactions that Codeon enables.

[1] Yan Chen, Sang Won Lee, Yin Xie, YiWei Yang, Walter Lasecki, and Steve Oney. Codeon: On-Demand Software Development Assistance. In Proceedings of the International ACM Conference on Human Factors in Computing Systems (CHI 2017). Denver, CO.

[2] Yan Chen, Steve Oney, Walter S. Lasecki. Expert Crowd Support Systems for Software Developers. In Proceedings of Collective Intelligence 2016 (CI 2016). New York, U.S. (Oral presentation)



BashOn


Figure 1

We examined a hybrid workflow to augment an existing programming synthesis system using human intelligence. BashOn is an instantiate of this workflow where we integrate crowd input into this AI system where it automatically translates natural language to bash command. Our goal is to design a new workflow with interleaving effort of both crowd and machine intelligence to outperform either solo effort can do for the programming synthesis task. Currently, we are running a series studies to evaluate how much each component has impact on the performance overall.