Yesterday I had a craving for "kapsalon". It is a local delicacy consisting of french…
There is no single, authoritative perspective or definition of creativity. At least 60 different definitions of creativity can be found in psychological literature. However, a widespread conception of creativity is that it manifests itself in the production of things that are both original and useful. (from: Wikipedia)
The basic idea of writing software is to produce code that has not been produced before. Techniques like object-orientation, component-based design, service-oriented architecture, and refactoring are all there to help you in making each line of code unique. Ultimately, software developers think that, in a perfect world, each piece of code exists only once. And in searching for this utopia, trying to prevent any repetition of work, software developers have far more possibilities than, say, writers, painters, architects, and hairdressers. None of these other creative people have a similar array of techniques for abstraction and indirection. (In fact, they probably don't even know what that is.)
Likewise, producing useful results is another basic idea of writing software. Quite possibly, no other type of creative activity has increased global productivity levels as much as software has done. The business value of software exceeds that of almost any other creative product, by several orders of magnitude. Software developers can hardly be compared to writers, painters, architects, or even hair dressers for that matter. They often don't even think of themselves as "creative", with all the wishy-washy connotations that often come along with that term. Most software developers are not of the poem-writing, ballet-dancing kind. They just want to be practical, and make stuff that is used.
So it appears that the terms original and useful touch the very core of software development. And even though intelligence, discipline and routine all play important parts in many software projects, there is nothing to apply them to if it weren't for creativity.
Note: You don't have to agree that creative products are often useful, but that doesn't change the fact that software development is a creative activity. One that just happens to be useful.
The Creative Process
The best-known model for the creative process was created by Graham Wallas and Richard Smith, in their work Art of Thought. The five-step process, consisting of preparation, incubation, intimation, illumination and verification, is just as applicable to software development as to any other creative activity. For example, let's suppose you are responsible for improving the performance of a web site. The process might go like this:
This is creativity. People can be seen using a similar process during requirements gathering, analysis & design, construction, maintenance, management, and all the other disciplines of software engineering.
Our Creative Joy
The creative part of software projects is what motivates most software engineers. Frederick P. Brooks, in The Mythical Man-Month, listed five reasons for it:
All About People
According to scientists, complexity –that interesting state between order and chaos– is the root of all creativity, in physics, biology, psychology and beyond. Only that which is complex can be creative. And with creativity being the root of software development, and people being very effective creative systems, it is clear that software development is all about people.
Note: This post is published automatically while I'm reading a book on a beach in Cuba. I will respond to any replies and comments, but it might take a while.
Subscribe to this blog with a reader or by email!
Latest, greatest and favoritest posts:
Don't Be Bossy!
Can Refactoring Grow Out of Control?
A Tasty Team Building Exercise