Whether they know it or not, millions of software users are also programmers, writing spreadsheet formulas, creating websites or developing scientific models, for example. Errors are common and can be legendary, costing professional credibility or even billions of dollars.
University of Nebraska-Lincoln computer scientists Anita Sarma and Gregg Rothermel are part of a large collaborative research project funded by the National Science Foundation to develop tools to improve end-user programming, as it's known. Their collaborators are at Carnegie Mellon University, Oregon State University and the University of Washington.
Professional programmers use sophisticated tools with the goal of producing a software product. In contrast, end-users program to accomplish tasks, such as creating statistical tools to analyze their data or creating a company website to take online orders. While end-users far outnumber professionals, the tools to help them achieve their goals lag far behind those available to professionals, resulting in errors and inefficiency.
End-users rarely start programming from scratch. They typically refer to previous versions or explore how others accomplished similar tasks. They try to understand how those similar programs function, either by examining the code or, more often, by running it to better understand its behavior. Then they make changes, adding or deleting features, until they get the results they're after.
Today's tools for end-users are cumbersome, allowing only linear backtracking, for example, and not allowing users to explore variations in designs or configurations.
"Websites are getting pretty sophisticated," Rothermel said. "We think that by providing people with better access to ways to look at and understand their program variants, we can help them program better."
To improve the tools, Sarma and Rothermel are using information foraging theories from computer science and psychology. People use cues to find and evaluate information, whether it's the name on a file folder or judging a source's credibility. With so many programming examples available on the Internet, providing cues to a program's behavior or underlying code will help end-users narrow the search and more effectively evaluate how programs or features would function in their own programs.
"We're trying to find ways to expose more of the program's behavior to a user automatically, so that they can understand the program better and use that to build another program," Rothermel said.
UNL's researchers also are helping to develop tools that allow users to selectively undo changes rather than backtracking through work they may want to keep and have to reenter, which increases the likelihood of errors.
The ability to explore different versions and features and reducing the likelihood of introducing errors will allow for greater risk-taking and creativity, ultimately improving the experience and the outcome.
"As we go forward, almost everybody is going to be a programmer," Sarma said. "We are going to develop an infrastructure that helps people find the right point to start experimenting with the programs and configurations and this will help them get to the right solutions."
The four-year collaborative project is funded by a $3 million NSF grant, of which UNL received $857,000.