Computer Science Professor Austin Henley’s goal is to develop personalized ways make it easier for software engineers to do their jobs. He has now received an NSF grant to work on the future of software development tools that are adaptive to the engineer’s cognitive needs.
Henley’s project aims to better support the cognitive needs of professional software engineers. No two engineers solve problems in the exact same way, yet the tooling that supports problem-solving, including code editors and debuggers, does not consider these individual differences. As such, Henley and his students are investigating how these tools used by software engineers can adapt to an individual’s problem-solving style and better support their information needs for a specific task. Such a tool could predict that the engineer needs more information about their application crashing, so it generates a custom visualization based on data collected during the most recent crash and presents it with minimal effort.
Towards solving this arduous problem, Henley and his students are applying an iterative and human-centric approach where we will repeatedly study actual software engineers in a laboratory setting as well as in the field to collect qualitative and quantitative data while they work. The project is composed of four major steps: (1) conduct empirical studies to understand engineers’ information needs and problem-solving styles, (2) build predictive models of engineers’ behavior based on their problem-solving styles, (3) create tools that adapt to support engineers’ cognitive styles, and (4) evaluate the effectiveness of the predictive models and the adaptive tools.
“We are working on pieces from all 4 major steps, but I think this one is the most interesting,” Henley said. “Currently, we are exploring initial designs for integrating these adaptive features into commercial tools that engineers already use. This involves applying methodologies from cognitive psychology and human-computer interaction to understand the effect of providing more information to engineers as they work on complex tasks. Since the software engineering process is already mentally taxing, we need sufficient evidence that our tool designs will not have unintended consequences, such as overloading an engineer’s working memory. In a formative study, we found that providing recommendations in a particular domain actually caused engineers to take more time to complete debugging tasks, which motivated us to refine our tool design further. One specific task our tools will provide recommendations for is merge conflicts, which occur when multiple engineers are make contradicting changes to the same code module. It is tedious and error prone to resolve these conflicts manually, so there is ample opportunity for tools to assist engineers.”
This work will generate a deep understanding of the impact of problem-solving on how software engineers learn and make sense of the development history to place their work in the context of past and ongoing changes. Henley hopes that this work will better support a more diverse population of people to be more productive while engaged in software engineering tasks.