I am convinced that software development is essentially a creative process. I also believe that this is the case for all levels, from architecture to coding.
What makes me think so? To put it very briefly, because a software developer is supposed to create something new, not just copy existing stuff. It is more than just grabbing into your toolbox and getting out the right tool for a job, although it definitely helps to have a good toolbox.
On the other hand, when we view software development from the project management side, it is desirable to split a development project into small tasks and assign to each task a certain time in which it is expected to be completed. (I know that there is the concept of story points, but I don't think it makes such a big difference in practice. At the end of the day, a developer is expected to deliver after a certain amount of time.)
From a project management perspective it is clear that these tasks should be small. Depending on whom you ask, an ideal task should be something between 30 minutes and a day.
Now here's my problem: I find it hard to be creative when facing a time limit for a job, even if it is a soft limit based on estimates or story points. The shorter the time limit, the worse it gets. Often I feel that I am much more productive (because I have the freedom to be creative) when I just do what I think needs to be done without thinking too much about the planned times for each task. Some tasks might take much longer than expected but the quality will be higher and on the whole, the project will probably be finished earlier.
Is this just my personal perception or is it a general problem. If the latter, what can be done about it?
After reading the first comments and answers, I remembered (once again) that the term creativity does not have the best reputation in engineering. By being creative I do not mean doing uneccessary stuff that provides no business value. What I mean is solving problems in new or non-standard ways.