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. Even if I can’t help, I’m not going to waste too much of your time. Plus, it never hurts to take a look at how other people solve problems.

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? Which queue do I join? How do I live without you?

 … sorry.

Abstraction

The key to great problem solving is abstraction.

Abstraction (at least, in a Computer Science sense) is the ability to see a problem from a different point of view.  Instead of thinking “How do I do this?” think “How does someone else do this?” Then visualise them doing it.

Imagine the first time that you used a vending machine (if you can remember such a mundane thing). Did you instinctively know how to use it? Did you ask someone? Did you watch someone using it?

Chances are, either you saw someone using a vending machine before your first time, or you intuited how to work one. And this is exactly what I’m talking about. In both of those situations, you abstracted yourself out of the problem and solved it.

Now imagine that I plonk you down in front of a Japanese vending machine. All of the buttons and commands are displayed in Japanese. How do you figure out how to use it?

It’s the same problem, except this time you have what’s called “Expert Knowledge”. Expert Knowledge is a form of previous experience, in this case with vending machines, and you are going to use it to figure out how to use the Japanese vending machine.

There’s a coin slot, and some buttons. Each of the buttons has a picture of the product above it (instead of the logo for the product on the button), with the amount that the product costs displayed on the button.

Here’s your first problem to solve:

Look at the vending machine shown below (click to enlarge) and figure out how you would purchase a can of grape flavoured Fanta (I lived on this stuff while I was in Japan).

How would you figure out this puzzle?

Courtesy of noiseyparadise on Flickr

Note: Image used via Fair Use. Props to NoiseyParadise for this image.

If you guessed something along these lines:

  1. Find coin slot
  2. Insert money
  3. Press button
Then, congratulations. You just solved the puzzle.

I know it’s a stupid example, but these are the types of problems we face on a day to day basis, and I wanted to start you off with an easy one.

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.

Did you find a piece of paper and something to write with? Good. Then I’ll begin:

Simon is 5, Amy is 3 and Sandeep is 7. How many is Sarah?

Before you blurt out the answer, I want you to write down anything that you think is relevant to the question. Seriously, anything.

I ended up with “Simon = 5, Amy = 3, Sandeep = 7. Sarah = ?”

Then I started counting the letters.

  • Simon – 5 letters
  • Amy – 3 letters
  • Sandeep – 7 letters
  • Sarah – 5 letters

Done! How easy was that?

Why The Paper and Scribe?

It’s been calculated that the average human brain has, around 6 spaces in temporary working memory. I can illustrate this by listing 11 random words (found by looking at things around my desk), then asking you to cover the list up, wait for 60 seconds then recall them all:

  • Bottle
  • Magazine
  • Headhpones
  • Router
  • Pepe the King Prawn
  • Clock
  • Dictionary
  • Greeting card form a Japanese friend of mine
  • HB #2 pencil in Red
  • 500GB USB Hard Drive with 100 GB of free space
  • Samsung Galaxy Ace with Cyanogen Mod 9 (Ice Cream Sandwich) installed on it

Unless you know any decent memory tricks, you might have been able to get up to “Dictionary”. I, intentionally, got more and more specific towards the end of the list to prove a point. Most of us, as I mentioned earlier, have enough space for around 6-8 things in our temporary working memory. So, when I’m working on a big problem, I find that it makes things easy if I note things down. I can also draw arrows or emphasize things on paper, something I can’t do in my temporary working memory.

Iry the above again, but write down each of the items, then read through the list a few times, then cover up the list for 60 seconds and try recalling them from memory again.

That was a long sentence

I’m willing to place money on the fact that you should do, at the very least, at little better. I’ll leave you to experiment with this idea.

I know that this is a long winded explanation of: “Write stuff down”, “Scribble and take notes” or even “Do some doodling when working on a problem”; but I wanted to post something long winded and overly elaborate.

Because that’s totally not my style at all

I’d provide real world examples of my scribbling at work, but the only examples I have might get me in trouble (confidentiality and such). I’ll check back and maybe add a few scans of my notebook if it doesn’t breach said confidentiality.

Have fun, y’all

J

Jamie is a .NET developer specialising in ASP.NET MVC websites and services, with a background in WinForms and Games Development. When not programming using .NET, he is either learning about .NET Core (and usually building something cross platform with it), speaking Japanese to anyone who'll listen, learning about languages, writing for this blog, or writing for a blog about Retro Gaming (which he runs with his brother)