March 23, 2020
This article originally published in my newsletter, The Solution.
How do you build something out of nothing?
In The Mythical Man-Month, Fred Brooks writes:
The programmer, like the poet, works only slightly removed from pure thought stuff. He builds his castles in the air, from air, creating by exertion of the imagination.
How does this ‘pure thought stuff’ become code?
In Sparks of Genius, Robert and Michele Root-Bernstein write:
All language can be transcribed using as few as two symbols—the dot and dash of Morse code—and virtually any kind of information can be translated into zeros and ones and fed into a computer. The striking thing about pattern forming is not the complexity of the elements that are combined, but the cleverness and unexpectedness with which the combinations are made.
The Root-Bernstein’s outline two lessons learned from their study of pattern forming:
Learning to create patterns is therefore one of the keys to innovating in every discipline, and it is wise to learn this skill early on.
We want to form a pattern of forming patterns.
How do we do that?
In Atomic Habits, James Clear discusses the importance of using habits to form an identity rather than to achieve a goal:
Your habits shape your identity, and your identity shapes your habits. It’s a two-way street. The formation of all habits is a feedback loop, but it’s important to let your values, principles, and identity drive the loop rather than your results. The focus should always be on becoming that type of person, not getting a particular outcome.
Clear outlines a two-step process for shaping your identity through habits:
Where have we seen this, or something like it, before?
It also consists of two steps:
We use recursion to solve a large problem by breaking it down into smaller instances of the same problem.
We recognize a pattern in the problem then we form a pattern to solve it.
In How To Solve It, George Polya outlines four steps for solving any problem:
The last point is the most important.
“What is the solution?
“Can it be modified?
“If so, what could be improved, if anything?
“Could we use this solution for other problems?”
We gain mastery through this process of reflection and remodeling.
Make it a habit!
Want to level up your problem solving skills? I write a weekly newsletter about programming, problem solving and lifelong learning. Join now