Skip to main content

Find three solutions 🔱

Developers are very good at finding solutions to problems. Most of us start to formulate a solution in our mind before we have even heard the full problem description.

When faced with a non-trivial problem, I try to follow these steps.

  1. Goal: Fully understand the problem and state what you are hoping to achieve.
  2. Solutions: Come up with at least three different possible solutions.
  3. Decision: Make a decision on what solution to choose and why.
    (If the decision is not yours to make, give your recommendation.)

Depending on the context, the output may be a few lines of text in your notebook, or a multi-page document sent to the CEO as basis for the decision-making. In any case, the principles remain the same.

A clear goal #

You can’t make a good decision unless you’ve understood the problem you are trying to solve. It sounds obvious, but we often stumble on this first step.

I’ve found that we (both I and others) often come up with a first solution, and then unwittingly adapt our understanding of the problem to match that solution. Whatever improvements we then make to the solution may be wasted time if we are aiming for the wrong goal.

At least three solutions #

When you understand the goal you are trying to reach, take a step back. You want to find multiple different solutions and not get stuck on the first possibility that enters your mind. Because the first idea is rarely the best one.

I try to keep in mind the words of H. L. Mencken:

There is always a well-known solution to every human problem—neat, plausible, and wrong.

Strive to always find at least three different solutions. While two solution is better than one, three helps us to avoid specifying the problem as a (false) dichotomy. For example, we can break a “we must do a dirty quick fix or a time-consuming complete rewrite” stand-off by introducing a third alternative.

Some thing to consider: Does the problem require a technical fix? If so, do we need to do it ourselves or can we use an existing solution? Have we already solved this problem elsewhere? Is it an organizational matter? Can it be solved by education? And so on.

Sometimes, the right response to a problem is to do nothing. It may be a problem that is not worth solving (compared to other problems that we have).

Make a decision #

Finally, when you understand the problem and have scanned the solution space, it is time to make a decision. Depending on the context, now may be a good time to present your findings to your peers and incorporate their feedback. However, don’t be afraid to make a decision or recommendation. After all the thinking you have made on the issue, you are likely in the best position to make an informed decision.

Still, provide rationale for your decision and stay humble to the possibility you might be wrong. Your understanding of the problem may not be complete, or you may have missed an even better solution.

For people in a formal leadership position, the “goal, solutions, recommendation” setup is also a valuable format for delegation.

Bonus: Own the problem #

When a problem is brought to you, it can be tempting to blame someone else for it. While you may be right, you are often better off by “owning” the problem. It does not really matter if you caused the problem—it still needs to be fixed.

Also, it is rarely helpful to say “it cannot be done”. It is almost always possible to do in some way. If the “impossible” solution is in fact possible but very expensive, then explain that.

Challenge yourself to be creative and come up with ways to solve the problem.