Posts Tagged ‘Problem Solving’

Problem Solving: Evaluating Solutions

Wednesday, April 2nd, 2008

In a series of posts on problem-solving, I will be sharing my personal approach to finding and evaluating solutions. At times, I may also evaluate other methods or draw from other resources, in which case references will be cited at the end of the post. This is the fourth post in the series.

In the previous three posts, I outlined how to clearly define the problem, identify constraints on the solution and then brainstorm possible solutions. The next step is to evaluate the solutions that were generated during the brainstorming process.

This, in theory, should be the easiest step. We’ve already defined all the constraints and brainstormed several solutions. All we need to do now is to evaluate each solution as follows:

  1. Does it actually solve the problem?
  2. Does it meet all of the constraints?

First, rule out any solutions that don’t actually solve the problem. Now is the time to be critical. It is very easy to get distracted by good ideas that are tangential to solving your problem. This is where clearly defining the problem is very helpful. For each solution, ask yourself, does this solution make the problem go away. If the answer is no, rule it out. It doesn’t mean it’s not a good idea. You may still want to do it. But it does mean it is not a good solution and you have not yet solved your problem.

For the second question, does it meet all the constraints, don’t rule out a solution if the answer is no. Instead, for each solution, give it a score based on how many constraints it meets. If all constraints have equal weight, just count how many constraints it meets and use that as the solution’s score. If some constraints are more important than others, then count those constraints multiple times (according to their weight), when scoring each solution.

After you have scored each solution, first check to see if you have any solutions that meet all of your constraints. If so, then focus on just those solutions. Rule out any solution that does not meet all of your constraints. At this point, someone might be emotionally tied to a solution that is being ruled out. This may leed to another discussion about the importance of each constraint. That is okay. It is always good to question the constraints. But be sure to discuss the value of the constraints, not the value of the solution that is being ruled out.

If you have multiple solutions that meet your constraints, congratulations!. But you aren’t done yet. If you are having a hard time identifying which of your perfect solutions is the right solution, then odds are, you haven’t identified all of your constraints. If people are still making passionate arguments for one solution over another and you are not coming to agreement, then dive in and look for more constraints. Don’t argue over specific solutions. Instead, discuss the importance of new constraints.

If you have no solutions that meet all of the constraints, you have a couple of options. You can either reevaluate your constraints or you can continue to brainstorm solutions. The key here is, are you willing to compromise on your constraints. If you are, make sure it’s for a good reason. Often times you can compromise on your constraints by finding another way to meet that need. But don’t compromise on a constraint just becuse you haven’t found the right solution. Nobody will be satisfied and the problem will keep rearing its head. Instead, go back to brainstorming.

If you stick to this method:

  • Define the problem
  • Identify the Constraints
  • Brainstorm Solutions
  • Evaluate Solutions
  • and iterate on each step as needed, you may not always find the perfect solution, but you’ll spend far less time arguing over inadequate solutions.

Problem Solving: Brainstorming Solutions

Sunday, March 30th, 2008

In a series of posts on problem-solving, I will be sharing my personal approach to finding and evaluating solutions. At times, I may also evaluate other methods or draw from other resources, in which case references will be cited at the end of the post. This is the third post in the series.

In the previous two posts, I outlined how I like to clearly define the problem at hand and then get everyone interested in the solution to list their constraints on the solution. This gives us a bounded canvas for finding a good solution. The next step is to brainstorm solutions.

Almost everyone in the room is going to have a favorite solution or be opposed to someone else’s solution. At this point, the key is to get all the possible solutions out. Use a white board. Don’t allow criticisms. That will come later.

The key to a good brainstorming session is to make sure that everyone participates and that the tone of the group stays positive. At this point, there are no bad solutions. It’s often difficult for people to be the first one to put a solution out there. It helps if you start off with a couple of your own. But be sure to not dominate the session.

Encourage people to think outside the box. If the group is focusing on the same solutions that have already been thrown out, throw out some off-beat solutions. They don’t have to be practical. The point isn’t that one of these solutions might work, but it might help people think more creatively about solutions that will work.

There is a ton of literature out there on how to run a good brainstorming session. Do your homework. Everyone is creative. When you clearly define the problem, identify the constraints and set up the right environment for creativity, ideas come quickly.

In the next post, I’ll walk through my process for evaluating these solutions.

Previous posts in this series:

Problem Solving: Identifying the Constraints

Saturday, March 15th, 2008

In a series of posts on problem solving, I will be sharing my personal approach to finding and evaluating solutions. At times, I may also evaluate other methods or draw from other resources, in which case references will be cited at the end of the post. This is the second post in the series.

Identifying Constraints

In the previous post on defining the problem, we discussed how to break up a set of problems and brainstorm solutions for each problem individually. But how do we know which solution is best?

This is where defining the constraints comes in. Let’s continue with our scenario from the last post:

At some point your team realizes you are behind schedule, customers are knocking down your door asking for more and more features and your engineers are working around the clock. Meanwhile, your site stability needs to be improved and you have a growing list of bugs. What do you do?

and we listed each problem mentioned in the scenario:

  • you are behind schedule
  • customers are getting antsy
  • your engineers are at risk of burning out
  • site stability is putting your business at risk
  • the quality of your product is at risk due to the growing bug list

Some likely constraints might be:

  • Limited headcount
  • Limited cash
  • Desire to not compromise on code quality
  • Need to not compound work-load of already overburdened employees

