← All articles

Miscellaneous

Problem Solving

A process for solving problems.

The Process of Solving Problems

Roy K. Clemmons

The following is a generalized process to solve problems. While originally intended to solve problems in the software development domain, these steps can be applied to problem solving in general.

Some of the steps overlap so even though I present them as discrete steps, in reality they probably are not. Still, a step-wise presentation provides a structure for explanation.

  1. Problem understanding and definition

  2. Problem analysis

  3. Developing possible solutions

  4. Analyzing the solutions

  5. Selecting the “best” solution(s)

  6. Planning

  7. Implement the plan

Problem understanding and definition

Consult domain experts. The focus should be on understanding and defining the problem - not solutions. In fact, resist solutions at this point, otherwise, one might be tempted to implement the most immediate solution which may not be the best one. As a side note, “best” doesn’t mean the fastest or the most flexible solution, it simply means what is most appropriate in the problem domain.

Additionally, we often only see the symptoms of a problem - the tip of the iceberg. Ultimately, I want to discover and address the cause of the symptoms. To that end, it’s important to test my understanding of the problem - can I explain it to a 12-year old?

Problem analysis

Can overlap with the first. A problem exists, I have defined it and I understand why it is happening, but, how did this become a problem in the first place? What are the conditions or initial conditions - perhaps, the direct and indirect influences - that allowed or enabled the problem to occur? This is important to understand in order to prevent or minimize the risk of future occurrences. What is the impact of the problem? Ask very basic questions to get the details. Be a non-judgmental sponge.

Sometimes, the analysis can affect the problem definition so continue to review the definition for validity.

Developing possible solutions

Examine several solutions and consider alternatives. Do workarounds exists? Keep an open mind. Assume everything is possible and the perfect world exists. Brainstorming, Round Robin, open discussions are encouraged. Use lots of white boards, flip charts, sticky notes, napkins, etc. Initially, don’t be too concerned with evaluating each one - just get them down. This is the time for creative and intuitive ideas.

Analyze the solutions

Investigate the various solutions in the context of the problem domain - the perfect world no longer exists. Examine the good and bad points, the tradeoffs, the risks, etc. What are the priorities?

Selecting the “best” solution(s)

Which solution or solutions make the most sense for the domain? Sometimes, there is more than one solution. What’s the impact on implementing the solution? Sometime the preferred solution may be unacceptable at the current time and may need to be implemented in stages if at all. In this case, look to the alternatives.

Planning

How do I get to where I want to go? I have a “before” picture and I have an “after” picture. How do I get from the “before” to the “after”. Are their time constraints? What is the scope? How do I evaluate my progress? Review with domain experts, senior people, mentors. Identify needed resources. Develop action items, assign responsibilities. Coordinate.

Solve the Problem

Implement the plan