Software Engineering and Information Technology are two different topics, as we’ve talked about it before. While they both use computers, how they use them, and what you will do on a daily basis, will be very different. We’ve already looked at some of the similarities and differences both from a professional level, and academically.
However, one thing that is consistent between the two is that they both require you to be a problem solver. That is why we will focus so much time on problem solving in this course.
Some problems might seem simple, but are hard to describe, or hard to put into a manner that a computer can solve. I like to say that this is because of the big human brain, vs small computer brain.
Computers are not that smart. I know it may not seem like that, however, it’s true. They require us to break down things into tiny, finite steps. However, computers appear smart because of how fast they can operate.
When you go to Instagram, it displays your feed, showing you a custom feed. This includes your friends and accounts you follow. The posts displayed are hyper selected and sorted by the accounts you most often interact with, in combination to what other people are reacting to. The computer seems smart. However, it is just following a series of steps to get to the solution. The difference is, it might be thousands of steps, maybe more, but it can do them in a portion of a second.
Our Big Brain Auto Corrects
Our big brain often corrects instructions when we see an obvious mistake, or missing a piece of information. For example, if we have instructions to pull a pizza out of the oven, we know that we first have to open the over door. A computer will get stuck, either trying to push through the closed door, or generating an error.
Likewise, we might hear someone mention the title of a book or movie, however, they leave out a word, or flip around a few words. Our brains can swap this information and automatically correct it. Computers cannot do that by default. My grandmother in law is always flipping words around, yet people know what she means. For example, she wanted to watch a movie she called “Wagging the Dogs Tail”. The movie is actually “Wag the Dog“, and everyone who’s used to her, understands that. We essentially autocorrected.
Are Computers Getting “Smarter”
However, computers are now more able to find and even fix some of the mistakes we see, and used in a previous example. For example, autocorrect in our spelling, “did you mean” when we search, etc. So are computers getting smarter?
Well, the answer is yes, and no. As computers continue to get faster, they can spend more time finding alternatives if they don’t see an exact match. For example, if they don’t recognize a series of letters, they can assume it is a misspelled word. They can then look for similar words to try to fix your error. However, they can only do this based upon words that they know, and based upon how close your misspelling was to an actual word.
A computer cannot see a problem of a new type, and automatically determine a solution, especially if they have not seen it before. With new implementations of Artificial Intelligence (AI) and Machine Learning (ML), we are getting closer to that. But, we must still define our problems to come up with a solution.
What is involved in Problem Solving?
Understand the Problem
The key thing in problem solving is to fully understand the problem.
“It’s so much easier to suggest solutions when you don’t know too much about the problem.”
Malcolm Forbes
Often a lot of people will hear part of a problem, and think about what a potential solution is based upon an incomplete understanding of the problem. Recently, someone was commenting on how they couldn’t have a plastic straw because of recent environmental regulatory changes. This seems like a valid solution, single use plastic which doesn’t break down can cause environmental harm. However, the issue was that the drink was being served in a plastic cup. Which is also single use, and a much larger. The person making the law thought through just small portion of the problem, instead of the entire problem.
Writing down a problem clearly, solves half of it.
Kindlin’s Law
Breaking a Problem Down
So make sure you write any problem you have, clearly. Then break it down into smaller and smaller sections, writing them down as well. When you get it to a place you cannot break your problem down any further, you will be at a place where you can effectively solve your problem.
Each step should be clear and easy to understand.
Generate Ideas for Solutions
At this step we try to figure out what a good solution might look like. These are often informally defined solutions, and they may require research depending upon our experience with similar problems.
Evaluate the Solution
Before we run ahead with fixing a problem, we want to check to make sure the solution will work. Depending upon the problem, we may want to choose an optimal solution, or just the first solution that works.
Develop an Action Plan and Enact It
At this point, we need to figure out how to enable the solution. Is it in writing code, or updating software? Is it in purchasing a solution off the shelf from a vendor, or is it to keep doing what we’ve been doing, but maybe with better training?
Evaluate the Results
Did what we were planning to do work? Did it solve the problem? Does this expose another issue that needs to be solved, or did not work, or is the issue resolved? These are common outcomes of issues.
If your plan didn’t work, you might need to go back to a previous step and start over again.
Document our Solution
Nobody likes to create documentation! However it is important for several reasons.
- Makes sure other people know about it
- Helps us solve the issue if it comes up again
- Ensures we understand what happened
There’s an old saying, if its not written down, it’s like it never happened. So make sure you document the process to make next time easier.
An Intro to Problem Solving was originally found on Access 2 Learn