Here’s John on creative thinking:
Creativity is like humor. In a joke, the laugh comes at a moment when you connect two different frameworks of reference in a new way. Example: there’s the old story about a woman doing a survey into sexual attitudes who stops an airline pilot and asks him, amongst other things, when he last had sexual intercourse. He replies, “Nineteen fifty eight.” Now, knowing airline pilots, the researcher is surprised and queries this. “Well,” says the pilot, “It’s only twenty-one ten now.”
[There is in this joke a] moment of contact between two frameworks of references — the way we express what year it is  and the twenty-four hour clock [21:10]. Having a new idea is exactly the same thing: it’s connecting two hitherto separate ideas in a way that generates new meaning.
He goes on to note that connecting new ideas isn’t the trick. You can connect “cheese” and “international cooperation” if you like. Or you can get a computer to generate billions of new connections. What makes new connections valuable is when they to generate new meaning.
As you play, you can deliberately try inventing these random juxtapositions and then use your intuition to tell you whether any of them have significance for you. That’s the bit the computer can’t do. It can produce millions of new connections but it can’t tell which one of them smells interesting.
He goes on to note that, through this process, you’ll create lots of new connections that are absurd — that’s a good thing!
You can try loosening up your assumptions by playing with deliberately crazy connections. [Edward De Bono calls] such absurd ideas “intermediate impossibles”. And he points out that the use of an intermediate impossible is completely contrary to ordinary logical thinking where you have to be right at each stage. It doesn’t matter if the intermediate impossible is right or absurd. It can nevertheless be used as a stepping stone to another idea that is right. [That is why] when you’re playing, nothing is “wrong”.
So when you get stuck, start generating random connections and allow your intuition to tell if you one of them will lead you somewhere interesting.
There’s an interesting connection here, I think, to design and code.
Programming a computer demands a kind of logical thinking at each step of the process. If you aren’t being logical, the computer won’t understand you. So, as you write code, you’re constantly reorienting yourself to a logical way of thinking, a step-by-step rationality towards a computed outcome.
That’s ok, there’s nothing wrong with that. It needs to be the case to program.
But when you allow that demand for logical reasoning at every step to extend beyond the code editor, when it dominates your thinking in ideation or collaboration with others, it becomes a weakness instead of a strength because it limits your capacity to imagine new possibilities, new connections, new juxtapositions.
Perhaps this is a source of the contstant tension between “design and code”, between “this is the best experience I can imagine” and “I can’t do this, it’s not programmatically possible”.
This is why “design engineers” can be so valuable because they have developed a muscle for holding these tensions in balance: the need for logical reasoning at each step against the need for subversive ideation that bridges to unseen but plausible possibilities.
That’s what I love about the intersection of design and code, and why I love working in an environment that nurtures and respects multidisciplinary craftspeople.