# Inverted thinking

I just finished watching [a video](https://www.linkedin.com/learning/how-to-think-better-by-thinking-backwards/introduction-to-inversion-thinking-15598870) 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.
