Tips and Motivation to Master Problem Solving

We all want to develop problem-solving skills in math, programming, computer science, data structures and algorithms, and other fields. But as we move forward, we may face various challenges and barriers. Sometimes we handle these situations smartly, but sometime we may get stuck. In this blog, I will present solutions and motivation to tackle some of these scenarios in problem solving. Let’s begin step by step.

Sometimes, we don’t know much about the problem and quickly suggest a solution. So habits of proposing or accepting such solutions can create a long-term problem in our ability to solve problems!

Such habits can develop blind spots in our problem-solving ability. We may start to rely on quick fixes rather than taking time to analyze the problem and develop comprehensive solutions. Over time, this can cause us to overlook important details or root causes of errors.

On the other hand, sometimes we lose patience early in the problem-solving. For example, after trying a problem for only 5 minutes, we may begin to think, “I will not be able to find a solution.” But staying with the problem longer is more effective. The fact is: Sometimes problems come with their own complexity, which requires patience, observation, and simplification.

If a 1-hour time limit is set for finding a solution, we need to develop a mindset to use that time wisely. As we move forward with an analytical focus, the probability of success will increase. We may get an idea for a solution at the end of 5 minutes, 15 minutes, 25 minutes, or some other time.

Problem solving is just like driving a Vehicle!

Sometimes, we are very close to getting the correct solution. But suddenly, we shift our focus to the wrong detail and deviate from the approach. Here are couple of ideas on how to handle such situations:

• Note every relevant detail (or step) and backtrack to the point of deviation. This approach is similar to steering a vehicle and returning to the correct track. By retracing your steps, you can identify where you went wrong and get back on track.
• Another idea is to learn from such failures while practicing problem-solving. By doing so, you can create a roadmap of similar situations and make smarter decisions in the future.

Solving a problem is much like driving a vehicle to a destination within a given time frame. If you have good driving experience, control over your driving tools, and an accurate map, handling any wrong deviation will be much easier.

Learn from failures and never give up!

Learning problem-solving is an art of continuous practice by using patience, experience, and knowledge. We should never lose faith in ourselves and keep trying until we find a solution in the given time!

Whenever a thought comes to our mind to give-up a problem, we should motivate ourselves, recollect all experiences and give one more best try! Such situations can be one of the defining moments. The fact is: mastering problem-solving is an iterative journey of learning from failures!

Solving 100 problems with proper planning and in-depth understanding is much better than solving 1000 problems with no planning and poor understanding.

You may have observed some learners who focus on solving a lot of problems in a hurry to improve their problem-solving skills. Still, they don’t feel confident approaching new problems. Why does this happen? The idea is simple: During this process, they miss the reason behind underlying concept and develop a habit of memorization.

There is no limit to the number of problems you can solve, but you need to follow a proper strategy for each problem. By understanding the concepts behind approaches, you can avoid making the same mistakes repeatedly, identify common patterns, and apply appropriate solutions to different problems.

Always prepare your note to revise later

We all desire to keep problem-solving ideas in our memory for a long time, but sometimes we forget due to lack of application or other reasons. Later, when we need them, we have to start from scratch again.

To avoid such situations, one idea would be to write a simple note on paper whenever we explore a new idea for the first time. This requires patience and discipline, but it is worth in the long term.

When you look at these well-written notes later, it can provide a huge relief. It gives you an opportunity to build new ideas based on your previous work rather than starting from scratch. However, it is important to note that 80% of these notes may contain ideas about what not to do.

Trust yourself and never underestimate yourself!

Sometimes failures in problem-solving occur when we underestimate our abilities and experiences. The idea is simple: We should never ever underestimate ourselves!

As we know, confidence about our past experiences and knowledge have a significant impact on our ability to solve problems. But some programmers often underestimate themselves due to lack of confidence, fear of failure or the assumption that someone else knows better.

Underestimating ourselves can hinder our ability to think critically and creatively, make us hesitant to take risks, and impact our problem-solving efficiency. On the other hand, when we believe in our abilities and experiences, we can approach problems with a positive attitude, make bold decisions, and take the necessary steps to solve it. We are more likely to be open to new ideas and solutions, which can lead to more effective and innovative problem-solving.

