Fixing that which is broken and making everything else awesome!
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.
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 to the possibility that:
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.
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?
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):
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.
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.
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.
I find that a 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.
Or another situation. This time it has been proposed that an intranet would improve the running of the company.
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:
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Two more important skills to develop for problem solving are logical and creative thinking. Creative thingking 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.
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.
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. Tell your friends about it. Share it on your favourite social media. Include a link to it on your blog. etc.