Each person with a stake in solving the problem, likely has their own set of constraints in mind. Unless they are clearly articulated and listed, it will be difficult to find an agreeable solution.

I’ve been in dozens of discussions in which a solution is being evaluated and someone in the room can’t come up with a rational argument for why the solution won’t work, but is still unhappy with the solution. In just about every case, this was the result of an uncovered constraint.

Sometimes there are no solutions that abide by all the constraints. When this occurs, instead of spending hours arguing over the merits of one solution or another, it’s easier to weigh the importance of each constraint relative to each other. This helps people remove themselves from their emotional attachment to a particular solution and more objectively evaluate what are often tough tradeoffs.

In the next post, we’ll discuss how to narrow the field from dozens of “solutions” to the handful of solutions that actually solve the problem within the defined constraints.

New Series: Exploring Problem Solving Techniques and Related Topics

Saturday, March 1st, 2008

One of the things I’d like to explore in a series of posts is problem-solving. I will explore tools and techniques for arriving at solutions, but also explore related concepts in day to day problem solving. For example, getting buy-in on solutions, making sure the solution meets all stakeholders’ needs, facilitating creative problem solving in a group, etc.

Problem solving is something we encounter every day of our lives. Improving this skill, is perhaps the most effective thing we can do to simplify our lives.

in the coming weeks, posts will explore the following topics.

Problem Solving

  • Defining the Problem
  • Understanding Constraints
  • Generating Solutions
  • Evaluating Solutions
  • Refusing to Accept Mediocre Solutions
  • Getting to a Known Solution
  • identifying Whether or Not the Cause of the Problem is Relevant to the Solution
  • Formal Methods for Finding Solutions

Related Topics

  • Getting Organized
  • Prioritizing
  • Relationship Building: Getting Along with Everyone
  • Listening Skills
  • Getting the Most Out of People

Some of these latter topics may not seem directly related. But I find them t be invaluable in getting to solutions faster. Exposing the connection will be half the fun.

I’m looking forward to it. I hope you are too.

Keeping Your Head When You’re Overwhelmed

Friday, January 25th, 2008

I work at a startup and we are currently going through a rough patch where several people are feeling overwhelmed and stretched far too thin. It’s interesting to see how different people react and what works and does not work. I have found the following steps help quite a bit when trying to keep your head above water.

1. Take a deep breath.

It’s really easy to focus on the sky falling around you. But running around, shouting that the sky is falling isn’t going to get you anywhere. Stop for a minute, take a deep breadth. Calming down and focusing on the tasks at hand is the first step to picking up the pieces.

2. Make a list – Write down the problems not the solutions.

When you don’t write things down, it’s easy to bounce from problem to problem, making each seem bigger than it actually is. Focus on the problems, not the solutions. You won’t find suitable solutions until you clearly identify the problems. Often times, we feel overwhelmed because our “solutions” aren’t actually solving our problems. To avoid this, clearly define each problem. Be as specific as you can.

Often times, clearly defining and listing out the problems is enough for people to realize the sky isn’t falling. Seeing it all on paper, often helps us realize we aren’t in as deep as we thought. Other times, we aren’t so lucky. For those other times, keep reading.

3. Sort each problem according to when it has to be done.

This is the toughest step for most people. When you feel overwhelmed, it’s usually because you feel like everything has to be done right now. This is rarely the case. For each item on your list, honestly ask yourself:

a) What’s the worst thing that would happen if I ignored this problem?

If you can live with the answer, cross it off your list, and move on. Period. Don’t get overwhelmed with “shoulds” or self-imagined responsibilities or perfectionism. If you can’t live with the answer, next ask:

b) Has this problem already been solved?

This one surprises people. But often times we worry about things that have already been handled. For these problems, all we need is to acknowledge the solution so our brains can stop worrying. If this isn’t the case, next ask:

c) Will this problem be solved with time?

Sometimes we identify solutions, but they take time to bring about. Other times, problems can’t be solved until something else occurs. In both cases, it’s very easy to worry about something that can’t be acted on immediately. If it will be solved with time and it’s an acceptable time-frame, cross it off your list.

If the time-frame is not acceptable, split the problem up: the long-term problem will be solved with time, cross it off the list. Address the short-term problem only.

For example, suppose you need a place to live. You’ve found the perfect apartment but it’s not available for 30 days. You need somewhere to sleep tonight. You’ve solved the problem of where to live for the long-term, but now you have a new problem: where to live in the short-term?

This is a simple example, but now imagine your problem is you need “x” today. But it takes 6 weeks to build “x”. Once you start building “x”, this problem becomes a problem that will be solved in time. However, you might have a new problem: How to deal with not having “x” for 6 weeks. Fortunately, many solutions that are unacceptable in the long-term are perfectly adequate in the short-term. Don’t confuse your short-term problems with your long-term problems.

At this point, if your list is still overwhelming, next ask:

d) Can I solve this problem tomorrow, next week, or next month (in other words, later)?

This is another tough one to answer honestly. You are feeling overwhelmed because you think you need to sovle it right now. But ask yourself, what will happen if I wait a day, a week, a month? If you can live with the answer, mark it for later.

4. Take Action

The only things that should be left on your list are real emergencies. The only thing you can do with these is take action. In true GTD fashion, identify the first step and do it. If it’s still too much, find someone to help you out. Get creative. But do something. The sky isn’t going to stop falling until you start picking up the pieces.