Introduction

For more than thirty years, it has been claimed that a way to improve software developers’ productivity and software quality is to focus on people (Boehm & Papaccio, 1988). Some strategies to achieve low-cost but high-quality software involve assigning developers private offices, creating a working environment to support creativity, and providing incentives (Boehm & Papaccio, 1988), in short, making software developers satisfied and happy. Several Silicon Valley companies and software startups seem to follow this advice by providing incentives and perks to make their developers happy (Drell, 2011; Google Inc., 2014; Stangel, 2013) and, allegedly, more productive (Marino & Zabojnik, 2008).

Human factors (called human aspects in software engineering) play an important role in the execution of software processes and the resulting products (Colomo-Palacios et al., 2010; Feldt et al., 2010; Sommerville & Rodden, 1996). This perception of the importance of human aspects in software development, e.g., “Individuals and interactions over processes and tools”, led to the publication of the Agile manifesto (Beck et al., 2001). As noted by Cockburn & Highsmith (2001), “If the people on the project are good enough, they can use almost any process and accomplish their assignment. If they are not good enough, no process will repair their inadequacy—‘people trump process’ is one way to say this.” (p. 131). This claim has received significant attention; however, little evidence has been offered to verify this claim in empirical software engineering research.

The software engineering field faces an additional challenge compared with more traditional engineering fields; software development is substantially more complex than industrial processes. The environment of software development is all but simple and predictable (Dybå, 2000). Much change occurs while software is being developed, and agility is required to adapt and respond to such changes (Williams & Cockburn, 2003). Software development activities are perceived as creative and autonomous (Knobelsdorf & Romeike, 2008). Environmental turbulence requires creativity to make sense of the changing environment, especially in small software organizations (Dybå, 2000). The ability to creatively develop software solutions has been labelled as critical for software firms (Ciborra, 1996; Dybå, 2000) but has been neglected in research.

The software construction process is mainly intellectual (Darcy & Ma, 2005; Glass, Vessey & Conger, 1992). Recently, the discipline of software engineering has begun to adopt a multidisciplinary view and has embraced theories from more established disciplines, such as psychology, organizational research, and human–computer interaction. For example, Feldt et al. (2008) proposed that the human factors of software engineering could be studied empirically by “collecting psychometrics”.1 Although this proposal has begun to gain traction, limited research has been conducted on the role of emotion and mood on software developers’ skills and productivity.

As human beings, we encounter the world through affects; affects enable what matters in our experiences by “indelibly coloring our being in the situation” (Ciborra, 2002, p. 161). Diener et al. (1999) and Lyubomirsky, King & Diener (2005) reported that numerous studies have shown that the happiness of an individual is related to achievement in various life domains, including work achievements. Indeed, emotions play a role in daily jobs; emotions pervade organizations, relationships between workers, deadlines, work motivation, sense-making and human-resource processes (Barsade & Gibson, 2007). Although emotions have been historically neglected in studies of industrial and organizational psychology (Muchinsky, 2000), an interest in the role of affect on job outcomes has increased over the past decade (Fisher & Ashkanasy, 2000). The relationship between affect on the job and work-related achievements, including performance (Barsade & Gibson, 2007; Miner & Glomb, 2010; Shockley et al., 2012) and problem-solving processes, such as creativity, (Amabile et al., 2005; Amabile, 1996) has been of interest for recent research.

Despite the fact that the ability to sense the moods and emotions of software developers may be essential for the success of an Information Technology firm (Denning, 2012), software engineering research lacks an understanding of the role of emotions in the software development process (Khan, Brinkman & Hierons, 2010; Shaw, 2004). In software engineering research, the affective states of software developers have been investigated rarely in spite of the fact that affective states have been a subject of other Computer Science disciplines, such as human–computer interaction and computational intelligence (Lewis, Dontcheva & Gerber, 2011; Tsonos, Ikospentaki & Kouroupetrolgou, 2008). Thus, we believe that studying the affective states of software developers may provide new insights about ways to improve overall productivity.

Many of the tasks that software developers engage in require problem solving. For example, software developers need to plan strategies to find a possible solution to a given problem or to generate multiple creative and innovative ideas. Therefore, among the many skills required for software development, developers need to possess high analytical problem-solving skills and creativity. Both of these are cognitive processing abilities. Indeed, software development activities are typically not physical. Software development is complex and intellectual (Darcy & Ma, 2005; Glass, Vessey & Conger, 1992), and it is accomplished through cognitive processing abilities (Fischer, 1987; Khan, Brinkman & Hierons, 2010). Some cognitive processes have been shown to be deeply linked to the affective states of individuals (Ilies & Judge, 2002). Furthermore, to the best of our knowledge, the relationship between affective states and the creativity and analytical problem-solving skills of software developers in general has never been investigated.

This article offers several contributions: (1) it provides a better understanding of the impact of affective states on the creativity and analytical problem-solving capacities of developers; (2) it introduces and validates psychological measurements, theories, and concepts of affective states, creativity and analytical problem-solving skills in empirical software engineering; and (3) it raises the need to study human factors in software engineering by employing a multidisciplinary viewpoint.

Next, we will review some of the background research on how affective states impact creative problem solving.2 Following the background section, we will report a new experiment that establishes the relationship between affect and productivity in software developers.