A Pragmatic Approach To Solving Problems
During your career you may encounter a problem that you’ve never tackled before, and have no idea how to kickstart a solution. This is a quick and pragmatic guide to help you get started, inspired by my experience as a software developer and project manager.
First define the problem
Understanding what you are up against is the first step. To help you with this, try explaining it to others. Start by writing down the problem as clearly as possible, while always thinking of how others will understand it. This alone can challenge you quite a bit. Now test it out. Try explaining it to others in verbal form, or share the document with them. The feedback you receive should give good indication on how well you understand the problem, and will shed light on knowledge you are missing. If you have a grandiose problem you can’t seem to define clearly, try to ease it. It may contain multiple issues that needn’t all be solved at the moment. Divide and conquer.
Search for existing solutions
Once you understand the problem, look for existing solutions. It is OK if they are not perfect, you can almost always improve on them. If you find something, first find out why it is not being used, and make sure you get an honest answer. For example, the reason “it was too much work to maintain” is honest, clear, and contains a problem that is most likely solvable. If you can’t seem to find one, search deeper. Use social media, google, and ask friends and colleagues. It is important that your desire to create a solution of your own, or fear of finding an existing solution, doesn’t cloud your judgment here. Be pragmatic and professional about your search, and always imagine you have to convince people at least as smart as you are in your findings. So do the best you can. The best you can is good enough.
Crowd source for solutions
If you come up empty from this search, you could crowd source the problem. Why work hard when someone can do it faster and perhaps even better? Ask some smart people around you how they would have tackled it. As the depth of your search increases, so do your chances of finding a match. Don’t let ego halt you from asking people you value their opinion less — solving the problem the best you can is all that matters. You could also gather some smart people in a room and run a good-old-fashioned brainstorming session, and iteratively simplify the problem until the minimal requirements are met.
Test out a solution as early and as often as possible
At each step, testing your findings as soon as possible is crucial. When you test you get feedback. This feedback will help you to understand the problem better and will also make your next steps much clearer. This is especially true when one is encountering a problem for the first time. It will focus and motivate you, because to test something, you need to create something. So test early, and test often.
You’re alone. Quit or Continue?
It is rare to find a problem that has no previous work or knowledge, so verify again that this is indeed what you’re up against. It’s OK to drop it for the time being, but save yourself and others time by documenting your findings incase it is revisited. It’s also OK to move forward even if you don’t have to have all the answers right now. Start with the smallest things and work your way up, gain momentum before you go all in. And always remember, all your solution needs to be (for now) is good enough, and the sooner you acknowledge it, the better. Good luck.