From a recent interview by Rudy Rucker:
Some textbooks make it sound as if software engineering is a formal process of making out lists of specifications, milestones, and the like, the process is also an experiential hands-on endeavor. You don’t ride a bicycle by making out lists of part numbers. You have to get on it and lurch around.
There are any number of ways to be creative in CS. In terms of theory, you might come up with a new higher-level way of thinking about computations. In terms of practice, deciding what kinds of programs to create can be creative. Much creativity (and low cunning) comes into play in finding ways to make one’s programs run faster. And designing a program’s interface is an artful process as well.
Just as is the case for writers and painters, programmers will often find that their projects are mutating while they work on them. Certain pathways close up, and newer opportunities emerge. At some point it can feel as everything you see all day long is in some way part of the creative process—as if everything is helping you to get the project done. This is known as communing with the Muse. And, make no mistake, there is a Muse of programming as well as there are Muses of writing and painting.
I'm currently reading Jim and the Flims and, as usual, find myself caught up in the bizarre logic of Rudy's imagination. Highly recommended.