Can Design Thinking Improve Programming? – Empirically Evaluating Design Methods for Program Design Tasks

PI: Prof. Robert Hirschfeld


What would it mean for a programmer to work like a designer? While many problems addressed by programmers have characteristics similar to design problems, programmers typically do not use methods developed to address these problems. Divergent and convergent thinking, externalizing thoughts, supporting thinking by doing, working on parallel lines of thought—we claim that such design methods can significantly improve program design outcomes, which are increasingly important for software development and evolution. Unfortunately, there is little meaningful data to confirm our claim. More specifically, it remains unclear how such methods can be adopted, what needs to be adapted, and what the effects will be.
Our overall goal is to gather empirical support for our claim that design thinking can improve programming. We will show that the application of design methods to program design tasks has a significant effect on their outcome.
We expect our findings will have an impact on both education and tool support for program design tasks. Just as office space can affect design performance, we expect development tools to have a significant influence on program design activities and their outcomes. This could justify major investments in reconsidering and redesigning development tools with respect to and with a focus on program design activities. We also expect education in design thinking to affect performance during program design tasks. This will encourage exercising programmers’ design skills during their professional education.