Solving problems the right way
Our life is a construct of challenging problems which we face on a day to day basis. How we do in life depends on who solves the problem, how it is solved and when it is solved. As you might already know, there are various ways to solve problems but there is always a path towards solving it and if you get that right, any problem can be solved. That is exactly what I am going to discuss here with you all.
The approach discussed applies in every aspect of life and is not necessarily oriented towards a single domain.
Understanding the problem statement
The first major step towards solving a problem is understanding the problem statement given to you well and good even before you start working on it. Get to know the facts, what you have, what you are expected to do, how the output would look like, and what are the constraints you are provided with.
So, what should you do to understand the problem statement well? There is only one way.
Question yourself about the problem till you are satisfied with the facts.
What it is, and what it is not
To understand the problem statement better, you must be able to understand what you are not expected to do in addition to what you are asked to solve. This will set the goals straight and clear and eliminate all the unnecessary activities and strengthen your probability for success in solving the problem.
Every single problem would have constraints. In fact, that is why it is called as a “problem”. You have to make sure that you understand the constraints properly, note it down and make sure you satisfy all of them in the closest possible way.
Flow chart — Breaking it down
You must be able to figure out the flow towards solving the problem and understand what the various steps are. I always prefer the black-box model for this. Understand the input and what the expected output would be for the flow and each step towards it.
The output of every problem in life is always a function of the input. All you have to do is, figure out what the function is and clearly understand the various parameters which affect the function.
The Optimised Solution
Often times, you may not be expected to just solve the problem but do it an optimised way given the various inputs and constraints. There are only a few ways to get this right.
- Practice/Trial & Error (Experience) — Repeatedly solving a problem gives insight into other ways that you might be able to solve it.
- Research — Understand how others have solved similar problems and see if their solution can inspire you to improve on what you have done so far.
- Optimising every stage — Since your final solution can be comprised of various stages/steps towards the solution, trying to optimise every step towards the solution can sometimes help in optimising the overall solution.
- Never settle — Never settle for a solution. There might always be a better way to solve the same.
Tracing it back
Sometimes, tracing back the problem statement from the solution would help in validating your approach since your mind gives you more room to think better.
Assumptions, Hasty decisions and Wrong conclusions
Never assume anything unless absolutely necessary. All it takes is one use case to prove your assumption completely wrong leading to you having to solve the entire problem again.
Hasty decisions and wrong conclusions in the interest of time can also lead to bad results since it might yield bad results in the long run. So, make sure that you validate your solution well before settling on it.
The feedback loop
Sometimes, feedback does really help. Try to get the problem solved, and keep the feedback loop open and you can iterate on it gradually yourself and as and when people practically use it. Its often difficult to understand and arrive at all constraints and factors before hand. So, you must make sure that you keep your solution adaptable to change. And, this is what is called as being Agile in software development world.
Believe in data
While believing in yourself is always good, it is always important to believe in data more since they represent the actual facts on the grounded reality. Analyse the data you have and see how well your solution performs in various scenarios, use it as a feedback loop and adapt your solution accordingly.
Also, you have to understand that you are not always expected to solve everything for every scenario in the world. So, understand where to stop.
In summary, I would say that your mind should be like an empty teacup to solve problems since you need to be open to the various possibilities and approach towards problem solving whatever the domain you are in.