Lessons in problem solving
“Everyone in this country should learn to program a computer, because it teaches you to think.” — Steve Jobs
Essentially, it’s all about a more effective way for problem solving.
Why is this important?
Problem solving is the meta-skill.
We all have problems. Big and small. How we deal with them is sometimes, well…pretty random.
Unless you have a system, this is probably how you “solve” problems (which is what I did when I started coding):
Try a solution. If that doesn’t work, try another one. If that doesn’t work, repeat step 2 until you luck out.
Have a framework
To find the right framework, I followed the advice in Tim Ferriss’ book on learning, “The 4-Hour Chef”.
what should you do when you encounter a new problem?
Here are the steps:
1. Understand Know exactly what is being asked. Most hard problems are hard because you don’t understand them (hence why this is the first step).
2. Plan Don’t dive right into solving without a plan (and somehow hope you can muddle your way through). Plan your solution!
3. Divide Pay attention. This is the most important step of all.
Do not try to solve one big problem. You will cry.
Instead, break it into sub-problems. These sub-problems are much easier to solve.
Then, solve each sub-problem one by one. Begin with the simplest. Simplest means you know the answer (or are closer to that answer).
4. Stuck? By now, you’re probably sitting there thinking “Hey Richard… That’s cool and all, but what if I’m stuck and can’t even solve a sub-problem??”
First off, take a deep breath. Second, that’s fair.
Don’t worry though, friend. This happens to everyone!
Keep trying and you will finally get to it.