This tutorial introduces Problem solving skills to improve your problem solving ability. Also a discussion on the process and theory behind effective problem solving and creative thinking.
When you are problem solving you are doing one of two things. Either you are fixing something that is broken, or you are building something. If you are building something, it could be a completely new something, or it could be an improved something. Read on to discover how to do these effectively.
Some people are naturally good at problem solving. Others are not (yet). Most are somewhere in between. A lot of people underestimate just how good they are at problem solving. Many don't realise just how much problem solving they actually do. Problems are all around us and we solve them all the time, be it something as simple as deciding whether to put that extra blanket on the bed tonight, or something a little more difficult like constructing a plane out of old junk you've found in the garage.
Wherever you are at, you can improve your problem solving skills. With the right mindset, problem solving is not that difficult, and is quite fun. Fixing things and building things is always a rewarding task. The more you problem solve, the better you will get too.
The Right Attitude
To be an awesome problem solver, first we need to start with the right attitude.
It can be good to write some of these down in places you will see them regulatly so you are always reminding yourself.
Be Open Minded
Be open to the possibility that:
- The actual problem you have may be different to the problem you think you have.
- What you think is causing the problem may not actually be what is causing the problem.
- The best option may be to throw out your solution and start again in a different direction.
- Your beliefs on anything and everything could be wrong.
Great new ideas often come from challenging our assumptions about how things do or should work. Always be open to different opinions. I'm not saying you have to agree with them but you should take the time to appreciate and understand them.
Always be looking around and noticing things. Try and notice everything, not just what is (or what you think is) directly related to the problem area. Often, things which you don't suspect have anything to do with what you are looking at actually do.
- things that seem odd or stand out.
- any patterns.
- anything that is there that maybe shouldn't be.
- anything that is missing.
These are often good starting places to find clues.
A good way to develop inquisitiveness is to do a little activity when you are travelling (to or from work, school, etc). Look for things that stand out, or patterns, then ask yourself why they may have been done like that. eg. Why is that building 3 stories when all the others are two? Every third tree on this street is much wider than the others, why?
Ask the Right Questions
This is one of those things you get much better at with practice. Often when a student is stuck I find that I can get them unstuck by simply asking them the right questions.
I like to ask these general questions (about anything and everything):
- What is it actually doing?
- How is it actually doing it?
- How effectively is it performing its purpose?
- Why is it doing it/ what would happen if it was taken out?
- What is it's relationship with other components?
- What could I do to test that assumption?
You will also find that by asking these questions, new questions arise specific to the situation or problem. This is good. The more questions you can ask the better.
In answering these questions, always try and find proof or evidence. Try to rely as little as possible on assumptions.
It amazes me how often a student has asked for help in solving a problem and in the middle of explaining the problem to me they have realised the solution. I think it is largely because when you try to explain something to someone else you have to slow down. Speech is naturally a slower process than thought and you also tend to phrase it differently when you tell the problem to someone else rather than just thinking internally.
Slowing down can be difficult to do but can make a big difference.
Another approach to help slow things down is to come back to a problem. Leave it for a day or two (or an hour or two) and come back to it. You'll be surprised how much of a difference it can make.
Don't be Lazy
I see many students take the Where's Wally approach to problem solving. That is, they randomly, rapidly skim, hoping to find the solution. Effective problem solving is more like piecing together a jigsaw puzzle. We first look at all the pieces, trying to find the ones that stand out (such as corners and edges). Then we attack the problem from there and as the picture builds, the easier it gets. It's more work but the outcome is always much better.
Technology is great. Alas, it has also made us lazy. The result of search engines like Google and devices that increasingly hide the processing away from us is that we just expect the answers and results to be at our fingertips. Many people are just seeking that silver bullet so they don't actually have to do any work.
Effective problem solving doesn't work like that however. Don't be lazy. Read all the material, don't just skim it. Often the difference between something working and not is a little detail you have missed. You may get something that works by skimming but if you don't understand why it works then you won't be able to adapt it easily to other scenarios.
Panic is the initial reaction to many when faced with a problem. The seasoned problem solver however is calm and relaxed in the face of problems as they know that solutions always exist and with the right approach (outlined below) they will triumph.
(The exception to this is velociraptors. If you find yourself looking into the steely cold eyes of one or more of these I don't like your chances. Unless, of course, Chuck Norris happens to be standing next to you.)
When you are calm you are able to think clearer and more creatively.
Make Sure You are Solving the Right Problem
When you start looking at a problem and it seems really simple, you don’t really understand the complexity of the problem. Then you get into the problem, and you see that it’s really complicated, and you come up with all these convoluted solutions. That’s sort of the middle, and that’s where most people stop…
But the really great person will keep on going and find the key, the underlying principle of the problem — and come up with an elegant, really beautiful solution that works.
Sometimes the problem you initially see is not the problem at all. It is a symptom of the actual problem. If you solve the symptom you aren't solving the real problem, you're just putting a band-aid on it.
A great tool to help in identifying the Underlying Princple is Concept Triptychs.
Another good approach for this is to continually ask why until you can't really go any further without getting silly or adversely impacting other areas. eg:
My bike wheel keeps getting punctures. I initially thought the problem was that the innertube was dodgy.
- Why is it getting a puncture?
- Ah, because there is a dent in the rim that has become sharp.
- Why is there a dent in the rim?
- It should be able to take a fair bit of force without doing that. And my shock absorber should take a lot of that force too. Maybe my shock absorber is damaged, oh hey it is.
- Why is my shock absorber not working?
- Ah, there's a pebble got lodged in it. Now it is removed I have found the actual cause of the problem and it should be properly fixed. Not only that but my ride is now much smoother.
Or another situation. This time it has been proposed that an intranet would improve the running of the company.
- How will the intranet improve the running of the company?
- It will allow us to share information easier.
- How will the sharing of information improve things?
- It will allow expertise to be put to better use.
- What means do we currently have for information sharing and why is an intranet better than them?
- We currently have various means but they are not being used very much.
- Why are they not being used very much?
- People are worried that if they help others they will increase their workload while making someone elses life easier.
- And how would an intranet solve this?
- Ah, it probably wouldn't and may become just another unused tool. Maybe the actual problem is not lack of communication tools but a management style and work culture that doesn't fit with the way we want employees to work and interact. Changing that would be much more effective than introducing an intranet.
Assess the Situation
So we have become a zen master and resisted the urge to panic. Awesome! Now we need to assess the situation. It will be one of the following:
- We are fixing a problem
- We are creating something new
If you are fixing a problem then you need to find as much information as possible to help you work out what has gone wrong and why. Read any error messages carefully. If there is any output, look over it to see if there are any useful clues.
If you are creating something then you should consider what resources you have available to build with. Consider all resources, even if can't see how they would be useful. Sometimes with a bit of creativity you can find great uses for seemingly unneeded resources.
Sometimes we may need to do some testing to help assess the situation.
- If I change the input do I get similar error messages or output?
- Are there other things I could do which will give me other information to compare the output against to better understand it?
- Can I break my solution down into several steps and verify that each step is behaving as intended?
Create a Hypothesis
Once we have looked at the situation we hopefully have some clues to help us understand it better. Now we need to make a guess at what we need to do to get closer to an acceptable solution.
There is a reasonable chance (especially to begin with) that your hypothesis will be incorrect. That is ok, we have to start somewhere. With experience you will get better at assessing the situation and working out what needs to be done however.
It is a good idea to start at the very bottom, with the most obvious culprits, and work your way up. eg. Maybe our internet is not working. First we may check another web page. Then we may check our network cable is plugged in. etc. and work our way up.
Test Your Hypothesis
Go ahead and put your idea into practice. Think also about how you may work out if it worked as intended or not. This will be similar to step 1 where we assessed the situation.
Rinse and Repeat
Once you've put your hypothesis into practice you will get a result. If the result is what you were after then great. If not then we need to go back to step 1 and assess the situation. We need to discover why our hypothesis was wrong then learn from that and create and test a new hypothesis. With each iteration we should discover a little more and that extra knowledge will help us get closer next time.
Even if we get a favorable result, sometimes it can be good to still have another go or two. Often our first successful attempt is a little bit messy and there is room for improvement. With a few more iterations we may get a cleaner solution and we'll also increase our knowledge. Both will help us with future problem solving.
Function over Purpose
A common trait of those that are really good problem solvers is that they can find creative new ways to use existing items. So for instance, a hammer is not just for hitting nails. It could also be used as a doorstop, or a paperweight. It could be used as an instrument if you bang it against the right object. Maybe, if the end is the right size, it can be used to plug a hole. etc.
It is common for people to see items and only see them for their intended purpose. The reality is there is nothing stopping you, and it's perfectly fine, to use almost anything in almost any way you can imagine. What you need to do is stop thinking about items in terms of their purpose and start thinking about them in terms of their characteristics.
The technology we have around us today is especially flexible in how it can be used. Sometimes this can be hard to appreciate as the functioning of the software is hidden from us and the functions they perform are often abstract. We need to take the time to appreciate what the software is actually doing and how it does it. The naming of software can also sometimes work against us. For example on the Unix command line there is a command mv which is used to move a file. It's name implies that it's function is to only move files. When we understand how it works however we then come to realise that it can also be used to rename files, and in conjunction with other aspects of Unix, make files either hidden or not hidden.
Develop this thinking habit
A simple way to develop this habit of thinking is to play a game. This game can be played by yourself of with friends. All you need to do is pick a simple everyday item (it could be anything, a shoe or a pen for example) then try and come up with as many different uses as you can for it (beyond it's normal intended usage).
When playing with friends you can take it in turns and see who can come up with the most creative idea or who is the first person to not be able to come up with an idea.
Relationships Between Things
Related to the previous bit is the idea of relationships. What we are talking about here is how the actions of one thing affect that of other things. Being able to see these relationships is very important to problem solving.
- Fixing something is often the case of identifying the relationship between what is causing the problem and what is displaying the symptoms, then instigating actions to either reduce or counter those effects.
- Creating something is often the case of putting things together to create new relationships which achieve the desired outcome.
In both situations, discovering the relationships may not be easy. The right attitude, combined with the right process is very useful however.
Break the problem down
It is much easier to solve a series of small problems as opposed to one large problem. Often we try to just solve the problem in one go as we think this will be quicker and involve less work. This can come back to bite you however as you end up spending more time, trying to figure out where you went wrong, than you gained.
There are two ways I like to tackle this. Both will work nicely, it's just a matter of which you prefer or which suits the particular problem better.
- Break the problem in 1/2. Then break each of those problems in 1/2. Keep doing this until the problems are nice and manageable.
- Identify the easiest thing you can do which will get you closer to the solution and do that. Now identify the next easiest step and do that. Repeat until you have a fully working solution.
For both of these approaches you may need a few attempts before you get it right. For instance you may break the problem in 1/2 in a way that makes it more difficult as both sides rely upon parts of the other side. Don't be afraid to throw it out and have another go if it doesn't seem right.
Do the easiest step you can to get you closer to the solution. Then the next easiest. Repeat until done.
At least 3 solutions
Whenever you're about to do something of a reasonable level of complexity you should always try and consider at least 3 different ways of solving it. Those solutions should ideally be as diverse as possible.
Whenever we tackle a problem, our mind first tries to think of similar situations we have encountered in the past and work off those experiences. Often there are better solutions and by considering alternatives rather than just diving in with your first impression you'll discover a lot more.
The Uninterested Observer
Once you get really stuck into a problem your mind has a tendency to get focused. This can be bad as you easily miss things that should be obvious. It's very easy to get hung up on a particular line of thinking and completely miss alternatives.
Telling or showing another person your problem can be a great source of inspiration. Things that you have overlooked or decided not to consider will appear obvious to them. They are also not personally attached to the problem and so will see it from a different point of view to you.
Have you ever written an assignment and proof read it several times convinced it is perfect. Then a friend has glanced at it and instantly spotted a typo or mistake?
There is a lot to be said for thinking before you act. Sometimes however, the best way to start moving towards a solution is to dive in and start trying things. The first thing (or things) you try may not work out but they will help you understand the problem better, find out what works and what doesn't, and progress towards an ideal solution. Don't get stuck in analysis paralysis.
Computing Specific Tips
- If you write some code, make sure you run it. Make sure you test it with different input to check if all the different branches operate as intended.
- If data is written into a file, make sure you look at the contents of the file and that those contents seem reasonable to you.
- The computer will do exactly what we tell it to do. The problem is that sometimes what we asked the computer to do and what we think we asked the computer to do are very different things.
- Just because you didn't get an error message doesn't necessarily mean it worked as intended. Make sure the output is what you expect it to be.
- Print variables out at different points to make sure they are behaving as intended?
Check for Typos or Silly Little Mistakes
They are easy to make and can be the difference between something working exactly as intended or spewing forth a screen full of error messages. If you feel confident that what you have entered is correct then spelling errors are one of the first places you should look. Check further up in your code too. Sometimes the computer is telling you there is an error on line 57 but the actual error is a missing semicolon ( ; ) or closing bracket ( } ) on line 24.
Writing clean indented code is one of the easiest ways to avoid these problems. Use a text editor that does syntax highlighting too as that also makes errors easy to detect.
Formatting can also be important when writing code or commands. Sometimes something as simple as the presence or absence of a space can break your solution entirely.
Logic and Creativity Games
Two more important skills to develop for problem solving are logical and creative thinking. Creative thinking allows us to discover new approaches which may be beneficial to us. Logical thinking then helps us to proceed down that path. Some people are naturally good at logical and creative thinking but if you are not then don't worry. Everyone can improve both of these and it's not too difficult.
One of the best ways to improve these skills is through practice. The more problems you tackle and persevere with to find solutions, the better you will become. The more you learn the more resources you will also have at your disposal to use in different ways so working through the tutorials you'll find on this site is good for you too.
Another great way to enhance these skills is through games. Games are fun and you learn best when you're having fun. Below you will find some good games to play. There are many more out there though so these are just to get you started.
- Mastermind - Good for developing logical thinking.
- Set - Develop your powers of observation.
- Creativity Games - many fun and quick word games.
- 2048 - can you plan far enough ahead?
- Petals around the rose - another good observation puzzle.
- Ultimate Tic Tac Toe - again, good for planning ahead.
- Rubiks Cube
Keep it varied. The more different games you play the better.
If you have any suggestions for other games that could be listed here then let us know too.
I know we're talking about problem solving here but learning and problem solving actually overlap quite a bit. Solving a problem often involves learning more about the particular problem area. There's quite a bit we can talk about in terms of learning theory but I think one of the most important is the stages we go through in terms of our development.
Blooms Taxonomy is a way of distinguishing different levels in terms of a persons general ability or skill level. Here is my summarised version tailored to problem solving.
- Level 0 - I can identify what the actual problem is and what's causing it.
- Level 1 - I can find/ identify an existing solution (created by someone else) and am able to apply it.
- Level 2 - I can take a pre-made solution and tweak it to better suit this particular problem.
- Level 3 - I can create my own solutions and don't need the help of others.
- Level 4 - I can evaluate a solution and identify how good/ robust/ elegant it is.
You will probably progress through these levels as you get better at problem solving (particularly in a particular area of expertise). Level 0 is beginner and Level 4 is mastery.
People often get to Level 3 and think they have arrived, they are Grand Masters and all should look in awe upon their brilliance. Don't let this be you. Many catastrophes have been caused by people who were at Level 3 but really needed to be at Level 4.
A little knowledge can be a dangerous thing.
If you found this page useful, don't keep it a secret. Share it with everyone!