Table of Contents
Fetching ...

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.

Leveraging Creativity as a Problem Solving Tool in Software Engineering

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.

Paper Structure

This paper contains 10 sections, 3 figures.

Figures (3)

  • Figure 1: A mind map that summarizes identified themes on creative problem solving in SE (cited from paper).
  • Figure 2: A schematic of the liquid network principle. Left: solid matter. Ideas set in stone due to the definite shape and volume. Middle: liquid matter. Allowing the creation of new connections. Right: gas matter. Too volatile to make ideas stick.
  • Figure 3: Behaviour and taxonomies of constraints (own diagrams).