20 Ways To Solve Complex Problems
One Saturday night, like a true geek, I was writing code.
I tried to go to bed at midnight. But I couldn't sleep. There was a problem that I had been working on for days and I kept going around in circles. The code I was writing didn't produce the User Experience I was looking for.
So I took a moment.
My biggest problem was me.
I wasn't applying the problem-solving skills I learned over the course of my career. Instead, I was using a brute force approach.
I found my focus and smashed it.
I went back to bed at 3 am a happy man.
The next day I reflected upon my frustrating experience and thought
"I know better than this! There has to be a better way?"
So I made a list of all the techniques I use to solve complex problems.
1. Review your assumptions. Don't be afraid to back to first principles
2. Verify what you think you know about the problem
3. Every big problem can be solved by breaking it down into a series of smaller problems
4. Start small. Use the knowledge you have to acquire the knowledge you need.
5. Seek progress, not perfection
6. Ensure your tools are up to the job
7. Perform small experiments to expand your knowledge
8. Do we still care about this problem? Verify that the problem still needs to be solved.
9. Frame the things that you don't know into a question.
"How might we achieve <blank> when we have <blank> restrictions."
10. Always see to produce something that works. So that you learn more about the problem.
11. Aim for a simple and elegant solution with the minimal number of components and remove unnecessary clutter
12. Make incremental improvements. When you know better do better.
13. Clarify the problem in mind by explaining it in simple language to a layman
14. Don't be afraid to seek help
15. Don't ignore your gut instincts
16. Collaborate fully and enthusiastically. But don't be afraid to state any reservation.
17. Can the problem be solved by; Replacing it. Ignoring it. Reordering the process. Avoiding it. Ignoring it.
18. Don't multitask. Solve one problem at a time.
19. Understand the human motivation for the resolution of the problem
20. Seek to solve the root cause and not the symptoms