3/29/13

How to Solve Any Problem: Divide and Conquer

Today I read a LinkedIn article titled "Be A Hero: Five Steps to Vanquish Any Problem."  It seems to promise a lot: how to be a hero, how to not only solve problems, but to vanquish them.  With that sort of promise, I had to check it out. 

The problem with the article, however, is that it doesn't  this isn't really "how to solve a problem." This is an inspirational piece about leadership, but it only provides half the information needed to get to a solution.

I agree with steps 1, 2 and 3.  They are saying: 
  1. There is a problem
  2. One person should be in charge of solving this problem
  3. The solution should be stated as a positive outcome.  Saying what you want to avoid is insufficient.
But he leaves out the mechanics of solving the problem.  Assuming #5, "Failure is not an option," he doesn't give you any path to achieve a solution.  I'm assuming the problem is complex, and probably something large enough that it can't be "solved" in a day.  How does one begin to approach a solution?

As I see it, here are the steps to solving an problem::
  • Define the problem. Try to consider all perspectives on this problem.
  • Envision a range of solutions, from necessary to ultimate. Dream a little.
  • From this range of solutions, decide what's an acceptable solution.
  • Decompose the problem into smaller, more manageable problems.
  • Repeat these steps:
    • Solve one of the smaller problems
    • Determine whether you've reached an acceptable outcome
  • Until you've reached an acceptable outcome
The secret to solving any large, complex problem is to decompose it into smaller, more manageable parts. By the way, this is essentially this is the backbone of the agile methodology known as Scrum.

In Scrum you have the product owner (the person who defines the problem) and the scrum master (the person who helps to facilitate the process).  The team defines the problem, creates a backlog of solutions, and sets the definition of done -- what's an acceptable solution.  The loop of solving smaller problems and then evaluating your progress is called a sprint.

Although Scrum is normally used with software development, it is simple and useful enough to solve any large, complex problem in the workplace.