Classroom exercises always have nice, tidy solutions. So students implicitly assume that all problems have nice, tidy solutions. If the solution isn’t working out simply, you must have made a mistake.
Outside the classroom, applications seldom have simple solutions. So after a while you get jaded and quit trying to find a simple solution. But sometimes real problems do have simple solutions, or at least simpler solutions than seemed possible.
The Extreme Programming folks have a saying “Try the simplest thing that could possibly work.” If that doesn’t work, then try the next simplest thing that could possibly work. That line of thinking has paid off a few times lately.
I’ve had a couple math problems that I first assumed had to be approximated numerically that were more easily computed exactly. And I’ve had a couple programs where I was able to debug a section of code by simply deleting it. Things don’t always work out that well, but it’s fun when they do.
In the article Neo-Amish Drop Outs, Kevin Kelly shares a quote from Donald Knuth explaining why he (Knuth) seldom reads email.
Rather than trying to stay on top of things, I am trying to get to the bottom of things.
Getting to the bottom of things — questioning assumptions, investigating causes, making connections — requires a different state of mind than staying on top of things. Deep thought is difficult when you’re frequently interrupted. It’s just as difficult when you anticipate being interrupted even if the interruption never comes.
We don’t task switch nearly as well as we think we do. We think we can switch instantly between tasks, when in reality it takes at least 15 minutes to recover our thoughts, and that’s if we were doing something relatively simple. With more complex tasks, it takes longer.
When I began to understand this a few years ago, I asked a colleague how long it takes her to recover from an interruption. She said three days. I thought she was exaggerating, but now I appreciate that it really can take a few days to get into a hard problem.
by John on April 29, 2008
About a month ago I wrote a series of four blog posts on innovation. The most important theme from these posts is the statement by Seth Godin just posted an article on his blog entitled The fibula and the safety pin that fits in with a series of innovation post I did about a month ago (Innovation I, II, III, IV). From Godin’s post:
Just about everything has a strike against it. It’s either already been done or it’s never been done. Ignore both conditions. Pushing an idea through the dip of acceptance is far more valuable than inventing something that’s never existed… and then walking away from it.
His phrase “pushing an idea through the dip of acceptance” is a good definition of innovation. (It also contains a passing reference to his excellent little book The Dip.) It goes right along with Michael Schrage’s statement that “innovation is not what innovators do but what customers adopt.” Too often we romanticize the inventor and fail to appreciate the toil of the innovator.
Sometimes making a task just a little simpler can make a huge difference. Making something 5% easier might make you 20% more productive. Or 100% more productive.
To see how valuable a little simplification can be, turn it around and think about making things more complicated. A small increase in complexity might go unnoticed. But as complexity increases, your subjective perception of complexity increases even more. As you start to become stressed out, small increases in objective complexity produce big increases in perceived complexity. Eventually any further increase in complexity is fatal to creativity because it pushes you over your complexity limit.

Going back to simplification, a small decrease in complexity can be a big relief if you’re stressed out. Maybe that small simplification can pull you out of F-state back to C-state. If you’re up against your maximum complexity, a small simplification could make the difference between a problem being solvable rather than unsolvable.
Small simplifications are often dismissed as unimportant when they’re evaluated in the small. Maybe a new term makes it possible to refer to an idea in three syllables rather than six. No big deal if it’s a term you don’t use much. But if it’s a term you use all the time, it makes a difference. That’s why every group has its own jargon.
Suppose one programming language takes five lines of code to do what another language can do in four lines. So what? How long does it take to type one line of code? But multiply that by 10. Maybe you see 40 lines of code on your laptop at once but you can’t see 50. Or multiply by 10 again. Maybe you can hold 400 lines of code in your head but you can’t hold 500. Language features dismissed as “syntactic sugar” can make a real difference.
It’s easy to decide what you’re going to do. The hard thing is deciding what you’re not going to do.
Michael Dell
Clutter kills WOW.
Tom Peters
Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius — and a lot of courage — to move in the opposite direction.
Albert Einstein
by John on March 30, 2008
Some say “The devil is in the details,” meaning solutions break down when you examine them closely enough. Some say “God is in the details,” meaning opportunities for discovery and creativity come from digging into the details. Both are true, but the latter is more interesting.
I posted something along these lines a few weeks ago, Six quotes on digging deep. In that post I quote Richard Feynman
… nearly everything is really interesting if you go into it deeply enough …
I thought about this again last night when I ran across a post by Andrew Gelman entitled God is in every leaf of every tree. He has a similar quote from Feynman.
No problem is too small or too trivial if we really do something about it.
From there he links to a post where he describes what he calls the paradox of importance. Sometimes we can do our most creative work on the least important problems. The important problems often demand quick solutions, so we fall back on familiar methods.
Everything in this post applies equally well to creativity in field: graphic design, music composition, literature, etc. However, Gelman is talking about creativity specifically in the context of statistics. The field of statistics itself is a prime example of something that appears dull from the outside but becomes fascinating in the details. A course in statistics can be mind-numbingly dull when the emphasis is on rote application of black-box procedures. Looking inside the boxes is more interesting, and designing the boxes is most interesting.
by John on March 29, 2008
From Alan Perlis:
Fools ignore complexity. Pragmatists suffer it. Some can avoid it. Geniuses remove it.
See this site for a list of other epigrams from Perlis.
by John on March 24, 2008
Ward Cunningham’s design advice is to try the simplest thing that might work. If that doesn’t work, try the next simplest thing that might work. Note the word “might.”
We all like simplicity in theory, and we may think we’re following Cunningham’s advice when we’re not. Instead, we try the simplest thing that we’re pretty sure will work. Solutions usually get more complex as they’re fleshed out, so we miss out on simple solutions by starting from an idea that is too complex to begin with.
Once you have a simple idea that might work, you have to protect it. Simple solutions are magnets for complexity. People immediately suggest “improvements.” As design guru Donald Norman says “The hardest part of design … is keeping features out.”
by John on March 22, 2008
A professor told me one time that you’re lucky if you have one good idea in your career. He said he was famous because he’d had two or three good ideas.
Ward Cunningham has had at least two good ideas. He created the first Wiki and developed Extreme Programming. The FLOSS Weekly podcast has an interview with Cunningham. The interview shows how closely related Wikis and Extreme Programming are, how both flow naturally from Cunningham’s way of thinking.
by John on March 18, 2008
How do you maintain conceptual integrity when multiple people contribute to a project?
Fred Brooks, author of the software engineering classic The Mythical Man-Month, gave a talk at at OOPSLA 2007 entitled Collaboration and Telecollaboration in Design (audio here). In his talk, Brooks discusses the importance of conceptual integrity. Great products have conceptual integrity and are nearly always the fruit of one or at most two minds. Products reflect their creators, and products designed by committees have multiple personalities. How do you maintain conceptual integrity when scale and complexity demand the participation of many people? Listen to Fred Brooks for some ideas.
Charles Petzold describes on his blog how he wrote his book The Annotated Turing, a commentary on Alan Turing’s seminal computer science paper. The book is scheduled to be released June 10. Petzold began by literally cutting and pasting pieces of Turing’s paper. He worked on the book away from his computer for the first couple months.
As a programmer and author, Petzold has no aversion to using computers. He says “I gave up handwriting … sometime around 1982 when I first learned WordStar on my Osborne 1.” But he discovered that he thought more deeply about the subject of his book when he wasn’t distracted by typesetting issues. He’s a technical wizard, but he makes selective use of technology.
by John on February 27, 2008
One of my professors once told me that you learn the fastest when you’re slightly confused. If you’re too confused, you’re likely to give up in frustration. But if you’re not confused at all, you’re either not learning or learning very slowly. Slight confusion is the optimal state where you’re holding unresolved ideas in your head and making connections.
Confusion shows you’re thinking deeply enough to be confused. It takes effort to be confused rather than complacent.
Sometimes a muse will stir confusion in your mind on a previously settled topic. You can try dismiss the muse as you would a housefly, or you can pursue a resolution to the confusion. You can find relief from your confusion by apathy or by hard work. If you choose to push through the confusion to resolution, your confidence will initially decrease even as your understanding increases. If you’re vocal about your confusion, you will invite ridicule. Confusion takes courage.
by John on February 18, 2008
In the book Universal Principles of Design by William Lidwell, Kritina Holden, and Jill Butler, the authors have this to say about the flexibility-usability trade-off.
It is a common assumption that designs should always be made as flexible as possible. However, flexibility has real costs in terms of complexity, usability, time, and money; it generally pays dividends only when an audience cannot clearly anticipate its future needs.
Good design is not about making everything flexible. It’s about making the right things flexible, and making other things more rigid. Good design could be described in terms of what is rigid as much as in terms of what is flexible. The art is knowing which things to make flexible, while casting other things in stone.
by John on February 11, 2008
I ran across this on Guy Kawasaki’s blog, what he calls “the cleverest idea I’ve seen in years.” It’s a water pump for developing areas that works by having children play on in. Here’s a video from National Geographic demonstrating the pump.