I Can Make You Better At Problem Solving
I know that this is more than a little like those “Unsubstantiated-Self-Help-Book” titles, but I really feel like I can help a lot of people with this, what with me solving problems everyday… well, we all do.
Being a programmer means solving the problem of how to algorithmically perform some task with the tools available. How do I read a file? How do I check the time? Which library call do I need to make?
Don’t worry if the second half of the above paragraph doesn’t make much sense.
Abstraction
The key to great problem solving is abstraction.
Abstraction is the ability to see the problem from a different point of view. Instead of thinking “How do I do this?” think “How does someone do this?” Then visualise them doing it.
For example, change “How do I make a cup of coffee?” to “How does Bill make a cup of coffee?” then watch them doing it.
Practical Problem Solving
I’m about to give you a puzzle to solve. It’s a Mensa puzzle, but don’t be dismayed by that, it’s really easy to figure out. but before I give you the problem, I want you to go get a piece of paper and something to write with, because I’m going to show you how I solve problems like this one.
I’ll wait, go get some paper and something to write with. You wont need much, honest. Maybe a single side of A5, or the back of an envelope.