Skip to content

Instantly share code, notes, and snippets.

@neaxi
Created June 5, 2023 08:03
Show Gist options
  • Save neaxi/da4b74fd827fde3095d9123a749f5207 to your computer and use it in GitHub Desktop.
Save neaxi/da4b74fd827fde3095d9123a749f5207 to your computer and use it in GitHub Desktop.
Rules to problem solving

Rules to Problem Solving

(Unknown author)

Rule #1: Don't assume you understand the problem

This is one of the classic mistakes of problem solving - you think you understand what's going on, but you didn't look deep enough or get enough information to really get it. Before starting to solve any problem, be sure you spend some time and be absolutely sure you understand exactly what's going in.

Rule #2: Don't assume that the person who reported the problem understands the problem either

In the computer field, I've found that users will report problems in many different, often bizarre ways. Sometimes they will describe it in such a manner that it appears to make sense, but actually what they are describing has no relation to the problem at all. Remember, most people do not understand computers and the related technology at all, so they tend to piece together descriptions based upon what they have heard, what they think they know and what people have told them.

Rule #3: Duplicate the problem

Always, always, always duplicate any problem before you start working on finding a solution. Why? See Rule #4. In addition, if you can make a problem occur again, there is a much better change that you really do understand what's going on (rule #1).

Rule #4: You cannot know you have solved a problem unless you followed Rule #3

The only way to be sure that a problem is solved is to fix it, then exactly replicate what happened. The sequence is simple: duplicate the problem, fix the problem, then try and duplicate it again. If you've exactly replicated the issue, then you can be reasonably sure you've fixed it.

Rule #5: Don't assume someone else understands the problem

If you need to delegate the problem to another person, or if you are receiving instructions from another person to solve the problem yourself, do not ever assume they understand what they are talking about. Always follow Rule #3 to be sure YOU understand the problem. Do not take anyone else's word for it. If you delegate the problem, make sure the person you give it to follows Rule #3.

Rule #6: Don't assume you have just one problem

Sometimes things are more complicated than they seem. It's never a good idea to assume that there is just one problem to be solved. Throughout the entire problem solving process, keep your eyes open and find any additional problems that you may see.

Rule #7: Don't assume there is more than one problem

Also, don't make the assumption there is more than one problem either. How do you follow rules #6 and #7? Just base your conclusions upon what exists, not upon your assumptions or what others have told you.

Rule #8: Don't assume there is a problem at all

Just because someone reports a problem does not mean there is actually a real problem. I remember when I got very upset because my car was making a strange noise. I brought it to the mechanic and had him spend hours checking my car to fix the noise. As it turned out, the noise was normal and was not a problem. Hours wasted when there was no problem at all. If the mechanic had followed Rules #2, #3 and #8, I would have been out of the shop in a few minutes.

Rule #9: Don't assume you don't have a problem either

Again, don't make assumptions. Base your conclusions upon what exists, not what you assume to exist.

Rule #10: Don't assume the problem is the same as an earlier problem

I manage a number of computer systems. One of the functions of these systems is to fax several thousand purchase orders to venders over night. One day someone reported that they could not see any failures, and it's unheard of for no faxes to fail. I assumed. Mistakenly, that this was a failure in the report, which had happened before. Thus I put the incorrect priority on the issue and didn't look at it until the afternoon. When I looked, I discovered to my horror that ALL faxes had failed (which caused the failure list to fail also, as it made an assumption that at least ONE fax would work). This caused incredible grief which could have been avoided had I actually looked instead of making an assumption.

Rule #11: Don't assume it's a computer error

Not all problems are caused by machines. You could spend countless hours trying to fix something that was actually a data entry error or had some other human cause.

Rule #12: Don't assume it's not a computer error

By now you should thoroughly understand this. Don't make assumptions. Look and form your conclusions based upon the evidence that exists.

Rule #13: Don't trust the documentation

Use technical documentation as a resource, but do not assume it is correct. Programmers are notorious for allowing their documentation to slip into uselessness. That's just the way the world is, so don't beat your head over it. Read any documents you can get your hands on, but also look at the code and anything else pertinent.

Rule #14: Don't assume it ever worked

Many years ago, I had the assignment to convert a plotting package from one computer system to another. It appeared to be a simple project (I violated Rule #15) so we just moved the code to the new machine and tried to run it. Several errors occurred (squares not square and triangles not triangular), and these did not occur on the original machine. We spent months (literally!) trying to figure out what we did wrong. As it turned out, we violated rule #14. The code was in the middle of being modified, and the programmer who was doing the modifications quit and didn't tell anyone. Thus, the code we were using never worked, and thus, well, we didn't do anything wrong. Once we had the proper code (from an old backup) it really was very simple.

Rule #15: Don't assume it's simple or complex

Just remember it is what it is. Some problems are simple and some are complex. Don't assume either until you have done your analysis.

Rule #16: Don't assume maliciousness

If you find a human error, don't assume it was malicious. Generally, human errors are the result of incompetence - the person did not understand what he or she was doing. Start with training to correct human errors - you can move to harsher methods later if training doesn't work. I hope these rules are of value to you in your problem solving endeavors.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment