The term “creativity” is not strictly defined. In general, it is a capability to produce something innovative, original and worthwhile. It involves the following processes:
- becoming sensitive to gaps in knowledge, deficiencies, missing elements, disharmonies, problems, and so on;
- identifying the difficulty;
- searching for solutions, making guesses, or formulating hypotheses about the deficiencies: testing and retesting these hypotheses and possibly modifying and retesting them;
- getting to a solution that was not available before; that usually involves an insight at some point;
- and finally communicating the results.
There is no widely accepted theory of the creativity except for the phenomenological descriptions so far.
2. The software development in its essence is a creative work. It is closely related to such areas as real-world language translation, knowledge and meanings mapping, art and engineering. Therefore, software development could not be completely reduced to formal processes, rules and patterns. Each non-trivial software development project (taking approx. 0.5–1 man/years and more) involves sentient understanding of the problem area and producing innovative solutions that are more than simple parts assembling.
3. While creativity is a necessary part of software projects, it could emerge on different levels of the development process:
- the software customers and stakeholders could think over all the fine details of the product, resolve all conceptual difficulties and provide deeply elaborated software requirements that cover all problems;
- the dedicated team members (software architects, designers, project managers, and team leads) execute their duties on clarifying the (vague and incomplete) customers’ requests, interpreting and translating them to the final development specifications and guidelines;
- the developers and testers are qualified to detect the problems, gaps and inconsistencies, invent new solutions and communicate the concerns and results to the rest of the team.
The lower goes the creativity level, the more intelligent and flexible the whole team becomes. The burden of deep thinking, foresight and insights, as well as accompanying responsibility, is taken from the customers and leveraged on the team management. Problems are detected just in time they become actual, original solutions and innovative features are proposed in cases that could not be thought beforehand. The software development process becomes faster, the product quality better.
4. Targeting for a creative team is not a silver bullet, though, and without respective management could cause more issues that resolve. The downsides of a high low-level creativity are:
- risks of going deep into interesting problems while neglecting boring or intimidating tasks (that are still required to meet the project requirements);
- shifting the focus of developers’ creativity into technical plane, where they are the experts, from the usability (while usability is the only value for the end users);
- too intelligent and flexible teams spoil the customers, encouraging a try-and-miss requirements change approach, when a lot of team resources are wasted on feature requests that are subsequently rejected or changed significantly (that leads to the team demotivation).