Over the last few days, I've struggled mightily to concentrate on getting my work done. This is mainly because we have a system that needs a lot of babysitting and this means that every single minute there is an email or Slack message vying for my precious attention. I find that at the end of the day I have accomplished very little. This has made me curious: what does it take to be creative?
As a software developer, I feel sad that software development is not regarded as a creative pursuit. It really bothers me. I got the following results when I searched Google for "creativity in software engineering": Finding Creativity in Software Engineering (which implies software engineering lacks creativity) and https://brainbaking.com/post/2021/01/what-is-creativity-in-software-engineering/ and then there is this one from quora (I know, I have picked the ones that agree with my thesis!). I feel that it takes incredible ingenuity to come up with a design that solves a problem in an enduring manner. It might be the fact that writing code has such a predominant technical bent that it is easy to discount the role that creativity plays in writing software. It is easy to see why such an argument is wrong: if two software developers are asked to solve a particular problem they are very unlikely to arrive at the same solution. In fact, the quality of what they produce is likely to differ markedly. I'm not simply referring to the variable, class and module names they choose - that's trivial; I'm talking about the framework upon which they choose to express the problem - and the framework makes all the difference. I would aver that a creative solution is one which unearths suprisingly apt representations of the problem space which are highly tolerant to domain user behaviour. In other words, I believe that a creative solution does not conflict with a domain user's naive application of the solution.
We tend to think of creativity in terms of artistic expression. This is parochial and unhelpful. Creativity has to do with creation and it is unfortunate that creativity is most salient when we perceive novelty and unfamiliarity as markers of creativity. Creating solutions where none currently exist is precisely what is involved in writing software. I'm not sure that this is something that can be automated. While it is possible to get AI to write code I'm not sure we will ever see the day when it will be able to spit out designs that only a master architect can conjure. Designing frameworks requires understanding that extends beyond the visible components. But I digress...
Back to creating: what does it take to create?
The most salient feature I would propose that is a prerequisite for creativity is a lack of distraction. This has been highlighted to me by how little I have been able to accomplish. Being 'on call' implies that your attention is not your own. Performing constant task switching means that in no time you become exhausted away from the ideal creative state: an empty mind with nothing but the problem at hand.
In other words, creativity is an exclusive mental task - your mind cannot share space with anything else when in a creative mode. This might explain why pressure (for the most part) undermines the creative enterprise. Daniel Pink has a popular TED Talk title "On the surprising science of motivation" in which he skillfully argues that pressure or extrinsic motivation interferes with creativity. Creativity works best when there are no visible, physical or temporal distractions. Long deadlines are great because we have a non-linear perception of time and are poor at perceiving the pressure of the deadline therefore enabling creativity to flourish. Working in a distraction-free environment (no flashing lights, white noise, phone turned off etc.) also greatly aids in releasing creative juices.
It also means that it is virtually impossible to be creative when involved in multiple projects. Exclusivity implies that you should only tackle one project at a time. Of course this implies that you must complete one project before moving on the next otherwise you will constantly be barraged by requests to 'fix this or that' which will detract from present creative goal.
I'm sure there is more that is needed but my present experience has reinforced the practice of defending my time in order to create. If this is essential to write great software then it goes without saying that creativity is essential for writing software.