Our Most Powerful Tool - The STAIR Steps for Solving Problems
Section: Our Most Powerful Tool - The STAIR Steps for Solving Problems
Problem-solving can be seen as more of an art than a science. Each
person has different ways of approaching problems. Our intention is not to
limit your problem-solving processes to our way of thinking, but to give
you a framework you can fall back on when you are stuck. We have developed
a method called STAIR which has proven to be a helpful problem-solving
tool.
STAIR is an acronym. (Get used to it... Computer scientists LOVE
acronyms!!) Each letter in the word STAIR represents a part of a general problem-solving strategy.
- S - State the problem
- This step seems obvious enough, but it is
often the one people skip. We frequently start solving problems before we
really think carefully about what problem we are trying to solve. The
result is confusion and wasted time. Take the time to describe carefully
to yourself what you are trying to accomplish. Avoid the temptation to
couch this problem description in technical terms. At this stage of the
process, all your thoughts should be in ENGLISH (or, of course, whatever
other human language you think most comfortably in). Some problems are best
described with sketches or other tools (like flowcharts and data diagrams) which will be discussed later. Use whatever you need to make sure you have a
firm understanding of what you want to accomplish. It's best to write this
down on paper so the problem statement can be checked later if you get confused. If
you don't know where you are trying to go, how will you know when you get
there?
- T - Tools for the job
- Once we know what kind of a job we want to
accomplish, we can begin to explore which tools we might use to solve the
job. We are using the term tool in a very broad sense. A tool might be a
command, a button on a toolbar, a selection on a drop-down menu, a
strategy, a program, or something else, depending on the kind of job we are
trying to do and the context in which we are working. Knowing the
capabilities of a certain program, and the kinds of things different types
of computer applications can do are the main ways you add new tools to your
toolbox of computing skills. As you gain experience, you will constantly
be adding new tools of all kinds to your repertoire. Even the STAIR
strategy itself can be considered a tool. Most of the time, there is more
than one tool available to do a job. At this point, just list the
available tools. Later on, you will decide which tool or tools to use. You might need to come back to this list if you chose an inappropriate tool the
first time through the process.
- A - Algorithm development
- An algorithm is a computer science
term for a strategy or plan of action. Part of developing an algorithm is
choosing an appropriate tool or set of tools from the previous step. The
other component is determining how those tools will be used to solve the
problem. As with the other steps, the algorithm can vary widely in the
type and complexity of the strategy you will use. In simple problems, your
algorithm may be as simple as saying "I'm going to try pressing this
particular button on the menu bar." A more complex problem will probably
require a more complex algorithm. As before, it is a good practice to
write down your algorithm on paper.
- I - Implementation of the algorithm
- It is interesting to note
that none of the above steps require the use of a computer. The
implementation step is the actual process of translating our human
thought into something the computer can understand. In
simple problems, our algorithm may be implementing a command or
two. Implementation can mean "just do it" when we are dealing with these
simple problems. Programmers think of the implementation step as
translating the algorithm into some type of computer programming language. The process is the same regardless of the complexity of the problem.
- R - Refinement
- We like to think if we learn a skill and
prepare ourselves properly, we can solve a problem on the first attempt. Experience shows us this is not usually the case. It is normal for a
computer user to attempt a solution several times before the problem is
solved. A skilled problem solver will analyze what happened, review the other steps,
and try again. Each unsuccessful attempt should bring you closer to an
understanding of the problem and its solution. Refinement usually means
going back and looking at the previous steps critically. Ask yourself if
you really defined the problem properly. If so, have you used all the
possible tools at your disposal? Are you sure there is not a tool
available that you have overlooked? Did you choose the best algorithm for
the job? Did you implement the solution properly? (You would be amazed at
the number of computer errors that are the result of simple typing or
spelling errors!) Again, you will find that practice will make you much
more confident at this critical stage of the process.
rms@cs.oberlin.edu