Excerpts:
p.1 The first key trait to develop which I like to call the
fundamental prerequisite of nature is the skill of keen observation.
The best problem-solvers around the world are also the best observers.
p.1 Look for specifics when trying to observe...
Try to see, not look. As a problem solver, your job is to fight this human default and to constantly observe; to note situations
and detail.
p.2 Good observation is a skill that must absolutely
be cultivated by every budding problem solver... What I'm saying is that you need to start thinking about
how you are going to improve your eyes and ears to see and hear non-obvious things. A lot of the problems today are
fairly non-obvious until someone observes it and tells everyone, at which point it becomes blatantly obvious and leaves you
wondering why you didn't see it earlier... this is precisely why we need good observational skills: problem solving
always starts with problem recognition.
p.2 You need to become obsessed with
your observational skills.
p.3 Keep in mind that this pocket guide isn't
going to tell you how to solve a problem... It is, quite literally, an algorithm that can bootstrap itself and generate
other algorithms to solve problems. It is an algorithm to generate other algorithms, possibly better
than itself. This is the Dogfood principle. [JLJ - from wikipedia, Eating one's own dog food, also called dogfooding, is when
a company uses the products that it makes. Dogfooding can be a way for a company to demonstrate confidence in its own products,
and hence a kind of testimonial advertising. For example, Microsoft and Google emphasize the internal use of their own
software products. In 1988, Microsoft manager Paul Maritz sent Brian Valentine, test manager for Microsoft LAN Manager, an
email titled "Eating our own Dogfood", challenging him to increase internal usage of the company's product. From there, the
usage of the term spread through the company.]
p.4 Keep looking. Keep wandering. Always maintain
a curious outlook... you will need the devil's creativity to solve the seemingly unsolvable. Always be intrigued.
Always be prepared for surprises.
p.5 I love problem solving. I always have. Not the
actual answer that comes out of it, but the process. The process of dissecting the problem, analyzing every facet,
forming patterns, drawing connections, understanding the impact, and then finally posing a decent solution.
p.5 If you want to solve your problems, you'll need to do
your own thinking.
p.8 Not all bad problem-solvers are heavy [coffee] drinkers, but the heavy
coffee drinkers almost certainly are bad problem solvers. [JLJ - another reason to cut back on the coffee]
p.8 Correlations are important. Look out for them as you brainstorm. The
ability to draw connections is a key tool every good problem-solver has in his toolbox while brainstorming.
p.9-10 I like playing logic puzzles and
games, because I feel they help sharpen how analytical my mind can get. Why is this so important? Well, the analysis
step is perhaps the hardest part of the problem-solving process. So many ways of attacking the problem. Which one's
the best? What's the impact of my solution? What are the side-effects? Who's going to be affected? How? When? How
can I divert? How do I mitigate? What could go wrong in the implementation? This is only a taste of the questions we try to
address while performing an analysis of a problem and any proposed solutions.
Try to do stuff everyday that sharpens your intellect.
I used to do that a couple of years ago, but then I realized I was wasting my time. Instead, I spent time increasing my intellectual
capacity. Increasing the capacity (i.e., the upper bound on intellectual sharpness) is way more effective
than increasing just your intellectual level. Increasing the pitcher size somehow seems to increase the volume of water in
it.
p.11 Algorithms are important. Most of our problems are solved
today by computers. And algorithms are the "language" we use to communicate orders to a computer. So what
we need to keep in mind is that whenever we attack problems, our end goal is to come up with an efficient algorithm
that anyone can execute. This end goal is critical.
p.13 Different algorithms perform better in different situations
so the best way to analyze the performance of an algorithm is to actually run it. The differences
between two or more algorithms then become immediately apparent. If you can't actually run the algorithm, then you can at
least simulate it, either on a computer or in your head. Pretend you are actually executing the algorithm and look
for all the things that can go wrong. Close your eyes, and pretend you are about to cross the street. What things
do you need to worry about?
p.15 I have issues with this kind of solution technique
[iteration]. I spent three years at the University of Waterloo and eight months working for them, and I noticed that
this is how problems routinely get solved. The thing is, after 50 years of iteration, the solution did get much better than
what they initially started with, but this is a solution made out of spare twigs, cello tape and newspaper clippings. What
I'm looking for is a solution made out of reinforced concrete, glass and steel. There is no match between the two.
p.19 if you find yourself trying to adapt past solutions
to new situations, stop yourself at once. The adapted solution may only be incrementally better, a mere iteration
over the previous solution. You want to instead think through a problem from scratch, re-consider every
single variable again, and re-hash all the things that could go wrong. This might seem time-consuming but the importance of
certain variables are always changing so frequently. What was just a minor detail last year now becomes critical.
In essence, if you can skip iterating and simply
jump to the best solution at once, you'll be leaps and bounds better off than the rest of crowd that are relying solely on
their memories and their experiences to solve their complex problems.