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.

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)