What tricks do you use to generate ideas?
When I am trying to improve a software system, I read the code, look at one module after another, run performance monitors, generate pictures of its structure. I make Powerpoint presentations of the system structure and give presentations to lots of people, and write papers and have them reviewed. I find that going between a whiteboard and the computer screen forces me to switch from the big picture to a narrow picture, and helps me to find things. -RalphJohnson
Sometimes I have some trouble with a program I've written-it doesn't work or there is some weird bug. From early in my software career, I found that by trying to explain the problem to someone else-including enough about the program so that person could understand the problem-I would usually solve the problem early in the explanation. The reason for this, I think, is that the story-telling logic of the software would only become visible during story telling, rather than through the coding. My explanations were usually not descriptive of the data structures or objects per se, but would focus on the action of the system, kind of like the plot or narrative arc.
My colleagues would help most when they would ask me why certain things happened, or why some structure or behavior were the way it was, rather than asking what. "When" was an important question as well. -rpg
This is true even of young poets who are trying to write about their "feelings" in a poem. "What do you want the poem do do?" and "Why are you writing the poem?" are useful questions to ask them as they begin revision: they begin to see the poem as a reader would see it, and immediately things they want to work on become clear. The poem evolves from an internal to an external work: it becomes an "art object" rather than personal deep experience that cannot be violated by revision. Likewise, "externalizing" the software problem by talking about it or making a Powerpoint presentation gives it a kind of distance from the programmer. --JanetHolmes
One of the most important things I do to enhance my ability to be creative is to read relatively widely, but I also happen to be shallow about it-or it feels that way. I browse incessantly on the Web and in bookstores.
In my career I've performed the following jobs:
What I sometimes tell people is that I've lived 5 lives. What this all does is that it provides a lot of somewhat unrelated material to bump into itself while I'm working on a problem or a piece. When I work on poems I use the Web to find dissociations which I use as triggers. -rpg
I draw pictures. Sometimes they are UML-ish in style. I used to love the Booch clouds, and feel that they are perhaps the biggest mistake ever made in methodology.
Soon I move to a sort of mind-map drawing, or blobs with arrows between them. Sometimes I'll devise a specialized graphical notation, e.g. http:/c2.comcgi/wiki?OakTreeDiagram .
I find that lately I do this less often. This might be because I don't write many large programs any more, or because fine-grain refactoring and TDD have changed my need to think at those levels. I miss the pictures, though. -rj
I often step away from whatever I'm doing, and do something else. Following Ungar and some comments of Beck somewhere, it's frequently best if it's not even related to what I'm doing: I take a walk or a shower. I clean up the room or juggle for a while. I find that new ideas about whatever I'm working on often (but not always) come surprisingly quickly.
I suspect this works in groups as well. My co-workers and I will sometimes step away from the computer - stuck or just tired - and go to lunch or a coffee break, only to find that we are still talking about the work, and possibly finding new ideas to consider. -BenSchroeder
Here's some ideas from the dark side.
Be a little too bold. The inevitable small embarassment will come. It allows you to use a little aikido on your ego, which will desire to look more deeply into what you'd sadly glossed over.
Wishing to no longer be yourself. Dust yourself off, and come back to "it" later as the discriminating, openminded, observing person you once were. Sometimes you grow too big in some little realm, relying too much on momentum and mistakenly taking it for speed. (Yes, I heavily butchered terms which physicists want for themselves. Pretend I talked about the difference between velocity and speed, if this rankles you.)
Travel. Meet these people who think in an alien yet understandable way.
Publicly write about things you don't know about. As long as you're a reasonable person, you've realized it's simple to sound clueless, so you spend quite a bit of time with a shotgun approach to learn a little sophistication in the subject. Most of all, it brings you to attack that thing which you hadn't quite elucidated to yourself. (People find struggles interesting, and I think that struggle somehow comes through in your words after you've hunted down what eludes you.) Here is an example of my own writing, childish as I may one day find it.
http:/alu.cliki.netlisp-user-meeting-amsterdam-april-2004