This is something I came up with. It’s an iterative method to come up with solutions at the right level of abstraction (usually people solve problems that are too specific, or feel powerless to solve problems that are too large).
I’m using here as an example the problem that India faced when they had massive heat waves. Solution in the end was to paint their houses (and maybe streets?) with a light repelling paint. Super cheap and super effective.
1. Identify pain — What’s hurting me? What am I trying to solve? (people dying from heat wave in india)
2. List assumptions — What are my assumptions about the problem/state of the world? (heat kills people / people dying is bad / heat waves will continue to occur / we have no control over heat at the scale of cities/countries)
3. Challenge assumptions — Which assumptions, if removed, change the equation? (first 3 assumptions, if removed, result in deciding to do nothing; final assumption if challenged, opens possibilities)
4. Restate problem, per challenged assumption — What is the new problem definition, if I remove this assumption? (how do we make the city less hot)
5. If no solutions come up either do (3) again, or go a level higher by doing (1) again.
This is heavily weighted towards computing / programing.
Roughly:
1: Find out what fixed looks like. When did it stop working? Has it ever worked?
2: Form theories about why it may not be working (googling is part of forming theories)
3: Pick what you consider to be the most likely problem, or the fastest theory to test.
4: Test the theory (May require googling to figure out a falsifiable way to test)
5: if that was not the problem, consider if your test falsified any more theories or changed the liklihood of other, then move on to the next test
6: Repeat until you're out of testable theories.
7: Come up with more testable theories (if you already tried everything you could think of and google, start asking people online and reading books about the problem.)
10. might be a commonly overlooked step for some people. It's probably not very helpful for the just fixed problem, but it will be for the next occurring thing. Resonating about what was and feeling good about it increases self-efficacy/-confidence/-assurance, which is important for the future. Keep it up!
Kepner-Tregoe ("K-T") is something our IT department was given training in a few years ago. It's not specifically for software/IT though; it's a pretty generic framework. https://kepner-tregoe.com
Triz is a Russian engineering problem solving methodology https://en.wikipedia.org/wiki/TRIZ it's incredibly methodical and basically brute forces creative insight.
Math and logic are pretty good methods. But if you're looking for something more specific then there is something called TRIZ: https://en.wikipedia.org/wiki/TRIZ.
I’m using here as an example the problem that India faced when they had massive heat waves. Solution in the end was to paint their houses (and maybe streets?) with a light repelling paint. Super cheap and super effective.