Overcoming fear is a key step in achieving success

We mostly encounter two situations of fear in problem-solving:

• Just after looking at the problem
• In the process of designing the solution

The first type primarily occurs when the problem is totally new to us or when there is a little complex problem statement. One simple solution would be: Rather than overthinking, spend a little extra time in understanding the problem, extracting relevant details, and simplifying it. Of course, a good understanding of concepts works as a catalyst.

The second type is primarily due to the realization of an incorrect approach or inability to identify the next step. One simple solution would be: Gather all experiences and patterns of problem-solving, go back and forth, draw a simple picture of followed steps, and check: Are we moving in the right direction? Are we missing some details? What is the specific point where the error is happening? Do we need to switch to another approach?

Most important thing: Fear is just a current state of mind, nothing more! We should keep faith in our experiences, motivate ourselves and keep trying to get it done!

Think like a sport person to continue practice

The one basic rule of problem-solving: Keeping the distraction aside and developing a desire to get an efficient solution!

As we define the current form of a player in a sport, we can also define the current form of a person in problem-solving. So we should do a continuous practice like a sports person to achieve the best form! The best idea is: We should not bother about ups and downs. It’s a part of the journey, and focusing on the next ability level would be the best strategy!

Practice universal principles of problem solving

When presented with a problem — whether it is an algorithmic problem or a real-life problem, how do we solve it? Sharing here the five common strategies where different strategies have different action plans.

• Trial and Error: Continue trying different solutions until the problem is solved.
• Algorithmic problem solving: Step-by-step instruction used to achieve the desired outcome.
• Problem solving using heuristic: A mental shortcuts that are used to solve problems — a “rule of thumb” is a good example.
• Working backward: A helpful idea to begin solving the problem by focusing on the end result.
• Breaking problem into a series of smaller steps: We often use this method to complete a large research project or solve complex problem.

Track and monitor progress

Why is preparing a weekly execution note important? There could be several reasons, but the best idea is that it helps us track progress and formulate future strategies. Let’s understand from another perspective.

• How do you explain your progress in the last six days and six months?
• What is your plan for the coming six days and six months?

If you are not clear about the answers, then one thing is lacking — a strategy! We all have validated learnings at all stages of life, but our mind has one limitation — a habit of forgetting things as time passes.

Sometimes, we even make the same mistakes or solve the same problems again, which is an inefficient approach. So, the best long-term solution would be to write weekly execution notes and store the validated learnings. This is just like a dynamic programming approach of storing ideas in a cache or memory.

Practice focus and collaboration

Why are some people efficient in learning? For example, one person takes two months to learn something, another person takes two years, and there is a person who struggles to understand it in a lifetime. What are the differences in their approach? It is about two things — focus and collaboration.

• A person with good focus and good collaboration learns quickly.
• A person with good focus and poor collaboration learns at an average speed.
• A person with poor focus and poor collaboration learns slowly or struggles to learn it in a lifetime.

Focus is necessary for learning, but collaboration helps us understand other people’s experiences, avoid mistakes, and find solutions quickly.

Final conclusion and motivation!

• Understand and visualize the problem clearly.
• Use experiences, hypotheses, heuristics, and patterns.
• Do in-depth research about concepts.
• Try to break the problem into smaller problems or develop a step-by-step process to solve it efficiently.
• Think of solutions using multiple approaches!
• Take care of various edge cases and boundary conditions.
• Reach out to an expert or mentor if you get stuck.
• Note down critical steps that are working as a barrier towards the solution on a personal note.
• Refresh your perspective and try again later.
• Practice flexibility and avoid rigidity!
• Try to understand the reason; never memorize!
• Errors and mistakes are a part of continuous learning!
• Collaborate, exchange ideas, and keep ego aside!

Enjoy learning, Enjoy coding, enjoy problem solving :)

☆ 16-Week Live DSA Course
☆ 10-Week Live DSA Course