Leveraging Creativity as a Problem Solving Tool in Software Engineering
Wouter Groeneveld
TL;DR
Facing escalating SE complexity, the paper argues creativity is a practical, teachable problem-solving tool. It ports cognitive psychology insights to software engineering to identify seven interrelated domains—technical knowledge, collaboration, constraints, critical thinking, curiosity, creative state of mind, and creative techniques—and offers concrete pointers to leverage them in daily practice. The contributions include a structured framework and tooling guidance to help developers generate novel, high-quality solutions, supported by interviews and literature. The work aims to raise practitioners' creative capabilities, with potential impact on tackling complex systems and reducing creative bottlenecks.
Abstract
Today's software engineering (SE) complexities require a more diverse tool set going beyond technical expertise to be able to successfully tackle all challenges. Previous studies have indicated that creativity is a prime indicator for overcoming these hurdles. In this paper, we port results from creativity research in the field of cognitive psychology to the field of SE. After all, programming is a highly creative endeavour. We explore how to leverage creativity as a practical problem solving tool to wield for software developers. The seven distinct but intertwined creative problem solving themes unfolded in this paper are accompanied with practical perspectives, specifically geared for software professionals. Just like technical skills such as knowledge of programming languages, we believe that creativity can be learned and improved with practice.
