Skip to main content

Command Palette

Search for a command to run...

Inverted thinking

Updated
2 min read
Inverted thinking

I just finished watching a video on how to improve problem-solving by "thinking backwards" which I thought was a rather interesting approach.

Inspired by German Mathematician Carl Jacobi, who wrote "invert, always invert", it suggests an alternative method for tackling problems. Rather than identifying what you need to do in order to achieve a goal, first identify what outcomes you wish to avoid. These outcomes can then provide you with prompts on mistakes to avoid when you begin.

For example, take running a marathon. You could simply say "I'll start running a little bit further every day until I reach the 23-mile target". With inverted thinking, you identify the potential issues, things you absolutely wish to avoid:

  • What if I hurt myself?

  • What if I doubt my capabilities, or worse, quit?

  • What if my training programme isn't suited for me?

  • What if I eat the wrong food?

With some of these prompts in mind, you can now start to look at solutions:

  • Find a good warm-up/warm-down routine

  • Find a running partner or group to train with, to ensure accountability

  • Research a training programme that suits my current running experience

  • Research an appropriate diet to ensure my body is receiving the right fuel

On a similar note, historically I've always recommended people work backwards when tracking down a bug. For example, let's assume you're working on a bug report where a customer claimed they made a purchase but was never fulfilled. They didn't receive a confirmation email. You could tackle this by attempting to recreate the user journey from the very start, but you're immediately hit with questions like:

  • How did they add the product to their basket?

  • Did they receive an email?

And so on. However, you could also see if an email was sent, if a payment was made, or if the order was stored in the database. Rather than working through multiple execution paths, you'll find yourself working on a more tightly scoped problem area, making triaging issues much faster.

More from this blog

Today I Learned

15 posts