Advisory boards aren’t only for executives. Join the LogRocket Content Advisory Board today →

LogRocket blog logo

  • Product Management
  • Solve User-Reported Issues
  • Find Issues Faster
  • Optimize Conversion and Adoption

A guide to problem-solving techniques, steps, and skills

how to get better at problem solving reddit

You might associate problem-solving with the math exercises that a seven-year-old would do at school. But problem-solving isn’t just about math — it’s a crucial skill that helps everyone make better decisions in everyday life or work.

A guide to problem-solving techniques, steps, and skills

Problem-solving involves finding effective solutions to address complex challenges, in any context they may arise.

Unfortunately, structured and systematic problem-solving methods aren’t commonly taught. Instead, when solving a problem, PMs tend to rely heavily on intuition. While for simple issues this might work well, solving a complex problem with a straightforward solution is often ineffective and can even create more problems.

In this article, you’ll learn a framework for approaching problem-solving, alongside how you can improve your problem-solving skills.

The 7 steps to problem-solving

When it comes to problem-solving there are seven key steps that you should follow: define the problem, disaggregate, prioritize problem branches, create an analysis plan, conduct analysis, synthesis, and communication.

1. Define the problem

Problem-solving begins with a clear understanding of the issue at hand. Without a well-defined problem statement, confusion and misunderstandings can hinder progress. It’s crucial to ensure that the problem statement is outcome-focused, specific, measurable whenever possible, and time-bound.

Additionally, aligning the problem definition with relevant stakeholders and decision-makers is essential to ensure efforts are directed towards addressing the actual problem rather than side issues.

2. Disaggregate

Complex issues often require deeper analysis. Instead of tackling the entire problem at once, the next step is to break it down into smaller, more manageable components.

Various types of logic trees (also known as issue trees or decision trees) can be used to break down the problem. At each stage where new branches are created, it’s important for them to be “MECE” – mutually exclusive and collectively exhaustive. This process of breaking down continues until manageable components are identified, allowing for individual examination.

The decomposition of the problem demands looking at the problem from various perspectives. That is why collaboration within a team often yields more valuable results, as diverse viewpoints lead to a richer pool of ideas and solutions.

3. Prioritize problem branches

The next step involves prioritization. Not all branches of the problem tree have the same impact, so it’s important to understand the significance of each and focus attention on the most impactful areas. Prioritizing helps streamline efforts and minimize the time required to solve the problem.

how to get better at problem solving reddit

Over 200k developers and product managers use LogRocket to create better digital experiences

how to get better at problem solving reddit

4. Create an analysis plan

For prioritized components, you may need to conduct in-depth analysis. Before proceeding, a work plan is created for data gathering and analysis. If work is conducted within a team, having a plan provides guidance on what needs to be achieved, who is responsible for which tasks, and the timelines involved.

5. Conduct analysis

Data gathering and analysis are central to the problem-solving process. It’s a good practice to set time limits for this phase to prevent excessive time spent on perfecting details. You can employ heuristics and rule-of-thumb reasoning to improve efficiency and direct efforts towards the most impactful work.

6. Synthesis

After each individual branch component has been researched, the problem isn’t solved yet. The next step is synthesizing the data logically to address the initial question. The synthesis process and the logical relationship between the individual branch results depend on the logic tree used.

7. Communication

The last step is communicating the story and the solution of the problem to the stakeholders and decision-makers. Clear effective communication is necessary to build trust in the solution and facilitates understanding among all parties involved. It ensures that stakeholders grasp the intricacies of the problem and the proposed solution, leading to informed decision-making.

Exploring problem-solving in various contexts

While problem-solving has traditionally been associated with fields like engineering and science, today it has become a fundamental skill for individuals across all professions. In fact, problem-solving consistently ranks as one of the top skills required by employers.

Problem-solving techniques can be applied in diverse contexts:

  • Individuals — What career path should I choose? Where should I live? These are examples of simple and common personal challenges that require effective problem-solving skills
  • Organizations — Businesses also face many decisions that are not trivial to answer. Should we expand into new markets this year? How can we enhance the quality of our product development? Will our office accommodate the upcoming year’s growth in terms of capacity?
  • Societal issues — The biggest world challenges are also complex problems that can be addressed with the same technique. How can we minimize the impact of climate change? How do we fight cancer?

Despite the variation in domains and contexts, the fundamental approach to solving these questions remains the same. It starts with gaining a clear understanding of the problem, followed by decomposition, conducting analysis of the decomposed branches, and synthesizing it into a result that answers the initial problem.

Real-world examples of problem-solving

Let’s now explore some examples where we can apply the problem solving framework.

Problem: In the production of electronic devices, you observe an increasing number of defects. How can you reduce the error rate and improve the quality?

Electric Devices

Before delving into analysis, you can deprioritize branches that you already have information for or ones you deem less important. For instance, while transportation delays may occur, the resulting material degradation is likely negligible. For other branches, additional research and data gathering may be necessary.

Once results are obtained, synthesis is crucial to address the core question: How can you decrease the defect rate?

While all factors listed may play a role, their significance varies. Your task is to prioritize effectively. Through data analysis, you may discover that altering the equipment would bring the most substantial positive outcome. However, executing a solution isn’t always straightforward. In prioritizing, you should consider both the potential impact and the level of effort needed for implementation.

By evaluating impact and effort, you can systematically prioritize areas for improvement, focusing on those with high impact and requiring minimal effort to address. This approach ensures efficient allocation of resources towards improvements that offer the greatest return on investment.

Problem : What should be my next job role?

Next Job

When breaking down this problem, you need to consider various factors that are important for your future happiness in the role. This includes aspects like the company culture, our interest in the work itself, and the lifestyle that you can afford with the role.

However, not all factors carry the same weight for us. To make sense of the results, we can assign a weight factor to each branch. For instance, passion for the job role may have a weight factor of 1, while interest in the industry may have a weight factor of 0.5, because that is less important for you.

By applying these weights to a specific role and summing the values, you can have an estimate of how suitable that role is for you. Moreover, you can compare two roles and make an informed decision based on these weighted indicators.

Key problem-solving skills

This framework provides the foundation and guidance needed to effectively solve problems. However, successfully applying this framework requires the following:

  • Creativity — During the decomposition phase, it’s essential to approach the problem from various perspectives and think outside the box to generate innovative ideas for breaking down the problem tree
  • Decision-making — Throughout the process, decisions must be made, even when full confidence is lacking. Employing rules of thumb to simplify analysis or selecting one tree cut over another requires decisiveness and comfort with choices made
  • Analytical skills — Analytical and research skills are necessary for the phase following decomposition, involving data gathering and analysis on selected tree branches
  • Teamwork — Collaboration and teamwork are crucial when working within a team setting. Solving problems effectively often requires collective effort and shared responsibility
  • Communication — Clear and structured communication is essential to convey the problem solution to stakeholders and decision-makers and build trust

How to enhance your problem-solving skills

Problem-solving requires practice and a certain mindset. The more you practice, the easier it becomes. Here are some strategies to enhance your skills:

  • Practice structured thinking in your daily life — Break down problems or questions into manageable parts. You don’t need to go through the entire problem-solving process and conduct detailed analysis. When conveying a message, simplify the conversation by breaking the message into smaller, more understandable segments
  • Regularly challenging yourself with games and puzzles — Solving puzzles, riddles, or strategy games can boost your problem-solving skills and cognitive agility.
  • Engage with individuals from diverse backgrounds and viewpoints — Conversing with people who offer different perspectives provides fresh insights and alternative solutions to problems. This boosts creativity and helps in approaching challenges from new angles

Final thoughts

Problem-solving extends far beyond mathematics or scientific fields; it’s a critical skill for making informed decisions in every area of life and work. The seven-step framework presented here provides a systematic approach to problem-solving, relevant across various domains.

Now, consider this: What’s one question currently on your mind? Grab a piece of paper and try to apply the problem-solving framework. You might uncover fresh insights you hadn’t considered before.

Featured image source: IconScout

LogRocket generates product insights that lead to meaningful action

Get your teams on the same page — try LogRocket today.

Share this:

  • Click to share on Twitter (Opens in new window)
  • Click to share on Reddit (Opens in new window)
  • Click to share on LinkedIn (Opens in new window)
  • Click to share on Facebook (Opens in new window)
  • #career development
  • #tools and resources

how to get better at problem solving reddit

Stop guessing about your digital experience with LogRocket

Recent posts:.

how to get better at problem solving reddit

Charting the product manager career path

The product management career path has opened up new opportunities for IC product managers and companies have begun hiring again.

how to get better at problem solving reddit

The PR/FAQ method for product innovation

The PR/FAQ (press release/frequently asked questions) helps you to envision and define a new product before it’s developed.

how to get better at problem solving reddit

Leader Spotlight: Transforming retail with GenAI, with Russell Goldman

Russell Goldman talks about the possibilities and challenges associated with bringing GenAI into a combined retail and software space.

how to get better at problem solving reddit

A guide to product-led marketing

Product-led marketing is a strategy that focuses on the product itself as the main driver of customer acquisition, conversion, and retention.

how to get better at problem solving reddit

Leave a Reply Cancel reply

loading

How it works

For Business

Join Mind Tools

Self-Assessment • 20 min read

How Good Is Your Problem Solving?

Use a systematic approach..

By the Mind Tools Content Team

how to get better at problem solving reddit

Good problem solving skills are fundamentally important if you're going to be successful in your career.

But problems are something that we don't particularly like.

They're time-consuming.

They muscle their way into already packed schedules.

They force us to think about an uncertain future.

And they never seem to go away!

That's why, when faced with problems, most of us try to eliminate them as quickly as possible. But have you ever chosen the easiest or most obvious solution – and then realized that you have entirely missed a much better solution? Or have you found yourself fixing just the symptoms of a problem, only for the situation to get much worse?

To be an effective problem-solver, you need to be systematic and logical in your approach. This quiz helps you assess your current approach to problem solving. By improving this, you'll make better overall decisions. And as you increase your confidence with solving problems, you'll be less likely to rush to the first solution – which may not necessarily be the best one.

Once you've completed the quiz, we'll direct you to tools and resources that can help you make the most of your problem-solving skills.

How Good Are You at Solving Problems?

Instructions.

For each statement, click the button in the column that best describes you. Please answer questions as you actually are (rather than how you think you should be), and don't worry if some questions seem to score in the 'wrong direction'. When you are finished, please click the 'Calculate My Total' button at the bottom of the test.

Answering these questions should have helped you recognize the key steps associated with effective problem solving.

This quiz is based on Dr Min Basadur's Simplexity Thinking problem-solving model. This eight-step process follows the circular pattern shown below, within which current problems are solved and new problems are identified on an ongoing basis. This assessment has not been validated and is intended for illustrative purposes only.

Below, we outline the tools and strategies you can use for each stage of the problem-solving process. Enjoy exploring these stages!

Step 1: Find the Problem (Questions 7, 12)

Some problems are very obvious, however others are not so easily identified. As part of an effective problem-solving process, you need to look actively for problems – even when things seem to be running fine. Proactive problem solving helps you avoid emergencies and allows you to be calm and in control when issues arise.

These techniques can help you do this:

PEST Analysis helps you pick up changes to your environment that you should be paying attention to. Make sure too that you're watching changes in customer needs and market dynamics, and that you're monitoring trends that are relevant to your industry.

Risk Analysis helps you identify significant business risks.

Failure Modes and Effects Analysis helps you identify possible points of failure in your business process, so that you can fix these before problems arise.

After Action Reviews help you scan recent performance to identify things that can be done better in the future.

Where you have several problems to solve, our articles on Prioritization and Pareto Analysis help you think about which ones you should focus on first.

Step 2: Find the Facts (Questions 10, 14)

After identifying a potential problem, you need information. What factors contribute to the problem? Who is involved with it? What solutions have been tried before? What do others think about the problem?

If you move forward to find a solution too quickly, you risk relying on imperfect information that's based on assumptions and limited perspectives, so make sure that you research the problem thoroughly.

Step 3: Define the Problem (Questions 3, 9)

Now that you understand the problem, define it clearly and completely. Writing a clear problem definition forces you to establish specific boundaries for the problem. This keeps the scope from growing too large, and it helps you stay focused on the main issues.

A great tool to use at this stage is CATWOE . With this process, you analyze potential problems by looking at them from six perspectives, those of its Customers; Actors (people within the organization); the Transformation, or business process; the World-view, or top-down view of what's going on; the Owner; and the wider organizational Environment. By looking at a situation from these perspectives, you can open your mind and come to a much sharper and more comprehensive definition of the problem.

Cause and Effect Analysis is another good tool to use here, as it helps you think about the many different factors that can contribute to a problem. This helps you separate the symptoms of a problem from its fundamental causes.

Step 4: Find Ideas (Questions 4, 13)

With a clear problem definition, start generating ideas for a solution. The key here is to be flexible in the way you approach a problem. You want to be able to see it from as many perspectives as possible. Looking for patterns or common elements in different parts of the problem can sometimes help. You can also use metaphors and analogies to help analyze the problem, discover similarities to other issues, and think of solutions based on those similarities.

Traditional brainstorming and reverse brainstorming are very useful here. By taking the time to generate a range of creative solutions to the problem, you'll significantly increase the likelihood that you'll find the best possible solution, not just a semi-adequate one. Where appropriate, involve people with different viewpoints to expand the volume of ideas generated.

Tip: Don't evaluate your ideas until step 5. If you do, this will limit your creativity at too early a stage.

Step 5: Select and Evaluate (Questions 6, 15)

After finding ideas, you'll have many options that must be evaluated. It's tempting at this stage to charge in and start discarding ideas immediately. However, if you do this without first determining the criteria for a good solution, you risk rejecting an alternative that has real potential.

Decide what elements are needed for a realistic and practical solution, and think about the criteria you'll use to choose between potential solutions.

Paired Comparison Analysis , Decision Matrix Analysis and Risk Analysis are useful techniques here, as are many of the specialist resources available within our Decision-Making section . Enjoy exploring these!

Step 6: Plan (Questions 1, 16)

You might think that choosing a solution is the end of a problem-solving process. In fact, it's simply the start of the next phase in problem solving: implementation. This involves lots of planning and preparation. If you haven't already developed a full Risk Analysis in the evaluation phase, do so now. It's important to know what to be prepared for as you begin to roll out your proposed solution.

The type of planning that you need to do depends on the size of the implementation project that you need to set up. For small projects, all you'll often need are Action Plans that outline who will do what, when, and how. Larger projects need more sophisticated approaches – you'll find out more about these in the article What is Project Management? And for projects that affect many other people, you'll need to think about Change Management as well.

Here, it can be useful to conduct an Impact Analysis to help you identify potential resistance as well as alert you to problems you may not have anticipated. Force Field Analysis will also help you uncover the various pressures for and against your proposed solution. Once you've done the detailed planning, it can also be useful at this stage to make a final Go/No-Go Decision , making sure that it's actually worth going ahead with the selected option.

Step 7: Sell the Idea (Questions 5, 8)

As part of the planning process, you must convince other stakeholders that your solution is the best one. You'll likely meet with resistance, so before you try to “sell” your idea, make sure you've considered all the consequences.

As you begin communicating your plan, listen to what people say, and make changes as necessary. The better the overall solution meets everyone's needs, the greater its positive impact will be! For more tips on selling your idea, read our article on Creating a Value Proposition and use our Sell Your Idea Skillbook.

Step 8: Act (Questions 2, 11)

Finally, once you've convinced your key stakeholders that your proposed solution is worth running with, you can move on to the implementation stage. This is the exciting and rewarding part of problem solving, which makes the whole process seem worthwhile.

This action stage is an end, but it's also a beginning: once you've completed your implementation, it's time to move into the next cycle of problem solving by returning to the scanning stage. By doing this, you'll continue improving your organization as you move into the future.

Problem solving is an exceptionally important workplace skill.

Being a competent and confident problem solver will create many opportunities for you. By using a well-developed model like Simplexity Thinking for solving problems, you can approach the process systematically, and be comfortable that the decisions you make are solid.

Given the unpredictable nature of problems, it's very reassuring to know that, by following a structured plan, you've done everything you can to resolve the problem to the best of your ability.

This assessment has not been validated and is intended for illustrative purposes only. It is just one of many Mind Tool quizzes that can help you to evaluate your abilities in a wide range of important career skills.

If you want to reproduce this quiz, you can purchase downloadable copies in our Store .

You've accessed 1 of your 2 free resources.

Get unlimited access

Discover more content

4 logical fallacies.

Avoid Common Types of Faulty Reasoning

Problem Solving

How to solve problems using the Cause and Effect Analysis technique

Add comment

Comments (2)

Afkar Hashmi

😇 This tool is very useful for me.

over 1 year

Very impactful

how to get better at problem solving reddit

Gain essential management and leadership skills

Busy schedule? No problem. Learn anytime, anywhere. 

Subscribe to unlimited access to meticulously researched, evidence-based resources.

Join today and save on an annual membership!

Sign-up to our newsletter

Subscribing to the Mind Tools newsletter will keep you up-to-date with our latest updates and newest resources.

Subscribe now

Business Skills

Personal Development

Leadership and Management

Member Extras

Most Popular

Latest Updates

Article a14fj8p

Better Public Speaking

Article aaahre6

How to Build Confidence in Others

Mind Tools Store

About Mind Tools Content

Discover something new today

How to create psychological safety at work.

Speaking up without fear

How to Guides

Pain Points Podcast - Presentations Pt 1

How do you get better at presenting?

How Emotionally Intelligent Are You?

Boosting Your People Skills

Self-Assessment

What's Your Leadership Style?

Learn About the Strengths and Weaknesses of the Way You Like to Lead

Recommended for you

Dealing with manipulative people.

Standing Your Ground

Business Operations and Process Management

Strategy Tools

Customer Service

Business Ethics and Values

Handling Information and Data

Project Management

Knowledge Management

Self-Development and Goal Setting

Time Management

Presentation Skills

Learning Skills

Career Skills

Communication Skills

Negotiation, Persuasion and Influence

Working With Others

Difficult Conversations

Creativity Tools

Self-Management

Work-Life Balance

Stress Management and Wellbeing

Coaching and Mentoring

Change Management

Team Management

Managing Conflict

Delegation and Empowerment

Performance Management

Leadership Skills

Developing Your Team

Talent Management

Decision Making

Member Podcast

  • How to Practice LeetCode Problems (The Right Way)

Woman working at home

tl;dr: You’re doing it wrong. Use “The Six Steps” any time you practice LeetCode questions, preferably with another person. Keep an interview prep journal to track your progress.

The struggle is real

Have you been tackling LeetCode problems but don’t feel like you’re actually getting better in interviews? Feel like you’re able to come up with solutions but never make it to the optimal one? Do you keep running out of time before you can finish the question? Are you constantly having a tough time making it through difficult questions?

As a former Google software engineer and now career and interview coach, many of my clients have had this problem over the years. And if you were my client, I’d tell you that the problem isn’t that you’re not smart enough. Nor is it that you’re not working hard enough.

You’re probably practicing wrong.

Maybe you’ve been  working through the Blind 75 . Or maybe you’re just using example problems from Cracking the Coding Interview . You can pull questions from wherever you want, I don’t care. If you’re using the wrong strategy, it’s not gonna help you very much, no matter how many questions you practice.

Anyone who’s done weightlifting in the gym knows that good form and flexibility are essential. Those elements are necessary for getting the most out of your workout. Similarly, you need to practice good problem solving techniques when you’re doing LeetCode questions so that you’re maximizing the time you spend.

Keeping the real interview in mind

Many of you practice LeetCode problems incorrectly because you may be unfamiliar with how technical interviews work in real life. Let’s break that down real quick.

More than anything else, you need to understand that technical interviewing is a collaborative problem-solving exercise . The real interview won’t be you working through a LeetCode question by yourself. You’re going to be talking to a real human being. That’s important to state because, if you’re practicing by yourself, you probably aren’t thinking about the fact that you need to communicate out loud to another person and ask questions.

The biggest weakness with LeetCode problems is that there’s no human involved outside of yourself. The question needs to provide every detail necessary for you to solve the problem up front. In a real interview, your interviewer is probably going to hold back some information to see how you deal with ambiguity. In other words, they want to know if you’re going to ask questions or not.

Also, a LeetCode question can’t give you hints if you’re headed in the wrong direction. It can’t give you feedback on whether your approach is sound or not. All of this matters because your interviewer is going to assess how you handle feedback. If I, as your interviewer, ask you about whether you can optimize your solution, I’m going to expect something better than “I don’t know.”

Oh, and by the way, your interviewer isn’t obligated to provide you with examples or test cases. Some may do it to be helpful, and that’s great. But if you’re used to having all of that provided for you in your LeetCode questions, then you’re going to have a hard time in the real interview coming up with good examples and test cases.

A better way

With the necessary context established, let’s talk about how I think you should properly study example questions. The following strategy is what I used to ensure I got the most mileage out of every interview question. These steps will show how I applied my own problem solving framework (I call them “The Six Steps” ) to practice interview questions.

1) Grab something to code on (not an IDE)

Before you begin, make sure that you are set up correctly for your mock interview. You may choose to write out code using a whiteboard, pencil and paper, or using a computer and a text editor or lightweight code editor like Notepad++ or TextPad. Try to avoid using a full-on IDE since they will often include features that you’re not likely to get in a real coding interview.

If you’re working with a mock interviewer, make sure to choose something that they’ll also be able to see and edit.

2) Decide whether to practice with a mock interviewer (strongly recommended) or by yourself

The best way to practice a LeetCode question is with another person who will assess you as an interviewer. Now this is going to come as a shock, but they don’t necessarily need to be a coder! Having a fellow software engineer or developer is ideal of course, but the important thing is finding someone that you can talk to and that can give you feedback. When studying for the Google interview, I relied on my wife who is definitely not technical but provided great feedback on my presence and demeanor.

Of course, there will be times when you will need to study alone and that’s fine. It will be essential for you to keep yourself accountable by not giving yourself more than a mock interviewer would in a real interview.

Oh, and whoever you work with, show them some thanks and appreciation. There’s always something you can do to compensate them for their time, whether with money, coffee, a public acknowledgement, or a gift card.

3) Start the clock

Most interviews are timed for 45-60 minutes. Decide what length of time you’re going to spend doing your mock interview based upon what you can expect for the real thing. Remember, you want to keep things as realistic as possible. Once your time is up, stop working. It’s important to train yourself to work well within time constraints.

One caveat here is that if you’re early into your interview prep journey, you may want to just benchmark yourself a few times to see how well you perform. You’ll still want to time yourself, but don’t stop by a specific time. Keep going until you reach an optimal solution or can’t think of anything else to do.

4) Articulate the problem

Your mock interviewer will begin by reading the question out loud. Under no circumstances during the whole interview are you to look at the sample question, examples, or constraints. Depend completely on your mock interviewer for any information you will need to solve the problem. This is why it is absolutely essential that you take notes as your interviewer is speaking so that you don’t have to ask them repeatedly for information they’ve already revealed.

To ensure you’ve heard the question correctly and that you’ve captured all the details, repeat the question back to your interviewer in your own words. If you’ve missed any details or added something unnecessary, your mock interviewer should let you know before proceeding.

If you’re practicing on your own, read the question out loud exactly one time along with the example. Once done, hide the question from view and then repeat the question in your own words as though you were actually talking to a real person. Take notes, but avoid writing the full problem statement out. Focus on short statements that help you remember the key parts of the problem you’re solving.

5) Ask questions and confirm assumptions

Here’s a handy tip for any interview. Always ask questions as the interviewee. Even if you think you know everything about how to solve a problem, and even if you’ve solved it before—still ask questions. Here are some questions you can ask for nearly any technical question:

  • What’s the data type of the input and range of valid data?
  • Does the input fit in memory?
  • Can I expect to receive invalid data?
  • How will input data be provided?
  • Is the input data sorted already?

Remember, you should avoid asking questions that already have answers in the problem statement itself. It is important and encouraged, however, to re-state your assumptions in the hearing of your interviewer based on your understanding of the problem. For instance, if the problem mentions sorting whole numbers, you might assume that you’re going to be sorting 32-bit signed integers. State that assumption clearly or ask if that’s the case. The problem might actually require you to sort values that fit in a short integer, thus allowing you to save space (or a long 64-bit integer, which would obviously require more).

If you’re practicing alone or if  you’re working with someone non-technical, you won’t have someone to answer your questions. Once you’ve documented all your questions and assumptions, you can peek at the LeetCode constraints at this point and write down the answers.

Again, try not to do a lot of writing. Prefer the least number of words needed to capture the essentials so you don’t have to keep details in your head.

6) Come up with example inputs and their outputs

At this point, you should begin working through examples. Two things are important at this step. One, look through any examples provided for you and reverse engineer them to figure out what details they reveal about the problem or its constraints. Two, add a couple of your own examples to demonstrate your understanding of those constraints or to prompt more questions. A way to think of examples is to treat them like test cases. Read up on test driven development (TDD) and unit testing as part of your interview prep if you habitually struggle to come up with good test cases.

A note to the mock interviewer. If the interviewee comes up with an example that violates constraints, let them know immediately. You are obligated to inform or remind them of the constraints in this case since this information may be critical to their being able to solve the problem.

Again, if you’re studying alone then you won’t have someone who can give you feedback on your examples. That’s OK. Still come up with examples and make best-guess assumptions to any unanswered questions you may generate at this step. LeetCode questions are generally specific enough that this shouldn’t be hard to do.

7) Brainstorm solutions and estimate their Big-O

You should now have enough information to start coming up with solutions to the problem. This is where the rubber meets the road. All of your studying of algorithms and data structures should amply prepare you for generating two or three viable ways to solve the problem. If you struggle a lot at this step, hit the books. You’ve got more learning to do.

The first step to good brainstorming is making a good guess about what the optimal solution looks like as expressed in Big-O. Is it possible that a constant time and constant space solution could exist? Why not? How about a logarithmic solution that ‘s O(lg n)? Remember, you’re always driving towards an optimal solution.

As an example, if I need to sort an array, I’m pretty sure that I can’t do any better than a O(n) time complexity and O(1) space complexity in the worst case. I claim linear time complexity because I’ll probably have to look at every element of input at least once, and I claim constant space because some sorts move elements in place so that I don’t need to use a separate data structure.

Once you think you know the ideal, the next step to good brainstorming is coming up with solutions and predicting their time and space complexity. Note that your first solution is probably going to be a brute force approach that is less than ideal. It also might also be the only solution you can come up with quickly. That’s OK! If that’s all you are able to come up with after a couple of minutes, just move on and go with it. But take the time to try to think about what you can do to get closer to the ideal, optimal solution.

A couple of principles can be helpful here:

  • You usually have to use more space (memory) to make something go faster (and vice-versa), so if you’re optimizing for speed, you probably need to use a data structure.
  • If your task is to build a new data structure, you are likely going to need to put two data structures together that complement each other. That means that in your studying, you should strive to know the strengths and weaknesses of each data structure and what problems they are designed to solve.

Again, take only short notes of your approach along with the expected time and space complexity. Do the estimation up front, even if you aren’t exactly sure! This can help you navigate your way through potential optimizations before you write the first line of code. You might find that a more optimal solution is just as easy, if not easier, to implement than the initial one you devised.

One last thing. You’re going to have to choose a solution to start implementing in the next step. It is OK for you to get input from your interviewer about which one they’d prefer to see you implement. It’s also fine for you to implement the easiest one first and then write an optimal version after that. Hopefully, you can find a great mock interviewer who will provide you with good guidance here.

8) Implement a solution

Now comes the easiest part of the experience. If you don’t find this to be the easiest, then you need to spend more time practicing writing out code. There’s a practical reason why I say this. You want to spend the least amount of time in this step so that you can devote more time to the others. It’s like the old proverb says: “measure twice, cut once.”

Because you are on an artificially constrained, time-boxed schedule, you should also avoid writing in pseudocode. In real life interviews, pseudocode generally doesn’t count. That means you’ll have to turn all your fake code into real code for it to be assessed properly. Instead of pseudocoding, I suggest you make small notes about your proposed algorithm instead of writing out fake code since that will probably be faster and provide the same utility.

Again, we’re talking about coding interviews primarily used by the big tech companies. If you can pseudocode on a take home assignment and make the deadline, go for it! But at the big tech level, I assure you that writing code will be the easiest part of the job. Understanding the work you need to do and vetting your design will probably be the bulk of what makes your job challenging.

  • Say what you’re going to do before you write the code, then write the code. Don’t write code without explaining what you’re writing first. This ensures that the interviewer knows what you are thinking and has the opportunity to interrupt you if you’re going down the wrong path.
  • Use good, clear variable names. Prefer to be verbose (e.g. indexCount instead of idxCnt). In a real interview, your interviewer won’t be the only one looking at your code. Readability matters a lot and is one of the reasons why code reviews are practiced in any major software shop.
  • Don’t be afraid to use common APIs, syntactic sugar, and common idiomatic style for your language. If you have doubts, just ask your interviewer whether you can use something or not. And even more importantly, understand what is happening under the covers so that you’re aware of any performance penalty. For instance, calling the sort method on your collection costs between O(n lg n) or O(n2) depending on your language. Just calling that method won’t magically turn your code into a constant time solution.
  • As part of your practice regimen , writing algorithms from memory can help you both get stronger in your programming language while also strengthening your comprehension of the algorithm itself

Remember, I strongly advise against using an IDE for coding up your solution to practice problems. And if you decide to use the LeetCode editor, don’t compile and run the tests. In most cases, you’re not actually going to get that in a real interview and even if you do, you will be tempted to use it as a crutch instead of properly walking through your code and testing it. Use a real compiler and unit tests after your time is up!

If you find yourself getting stuck during the implementation, use an example and work out the steps on paper to get from input to output. Try to visualize what you need to do on paper so that you can see what your code needs to do and then implement it.

9) Test your code

After you’ve typed the last semicolon or curly brace, you are still not done. You probably have at least one bug, typo, or missing variable that you need to fix. Walk through your code line by line, and check that each line is doing what you designed it to do. You should have a mental checklist of a few things to watch out for:

  • Undeclared variables
  • Off-by-one errors
  • Reversed conditionals (e.g. “<” instead of “>=”)
  • Bad variable names
  • Null pointer exceptions

This is one of the big reasons why it’s essential to work out examples early in the problem solving process. You can easily use one of those examples to mentally run through the code and test that things work well, using paper and pencil or the text editor to track variable state.

10) Optimize

If you haven’t reached an optimal solution yet, either go back to brainstorming or implement a more optimal solution you’ve already devised. Until the timer hits zero, you’ve still got more work to do. Keep going!

Wrapping up your mock interview

Regardless of whether you practice with a partner or on your own, make sure to document feedback on your performance. Keeping a journal or notebook with all your learnings is a very useful way of organizing tips, resources, and your own progress. I still have my mock interview journal that reflects just some of the work I poured into being successful.

If you worked with a mock interviewer, there are two questions you should answer: 1) how do you feel about your own performance, and 2) how would your interviewer rate you between hire, no hire, or on the fence. The key to these two questions is figuring out whether your self-assignment aligns with that of your interviewer. This will help you to shape the right expectations as you prepare so that you can build confidence and gain a good sense for yourself about whether you’re headed in the right direction.

Allow your interviewer space to critique you on non-technical things as well. Did you stumble a lot in your speech or use non-sequiturs? Were you making any annoying noises that should be avoided? Did you go quiet for long stretches of the interview? This feedback might not help you code better, but it will help you to communicate better and that’s half the challenge of doing well on technical interviews.

Lastly, now that your interview is over, feel free to copy your code into the LeetCode tool and make sure that it compiles and that the tests pass. If they don’t take note of any edge cases you missed. I’d actually recommend copying into an IDE so that you can get more detail about compilation errors or use a debugger to step through your code. Take note of failures or missed edge cases so that you can add them to your implementation checklist on the next coding question you tackle.

Want to succeed technical interviews and winning six-figure offers? Register for my free live webinar at morganlatimer.com/webinar . Learn the strategies I’ve used to help my clients land FAANG offers and beyond.

Recent Posts

  • Tired of Educating Your Peers on Race? Think again 
  • gRPC vs REST: Comparing API Styles in Practice
  • How to Transition into Tech: A Complete Guide
  • 9 Things You Didn’t Know About Your Coding Interviewer
  • PRO Courses Guides New Tech Help Pro Expert Videos About wikiHow Pro Upgrade Sign In
  • EDIT Edit this Article
  • EXPLORE Tech Help Pro About Us Random Article Quizzes Request a New Article Community Dashboard This Or That Game Popular Categories Arts and Entertainment Artwork Books Movies Computers and Electronics Computers Phone Skills Technology Hacks Health Men's Health Mental Health Women's Health Relationships Dating Love Relationship Issues Hobbies and Crafts Crafts Drawing Games Education & Communication Communication Skills Personal Development Studying Personal Care and Style Fashion Hair Care Personal Hygiene Youth Personal Care School Stuff Dating All Categories Arts and Entertainment Finance and Business Home and Garden Relationship Quizzes Cars & Other Vehicles Food and Entertaining Personal Care and Style Sports and Fitness Computers and Electronics Health Pets and Animals Travel Education & Communication Hobbies and Crafts Philosophy and Religion Work World Family Life Holidays and Traditions Relationships Youth
  • Browse Articles
  • Learn Something New
  • Quizzes Hot
  • This Or That Game
  • Train Your Brain
  • Explore More
  • Support wikiHow
  • About wikiHow
  • Log in / Sign up
  • Education and Communications
  • Personal Development
  • Problem Solving

How to Improve Problem Solving Skills

Last Updated: January 27, 2024 Fact Checked

This article was co-authored by Erin Conlon, PCC, JD . Erin Conlon is an Executive Life Coach, the Founder of Erin Conlon Coaching, and the host of the podcast "This is Not Advice." She specializes in aiding leaders and executives to thrive in their career and personal lives. In addition to her private coaching practice, she teaches and trains coaches and develops and revises training materials to be more diverse, equitable, and inclusive. She holds a BA in Communications and History and a JD from The University of Michigan. Erin is a Professional Certified Coach with The International Coaching Federation. There are 13 references cited in this article, which can be found at the bottom of the page. This article has been fact-checked, ensuring the accuracy of any cited facts and confirming the authority of its sources. This article has been viewed 236,428 times.

The ability to solve problems applies to more than just mathematics homework. Analytical thinking and problem-solving skills are a part of many jobs, ranging from accounting and computer programming to detective work and even creative occupations like art, acting, and writing. While individual problems vary, there are certain general approaches to problem-solving like the one first proposed by mathematician George Polya in 1945. [1] X Research source By following his principles of understanding the problem, devising a plan, carrying out the plan, and looking back, you can improve your problem-solving and tackle any issue systematically.

Define the problem clearly.

This is an outwardly simple but vital step.

  • Try to formulate questions. Say that as a student you have very little money and want to find an effective solution. What is at issue? Is it one of income – are you not making enough money? Is it one of over-spending? Or perhaps you have run into unexpected expenses or your financial situation has changed?

State your objective.

This is another means to reach the nature of the problem.

  • Say that your problem is still money. What is your goal? Perhaps you never have enough to go out on the weekend and have fun at the movies or a club. You decide that your goal is to have more spending cash. Good! With a clear goal, you have better defined the problem.

Gather information systematically.

Gathering facts helps you get a clear picture of your problem and goal.

  • To solve your money shortage, for example, you would want to get as detailed a picture of your financial situation as possible. Collect data through your latest bank statements and to talk to a bank teller. Track your earnings and spending habits in a notebook, and then create a spreadsheet or chart to show your income alongside your expenditures.

Analyze information.

Looking for links and relationships in your data can help you better understand your situation.

  • Say you have now collected all your bank statements. Look at them. When, how, and from where is your money coming? Where, when, and how are you spending it? What is the overall pattern of your finances? Do you have a net surplus or deficit? Are there any unexplained items?

Generate possible solutions.

This is a great time to consider all of your options.

  • Your problem is a lack of money. Your goal is to have more spending cash. What are your options? Without evaluating them, come up with possible options. Perhaps you can acquire more money by getting a part-time job or by taking out a student loan. On the other hand, you might try to save by cutting your spending or by lowering other costs.
  • Divide and conquer. Break the problem into smaller problems and brainstorm solutions for them separately, one by one.
  • Use analogies and similarities. Try to find a resemblance with a previously solved or common problem. If you can find commonalities between your situation and one you've dealt with before, you may be able to adapt some of the solutions for use now.

Evaluate the solutions and choose.

A thorough analysis helps you make the best possible choice.

  • How can you raise money? Look at expenditures – you aren’t spending much outside of basic needs like tuition, food, and housing. Can you cut costs in other ways like finding a roommate to split rent? Can you afford to take a student loan just to have fun on the weekend? Can you spare time from your studies to work part-time?
  • Each solution will produce its own set of circumstances that need evaluation. Run projections. Your money problem will require you to draw up budgets. But it will also take personal consideration. For example, can you cut back on basic things like food or housing? Are you willing to prioritize money over school or to take on debt?

Implement a solution.

This gives you a chance to see how effective your solution really is.

  • You decide to cut costs, because you were unwilling to take on debt, to divert time away from school, or to live with a roommate. You draw up a detailed budget, cutting a few dollars here and there, and commit to a month-long trial.

Review and evaluate the outcome.

Ask yourself if the solution is working, or if it needs to be adjusted.

  • The results of your trial are mixed. On one hand, you have saved enough during the month for fun weekend activities. But there are new problems. You find that you must choose between spending cash and buying basics like food. You also need a new pair of shoes but can’t afford it, according to your budget. You may need to a different solution.

Adjust if necessary.

It’s okay if your first solution doesn’t work out.

  • After a month, you decide to abandon your first budget and to look for part-time work. You find a work-study job on campus. Making a new budget, you now have extra money without taking too much time away from your studies. You may have an effective solution.

Do regular mental exercises.

Like a muscle in your body, you will need to work on problem solving regularly.

  • Word games work great. In a game like “Split Words,” for example, you have to match word fragments to form words under a given theme like “philosophy.” In the game, “Tower of Babel,” you will need to memorize and then match words in a foreign language to the proper picture.
  • Mathematical games will also put your problem solving to the test. Whether it be number or word problems, you will have to activate the parts of your brain that analyze information. For instance: “James is half as old now as he will be when he is 60 years older than he was six years before he was half as old as he is now. How old will James be when his age is twice what it was 10 years after he was half his current age?”

Play video games.

New research shows that playing video games can improve parts of your thinking.

  • Play something that will force you to think strategically or analytically. Try a puzzle game like Tetris. Or, perhaps you would rather prefer a role-playing or strategy game. In that case, something like “Civilization” or “Sim-City” might suit you better.

Take up a hobby.

A hobby is another way that you can continue to improve your problem solving skills.

  • Web design, software programming, jigsaw puzzles, Sudoku, and chess are also hobbies that will force you to think strategically and systematically. Any of these will help you improve your overall problem solving.

Expert Q&A

You Might Also Like

Face Problems in Your Life

  • ↑ https://math.berkeley.edu/~gmelvin/polya.pdf
  • ↑ https://www.healthywa.wa.gov.au/Articles/N_R/Problem-solving
  • ↑ https://asq.org/quality-resources/problem-solving
  • ↑ https://ctb.ku.edu/en/table-of-contents/evaluate/evaluate-community-interventions/collect-analyze-data/main
  • ↑ https://www.mindtools.com/pages/article/newCT_96.htm
  • ↑ https://www.skillsyouneed.com/ips/problem-solving.html
  • ↑ Erin Conlon, PCC, JD. Executive Life Coach. Expert Interview. 31 August 2021.
  • ↑ https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5930973/
  • ↑ https://www.theguardian.com/lifeandstyle/2018/oct/13/mental-exercises-to-keep-your-brain-sharp
  • ↑ https://www.apa.org/monitor/2014/02/video-game
  • ↑ https://www.nature.com/articles/d41586-018-05449-7

About This Article

Erin Conlon, PCC, JD

To improve your problem-solving skills, start by clearly defining the problem and your objective or goal. Next, gather as much information as you can about the problem and organize the data by rewording, condensing, or summarizing it. Then, analyze the information you've gathered, looking for important links, patterns, and relationships in the data. Finally, brainstorm possible solutions, evaluate the solutions, and choose one to implement. For tips on implementing solutions successfully, read on! Did this summary help you? Yes No

  • Send fan mail to authors

Reader Success Stories

Ali Gulsen

Mar 8, 2017

Did this article help you?

how to get better at problem solving reddit

Alexis Stevens

Sep 23, 2016

Am I a Narcissist or an Empath Quiz

Featured Articles

Improve Your Personality

Trending Articles

How to Answer “How’s It Going?” in Any Situation

Watch Articles

Make Homemade Liquid Dish Soap

  • Terms of Use
  • Privacy Policy
  • Do Not Sell or Share My Info
  • Not Selling Info

wikiHow Tech Help Pro:

Level up your tech skills and stay ahead of the curve

The World of Work Project Logo

How To Get Better At Problem Solving

There are many different models for solving problems. They all have merits, but it’s important to think about the overall process of problem solving as well. This includes identifying and prioritizing problems and opportunities and getting the right together to solve them. Summary by The World of Work Project

How To Get Better At Problem Solving: An Overview

All teams have problems they could solve in order to become more effective or efficient at what they do. They also all have processes and ways of working that are not actually problems, but which could be more efficient. To make these improvements, a structured approach to problems solving and improvement really is required.

how to get better at problem solving reddit

There are many methods that help teams and individuals solve specific problems or work to take advantage of opportunities. The overall process of problem solving remains fairly similar regardless of which method is used.

In all instances you need to identify problems or opportunities to work on, decide which ones you’ll tackle first, select the right people to work on them, come up with solutions, and finally work to implement the solutions you’ve identified.

1. Identify Problems and Opportunities

It might sound obvious, but the very first step of problem solving is to identify what to focus on. These could problems you face or opportunities to improve things for you or your team.

There are many ways to identify things teams can solve or improve. Often, team members, not leaders, are best place to identify what these are. There are many different tools that can be used to identify things to work on. These include: team member suggestions, team brainstorming, customer feedback requests, supplier interviews and feedback and, of course, any kind of mandatory change.

Getting people involved in identifying options has several benefits. It yields better options and also builds engagement and trust within teams. It also increases buy in at an early stage of problem solving, provided leaders really listen to their team members.

how to get better at problem solving reddit

2. Prioritize Your Problems and Opportunities

Having a list of problems and opportunities that you can work on is great. In reality, though, not all of your options are going to be of equal importance.

You’ll identify some problems or opportunities that are very complex and take a lot of effort. Some will be very simple and easy to implement. You’ll identify some that if addressed would yield huge benefits, and some that may only yield minor benefits.

So how do you decide which ones you should work on first? There are many decision making tools to help with this process. The one we recommend is the “ Ease Benefit Matrix “. It’s simply an easy too to help you rank your problems by return on effort.

Want to be a better manager?

 Consider our Connected Management development programme. Every year we run an open cohort of our Connected Management programme for those working in small organisations or organisations that are not able to funder development. The programme is £1100 per person with discounts of up to 40% for self-funders and non-profits.

In 2024, we have a cohort on Wednesday 3.30pm UK time and Thursdays 9am UK time from April 17/18. It comprises 10 online live workshops with two great facilitators and access to a bank of support materials. Learn more about the programme by clicking below.

3. Choose the People to Solve the Problems

Addressing problems and opportunities for improvement should be a group activity, not an individual one. When you bring people together you bring together a wealth of understanding, creativity and challenge. This diveristy often leads to better solutions and outcomes. There is no “right” number of people for solving problems. However, the number of people required may increase as problems become larger and more complex.

It’s not just a case of getting people together, it’s important to get the right people together. In most instances, leaders are not the right people. Instead, the best people to solve problems are those that are close to the processes and issues being discussed. These people are normally not in leadership positions, but operational or functional ones. The types of people we’d consider potentially useful for solving problems include: team members, process owners, technical experts, peer groups, delivery project team members and potentially customers and suppliers.

how to get better at problem solving reddit

It’s more important for people involved in problems solving to have a great understanding of the situation than it is for them to understand the problem solving process. They can always be taught the problem solving approach that you choose to use.

The last point we’ll raise here is that we recommend bringing in a dedicated facilitator for complex problems or opportunities. Facilitators help ensure that conversations and meetings progress effectively. They should help ensure you progress successfully through your methodology to a solution. You can always train a member of your team to be a facilitator, if that’s your preferred approach.

4. Solve the problem

Now that you’ve identified you problems, prioritized them, chosen the one you want to work on first and identified the people you are going to work with, you need to actually solve the problem. This process involves working out what your solution to the problem is. It does not, though, include the process of actually making the problem go away.

There are many different methods available for problem solving. It’s worth reviewing them and choosing the one that feels best for your situation and specific problem.

5. Implementing the solution

Once you’ve completed your problem solving process, you probably have a good idea of what needs to happen next. You might even have a plan to help you do it.

It might feel like you’ve reached the end of the process, but you’re really just at the start. The process of implementing your solution is hugely important and will not happen without control and leadership.

how to get better at problem solving reddit

To ensure you actually implement your solution, you may wish to assign an overall project manager. This may simply be a named person in your team. They may be responsible for doing some of the required tasks, but more likely they will be a project manager and a coordinator.

One of the most important things to remember when looking to implement a solution like this is time. People need to have time set aside and free of other work to focus on their actions. If they don’t, then your problems won’t actually get solved.

Learning More

Thinking about what we do from different perspectives and with others is very helpful for decision making. Tools like the reframing matrix process or hackathons can help us do this.

Part of the reason we’re not great at problem solving is that we all have thinking habits and cognitive biases that restrict our creativity. In particular, these decision making biases often lead us towards bad (or irrational) decisions. And sometimes we make decisions just because ISLAGIATT …

Solving problems as a team using things like The A3 Problem Solving Process improves our problem solving. Similarly, drilling into issues with the 5 Whys helps us understand root causes more and creating an ease/benefit matrix helps us decide what to focus on in the first place. When we are actually working on things like this in groups it’s useful to use techniques like silent brainstorming to get the best results.

To learn more about creativity, innovation and problem solving, you might enjoy the third of our three podcasts specifically on these topics. It focuses mainly on cognitive processes:

The World of Work Project View

Many individuals and organizations want to learn how to get better at problem solving.

This is because many people and teams do not use structured approaches to problem solving, and the lose out as a result. We really think that structured approaches improve efficiency and yield better solutions than ad-hoc approaches.

Whatever process you choose to use, it is always important to make sure that you’re solving the right problem and that you have the right people in the room. If you don’t, you’re not only wasting your own time, you’re wasting everyone else’s as well.

Our Podcast . 

Our Podcast is a great way to learn more about hundreds of fascinating topics from around the world of work.

The contents of this post have been based on our own experience in the world of work, so no specific references are provided.

The World of Work Project: How To Get Better At Problem Solving

We’re a small organization who know we make mistakes and want to improve them. Please contact us with any feedback you have on this post. We’ll usually reply within 72 hours. 

Share This Story, Choose Your Platform!

Related posts.

how to get better at problem solving reddit

Predictive Analytics In The World Of Work

how to get better at problem solving reddit

The Foursquare Ethical Decision Model: A Simple Summary

how to get better at problem solving reddit

The ISLAGIATT Decision Making Process

how to get better at problem solving reddit

The Reframing Matrix Process: A Simple Way To Improve Creativity

how to get better at problem solving reddit

Bounded Rationality: A Simple Summary

how to get better at problem solving reddit

Dual Process Theory: A Simple Summary

Privacy overview.

how to get better at problem solving reddit

In this online seminar, we explore two key factors that shape our performance and experience at work: Trust and Social Threats. We'll explain what they are, discuss how to build trust, share the domains of social threat and share hints and tips for managing both in the workplace.

In this online seminar, we explore the thorny issue of managing the demands on our time. In many workplaces it feels like there's a potentially infinite amount of work. To succeed, we need to learn to prioritize, say no when appropriate and manage our own boundaries. This seminar will explore these challenges and share insights on how we can all improve.

In 2012 Google decided to analyse their teams to discover what makes an effective team, why some teams are so successful, and some less so. What did they discover? Amongst other things, that Psychological Safety is a key differentiator for high performing teams. In this seminar we explain what Psychological Safety is, why it matters and how to increase it in your teams.

Subscribe For Latest Updates

how to get better at problem solving reddit

Nice to see you again :)

If you'd like to learn more about us and what we do, you can join thousands of members of the World of Work community around the globe in receiving our occasional newsletter, the WOW Mail. In it, we'll let you know what we're up to and share hints and tips. 

After submitting this form, you'll receive an email asking you to confirm your registration. Click the button in that email to finalize your subscription. Your email provider might filter it into your junk folder, so please check there if you don't see it your main folder!

I agree to receive your newsletters and accept the data privacy statement.

We use Sendinblue as our marketing platform. By Clicking below to submit this form, you acknowledge that the information you provided will be transferred to Sendinblue for processing in accordance with their terms of use

In this online seminar, our special guest, Dr. Charlotte Rae (Sussex: Psychology, Neuroscience) shares her findings on the impact of moving to a four-day week on our performance, wellbeing and biology, and tips on how to implement a four day week well in your organization.

Part of our popular lunchtime seminar programme

Codeforces

CodeChef Starters 136 Solution Discussion

New comment(s)

  • Submissions

SuperJ6's blog

How to Effectively Practice CP + Problem Solving Guide

This is a slight tweak of a practice guide I wrote a while ago on USACO reddit since I thought it could be helpful to people here. Some USACO specific sections or extra clutter I left out here that aren't needed for a general audience. This should cover all general cp advice I have so I never have to retype.

Introduction

This is a post on how I believe is the best method to practice modern day competitive programming based on my experiences. I assume you already have some knowledge and know simple things like binary search and dfs/bfs, but read the footnote if you are complete beginner (never code, solved <50 problems, div2 A/B too difficult, grey or stuck low pupil).

First, a quick tl;dr of the practice strategy before a bunch of specifics and explanation:

In short, mostly you only need to use codeforces (no matter what contest you're training for), find a rating range where you can solve around ~30-40% of the time on your own, and just grind down the problem set tab in reverse order of id (the default sorting). Also take part in every live contest you can, and virtual any live contests you miss. Also, if your primary goal is some goal outside of codeforces (let's say USACO, but could replace with any OI or if ICPC replace instance of OI with ICPC) Approximately once per week (probably on each weekend), I recommend you virtual an OI contest then upsolve the ones you understand the editorial for after. This should be old USACO contests until you finish all in the past 5 or so years, then use OI checklist to find new contests. Make sure you go for subtasks just as you would in real contests when doing so.

Some parts of this method may seem strange to you, so I'll explain in more detail and comment on why I believe it is the best method, and give some proof. If you're too lazy to read all of it, the most important parts of this article are bolded . Also, I am assuming you are able to practice somewhat regularly (at least a few days of practice done each week for multiple months), and this practice is unlikely to work if you don't. However if you really want to improve fast, ideally practice should be daily, no breaks. .

Goal of Practice

First off, what is the main goal in practicing efficiently? I would argue you want to come across as many subtle ideas and concepts as quickly as possible and learn to intuitively realize when to apply them. This is what my practice method is centered around.

Another important goal is you should also feel discomfort in effort of trying to think new ideas as much as possible, but don't mistake this as time being confused with discomfort having no idea what to do. Actively making new insights as fast as possible is the state you should be in a lot during live contests and need to endure actively thinking new ideas while trying to not repeat same ideas in your mind. But when you have no clue how to approach/understand a solution to a problem, you are more likely to lose focus and are not helping yourself, so you want to minimize this.

Why Codeforces?

So, why only codeforces? Well, recent codeforces problems do a decently good job of introducing a large variety of concepts, particularly in the 2000+ rating range. Thanks to the large standards of wanting non-standard problems each contests, many small math tricks and greedy techniques are introduced, along with standard algorithms and data structure appearing decently enough. This is why I think they are the best collection of problems, as opposed to many other judges that are more standard and less diverse or innovative. Recent codeforces contests are by far better than old contests however, so that is why you should grind down the problems from most to least recent in the problem set tab. If you have done all contests later than contest 450, you should probably start using another judge and start doing more virtual contests, but at that point you probably don't need this guide.

How to Approach Problems in Practice

Alright, so codeforces seems good. Why only a rating range where you can solve ~30-40% of the time? Shouldn't you be practicing coming up with solutions on your own? Well, like I said earlier, you want to come across as many concepts as quickly as possible. If you're able to solve ~80%+ of the problems you're doing on your own, even if it takes a while, or in fact especially if it takes a while, you are not using your time most effectively, as you were already able to come up with the concept on your own. It is OK to read editorials often , that is where you actually learn new things. Binary search on the problem set tab to find a rating range of problems that fits the ~30-40% specification, and I recommend the rating range to a few hundred points wide. You can just shift range upward whenever lower end feels easier and you're solving more.

Well, the next natural question is how long should you take before reading editorials? I will argue only spend 15m thinking, after that if you're still having ideas keep thinking, but if you're just stuck read the editorial. However, if reading the editorial gives you new ideas continue thinking again. Sure, you may discover a trick you came up with yourself you can use later after a long time thinking, but was it worth spending 3h coming up with the solution on your own when you could've gone through 2 or 3 more problems if you read the editorial instead. However, going through too hard problems is just as bad is going through too easy problems. It is not worth spending 4h understanding a 3000 rated problem when you could learn much more concepts from 4 2300 rated problems in the same amount of time (if that's good for your skill level). That's why I say ~30-40%, this is usually the point where you can understand the editorial relatively quickly but aren't able to see the concepts on your own. Also, this is another reason to use codeforces instead of other sources, the problems are shorter so you can get through more faster and it is easier to find many problems of similar skill level .

Some important notes, however, are to take the 15m of thinking very seriously and implement every problem . This is extremely important!!! you should only be looking at editorial when you are really out of ideas and trying to think longer will just make you unfocused or reiterate old ideas. In other words you should feel mentally exhausted!! (or you're not working thinking hard enough). Don't be lazier than you would be in a contest, don't give up because you don't want to think harder on details, don't think/implement leisurely. It is important to practice making observations on your own, and you should be solving problems in the range more and more often as you go down the problem list, that's how you know you're improving. If you're not improving, you are likely not exhausting yourself thoroughly. You may think you can get through more concepts earlier without implement too, and this would fit the main goal of practice better, however, it's important to always implement every problem that isn't completely trivial, even if you mind solve it on your own, as you will remember it better and often you will realize you didn't understand the details as well as you thought before implementing. Always implement before reading editorial if you think you have idea, even when not sure, and don't look at others implementation before you solve even if you read editorial except for last resort.

I also recommend timing yourself when doing problems, at least while implementing. This will help you stay focused and improve your implement speed (which is important so you don't waste time implementing in contest). If you record your times you should hopefully see yourself getting faster for a fixed problem difficulty :).

When you finish a problem, make sure you reflect on techniques and mindset used and how you could generalize thought process to solve other problems more efficiently (imagine you were teaching someone else best way to approach similar problems). Similarly do this when you learn new algorithms or tricks and imagine how you would come up with on your own. Try to come up with your own list similar to one I have in "extra advice how to think" section. Similarly reflect on what can go wrong and how to consciously avoid mental traps. Also, it can be good to look at others solutions after you finish a problem quickly to see if there are any implementation tricks you don't know, and similarly reflect how you could make your code more concise.

When to Learn Algorithms/Data structures

Next thing to come up is when in this am I supposed to learn new standard algorithms and data structures? I advise when you come across an algorithm or any other concept (maybe math idea) in an editorial you don't know about to immediately find and read an article about it, implement in the context of this problem, and then continue just moving down the problem set tab. You can usually find an article on USACO guide, cp-algorithms, or a codeforces blog. The idea behind this is that algorithms should come up at a rate according to their relevance, so if the algorithm really is important you should see it in more problems soon, and you don't need to go looking for more problems with the topic. Similarly, it is important to see algorithms in context, which is why you should not practice by topic , as you will likely miss out on many more subtle techniques and tricks not in a topics list and get too used to knowing the algorithm used ahead time when you should be trying to figure that out in the 15m thinking time.

However, if you want a break or have other extra time when you can't do problems, reading through random algorithm articles in the locations listed above is a good way to expose you to some new ideas. But it is still more important to be actively solving problems when you can.

Live Contests

The number one thing that probably looks wrong with this practice method, despite the reasonings I gave earlier, is that you seem like you are not practicing solving problems on your own often enough. This is where live contests come in. It is important to take part in as many live contests as possible from every judge you can (except ones where every problem feels too easy) . This is where you practice thinking on your own, and if you look enough there are tons of contests all the time, particularly high quality ones from atcoder and codeforces. You should also upsolve the hardest problem you didn't solve during the contest, however, after that you should just go back to the codeforces problem set grind unless there are more problems from the contest within your practice rating range on codeforces. Lastly, to make sure you're taking enough contest, take every codeforces contest you miss that would be rated for you as a virtual contest.

Also, if your primary objective is some other contest (say USACO/OI but can replace with ICPC), you should do OI virtual about once per week as subtasks are becoming more important in USACO plus probably good to have more extended focus practice anyway. You also want to shift practice to doing mostly OI virtuals the week before a USACO contest begins. Make sure for these virtuals you are going for maximum points like in a real contest which may mean implementing subtasks, not just implementing full solves (or whatever other contest specific traits that differ from codeforces). If you aren't practicing a ton or you feel virtuals are taking too much time away from doing codeforces practice maybe do every other week instead of every week.

Scheduling Practice

This is less important but more just some pointers on scheduling time to practice consistently. I think it is obviously best to practice daily, and it isn't as hard as you may think it is if you build up good habits. I think it is good to have a regularly scheduled time where you can practice each day , as this makes it more of a consistent habit. Similarly, if you can set aside a specific location to practice as well that would be good , as this can give your mindset the habit that a specific time and place is for practicing only, and you build focus**.** Try to practice at least 90m for your scheduled time , but preferably longer. And get off discord!!! when you're practicing in the designated time :clown:.

Besides scheduled practice time, you can probably fit in more practice time in some or many days in different ways as well if you are serious. For example, I think it is good to memorize some problems at the beginning of each day, maybe a bit harder than you'd normally practice, and think about them all day during school, shower, eating, etc., or maybe the same problems for a few days. This helps you practice thinking more on your own. Also, when you have free time in class or while in car and someone else is driving or something, this is a good time to read algorithm articles. When I went to public school I also bought a portable keyboard to practice in class and spent most school lunch days in the library doing problems, but this might be overkill. Point is find all times of day to practice any way possible when you can, but most import is the scheduled practice time.

Adjustments Closer to Big Contest

If you are training for some main goal (hopefully for the past several months at least, following above methods), when you are within a few weeks away of big contest, start spending more practice time on vc's for that contest, and look over the syllabus/relevant ideas for that contest if list exists . Also consider if you are in these pitfalls:

You are too slow at working out ideas or implementation => do more fast-paced contest vc's, time yourself in other practice.

You are bad at allocating time in OI/ICPC style => focus on more relevant vc's and practice subtask allocation, figuring out which problems to work on, and when to move on like in real contest.

Still not able to make big insights that seem to come out of nowhere => try more guessing and some atcoder lol.

Hopefully this was somewhat useful to some of you, and gives you a comprehensive guide on how to practice for USACO and competitive programming in general. Please share this with others if you think it is useful.

For any more experienced people, let me know if there is anything you strongly disagree with what I said, I'd be interested to hear your viewpoint, though you're unlikely to change my mind :).

**I recommend the beginning of the usaco training page to complete beginners . I think it is a good way to start out as it guides you on the basics, and you should be able to start as soon as you know the very basics to a programming language, preferably c++ (you can use codeacademy to learn basics, it should take only a couple days max. you learn other parts about the language as you solve more problems and googling as needed). However, as soon as you finish chapter 1 or the problems feel easy (or if codeforces is still too intimidating maybe hard max finish chapter 2), that is when I recommend you start using this practice method, and perhaps also try some problems from the cses sorting and searching section. However most people reading this should already have some experience.

Sources mentioned: USACO — http://www.usaco.org Codeforces — https://codeforces.com Atcoder — https://atcoder.jp CSES — https://cses.fi/problemset/ Training gate — https://usaco.training OI Checklist — https://oichecklist.pythonanywhere.com Cp-Algorithms — https://cp-algorithms.com USACO Guide — https://usaco.guide Codeacademy — https://www.codecademy.com/catalog/language/c-plus-plus

Extra Advice How to Think to Solve Problems

Overall, just make sure you are always thinking new ideas and repeatedly combining old observations to make new ones. Don't worry about solving all at once, just think one small step at a time! Usually this means think what do you know for sure, then use to guess ideas on properties and direction and check if you can prove, combine your previous observations, then repeat. When really stuck, guess more extreme (it is another thing people who aren't improving don't do enough). Actually write down you're observations and make sure you're writing new things as fast as possible, even when seems small or irrelevant. But for some more direct tips, try going through the following checklist when approaching a problem:

  • look at everything from perspective of binary (both bit representation and splitting things in halves) and graph (pairs in input), or sometimes as geometry coordinates
  • think how information you have can be reused (like dp but more general, eg 2ptr or extending construction, sweepline, split query into reusable known parts), ask what is dependent and how, order by dependency. also try making one choice then and get same problem then induct (eg greedy, mst, dp, decision tree like trie, ask "what do i know for sure"), or combine smaller problems to get answer (eg range dp, d&q, mitm), so can reuse info of smaller problem.
  • reduce things to as simple as possible, compact representation of info, get rid of redundant transitions/states/etc. what is minimum needed for condition to be true? when something changes or decision made what is minimum that actually matters? sometimes combine operations into simpler one (eg try turning operation into something can binary exponentiate). bound everything as tight as possible and use to reduce states to consider. is answer/construction equivalent to bounds/minimum conditions (guess when stuck)?
  • make formulas out of everything, expand/rewrite as many ways possible (even simple like |x| -> +-x). think about related formulas to transform (eg combo) and other representations (don't forget matrix/polynomial).
  • visualize everything, draw things out
  • look for structures like montonicity, concavity, etc. (eg bsearch/dp opt) along with new conditions/constraints implied (eg sqrtn distinct of n total), and do this for every part of problem, whether specific part or entire structure of solution
  • go through testcases by hand (both initially with brute force and with your current best ideas), maybe also make generator/brute force checker if stuck to further look for patterns.
  • don't think same things over and over, write down everything you think and try to always write down new ideas, every small new observation is progress and may be able to be combined with other ideas eventually, but rethinking same things will not help
  • think of simplified cases then extend/reduce to them (reduce a[i] = 0/1, array->tree->graph, 2^x->k) or imagine assuming something you wish exists already exists (like data structure often range query, constraint eg for bsearch, previous knowledge, etc.) and solving from there, chances are thing then does exist if helps
  • reverse/change ordering of process (eg change order to simpler like change general add/delete to add/[delete most recent op] offline) or look at inverse (especially for counting) or just view problem in different way in general, restate problem/conditions in as many different ways as you can to get new perspectives. nice transformation usually means right direction (eg difference array).
  • if something reminds you of standard algorithm, or you find too slow solution for some part, think of every way you know how to do that standard thing and see if any modification relates to what you are doing, and think deeply what parts can be changed for specific problem
  • if something seems random in statement like any abnormal constraint or is similar to known problem but different in some way, is probably key to solving so consider why it is put in statement
  • don't forget sometimes can brute force small choices or if too many choices can pick random one or something that stands out (like max/min, only closest on left/right, etc.), extremals is often key. think carefully and guess what not matter if problem seems too hard initially. in constructive/interactive with many options can likely solve with only small subset of options.
  • don't overcomplicate. try multiple directions, if too many steps or edge cases probably not right direction. almost always a nice easily provable solution. guess nice things (eg simplest greedy/construction), hope they work, then check but don't get stuck forcing path. take step back when clowning on small details even if you know it is right general direction
  • try focusing on answer for one element at time instead of entire process (like in counting or creating bsearch condition, local easier to update for queries), or sometimes opposite (eg graph out all solutions, know ahead of time offline). in general change scope of thinking
  • believe you can solve every problem, but also treat every problem as a challenge that you take one step at a time. even most standard ideas you can learn on your own if you treat same way as any other problem
  • if something you remember very vaguely seems similar but you don't remember source and barely remember details, don't waste time trying to remember old thing, just start resolving from scratch
  • as stated by Perpetually_Purple in comment below, sometimes can try to cheese with random/heuristic if running out of time. especially true for OI contests with subtasks
  • sometimes can split problem into parts which can be solved differently based on constraints (eg sqrt decomp, small to large, upd and qry compute different parts, even/odd).
  • also break into independent problems (eg intervals that don't affect each other, solve x and y coordinate separately). when dependent on multiple things, process in order that gets rid of thinking about one and only worry about others (eg sweep one dimension, query other).
  • map things to a canonical form (eg lexographically minimal) or map representations that are equivalent to help with counting or alternate way to view solution. (eg think of greedy idea to get specific configuration then have counting dp mimic the greedy method to not overcount, find simple idea for single query then speed up multiple queries by precomputing conditions when add during greedy to speed up).
  • imagine assuming you know solution ahead of time and analyze or fix choices ahead of time and solve rest, can use this to prove things equivalent, choices not to consider, or properties of optimal configuration.
  • try only computing minimum necessary at each point of time, especially for update/query. can sometimes use amortized/lazy arguments (eg keep track of covered intervals in set, lazy prop on segtree).
  • ask what stays the same and what changes. how does a single operation affect properties of a problem (sum/difference of elements, always progress towards goal, reversable, etc.)? when doing testcases by hand guess these types of things then prove/disprove. use these properties to prove things like which choices are optimal or what is bottleneck to bound on answer.
  • Similar to 3 and 10, try compressing groups of things and solve over those group when relations within them are irrelevant, and keep updating when you can simplify further throughout process (eg compress cycles, scc, biconnected components, directed mst).'
  • When guessing idea, make sure you are listing through all assumptions being made and that those assumptions you know for sure hold true and completely encompass the problem. Also make samples around idea of what you think could go wrong, and use that to help you prove or disprove idea. If you're taking too long disproving wrong ideas, you likely need to go more one step at a time, don't guess extreme until more stuck.
  • If stuck working out details when have main idea, work out more testcases by hand and/or write detailed pseudocode and find what steps you are not entirely sure what they work and think harder. Don't be lazy about writing details!

Also it is good to use problem constraints to guide your initial direction of thinking, but don't let it constrain you to specific ideas. And whatever you do don't misread the problem , better to spend slightly longer reading and understanding correctly than solve wrong thing.

Implementation Tips

First check briefly that you are not missing easier idea/method to implement. That will save most time.

Try to have clear idea of each segment of code you will write, then write as fast as possible. Sometimes you don't have clear idea of entire code you write and only general outline, and that's ok, but in your mind have different parts of code in small chunks and have each small chunk planned out clearly before you write then think if needed before writing next part. Try to keep plan your code to be as concise as possible while still easily readable and make it where you are not rewriting same thing multiple times. If you keep rewriting, you need to step back and plan out better, check your ideas.

Also for debugging, just make a bunch of print statements in code and look for problems. Try to binary search and figure out where in the code the outputs are first not what you'd expect. If you realize some part is not right, don't get stuck making small edits trying to fix, go back to planning and rewrite when clear. Also try working through some examples by hand following steps of code, and read through every single line of code. It is likely the mistake is somewhere where you were sure you couldn't mess up lol.

Also adding one sentence comment to code on main idea of every problem might be nice if you ever need to refer back.

Allocating Time in OI Contest

I'm assuming 3 problems in 4 hours (adjust scale as needed). I usually read all 3 problems in first 15 minutes, then spend about 15 minutes each to think about each problem and decide order of difficulty I find easiest. If I fully mind solve one in that time I immediately implement, otherwise I do as follows. I then try to divide the next three hours to be roughly even among the three problems, and try the problems in order from easiest to hardest.

While focusing on a problem, it is very important to stay focused on only that problem. For most of hour on problem should implement as soon as you full solve but only implement subtasks to test ideas, if you think it help you towards full solution, or you are completely out of new ideas (in which case move on after implementing subtask if u still don't have new ideas). However, if you already use up ~50min for that problem and still don't know full solution and won't reach in next 5min, even if you think you could make more progress, just implement what subtasks you know and move on. It is important to actually move on as you may have wrongly assessed which problem was easiest so you want to have time to try all the problems (this has been my downfall multiple times in past). This means once you move on don't have more lingering thoughts usually and fully focus on next problem.

Math + CS Practice

If you are practicing math olympiad and cs olympiad, or just want some reading material that might help you, try reading some of and doing some problems from this combo book . Overall it will be better for you to just do be actively solving more problems for cp practice, but if you have some other free time it is a pretty good read and cp is basically olympiad combo + data structures + implementation anyway.

Practicing for math olympiad in general will also help you with competitive programming, but if you are only focusing on cp it is better to just work on cp problems.

Extra Motivation

In everything in life, the key to success is learning to find fulfillment in every small step you make towards progress. Related to cp, every problem solved and every day of practice is one step closer to your competitive programming goals. When solving a problem every new observation is one step closer to finding the solution.

Also, make sure you know your priorities and what you really want out of life, don't have regrets. If you really want to be good in cp, stop wasting time, stop taking days off, start solving problems as much as you can and you will find success. Obsess over what you want most until you achieve it.

Tags

Amy M Haddad

How to get better at solving programming problems.

By: Amy M Haddad

image

Most of us have been given the same advice: to become a better problem solver, you need to solve more problems. But this advice is too simplistic. Getting good at anything requires more than just reps. It’s also how you go about it.

Besides, when programmers hear the advice “solve more problems,” they often think that “more” means faster. It’s a mistake I made when starting out.

The problem-solving treadmill can be detrimental to learning and improving. Early on I’d speed through one problem and head to the next. But the reality of that approach soon set in. By focusing on quantity, I compromised quality and missed key learnings along the way.

It’s not to say that repetition doesn’t matter; it does. However, repetition alone doesn’t get to the heart of the matter. The process does.

I have a vested interest in this topic: I want to get better at solving problems in order to improve as a programmer. So here I offer my plan of attack. It involves reps to be sure—and a whole lot more.

1. Solve a Variety of Problems on a Variety of Platforms

“I was obsessed with HackerRank when I began learning to code,” said an instructor of a Python course I was taking. Although it’s fine to have a favorite platform, don’t limit yourself to a single one. Here’s why: you need to be ready for anything.

One goal of mine is to toggle smoothly among different problem types and across different platforms. The problems on Interview Cake are different than those in Reuven Lerner’s book, Python Workout . Likewise I find the problem statements in Lerner’s Weekly Python Exercise different from those on HackerRank.

I have my preferences, to be sure. However, I need to be able to solve problems of all types. So I’m using a variety of platforms and resources to get practice.

Here are some examples:

  • Interview Cake
  • Cracking the Coding Interview by Gayle Laakmann McDowell
  • Python Workout by Reuven Lerner
  • Weekly Python Exercise by Reuven Lerner

On Sundays, when I make my plan for the week ahead, I select a few problems from the above resources. I’m deliberate about it. For example, I’ll pick a problem that focuses on binary search from LeetCode. Then, one that focuses on data structures from one of Reuven Lerner’s sources.

This practice prevents me from getting too comfortable. I can’t rely on the same data structure or technique. I need to be able to pick the best tool for the job. I’ve got to be able to pivot.

It also challenges me. That’s because I select problems that push me to the edge of my limits, a feature of what psychologist Anders Ericsson calls “deliberate practice.”

Deliberate practice is all about skill development. It’s a fully-focused, conscious effort that takes you out of your “comfort zone,” centers on a specific goal, and “demands near-maximal effort,” Ericsson explains in his excellent book, Peak .

In other words, you’re not going through the motions doing something that comes easy or natural. “The hallmark of . . . deliberate practice,” Ericsson writes, “is that you try to do something you cannot do.”

2. Cross-Train Your Programming Brain

You often hear about athletes who incorporate cross-training into their routine. For example, a runner completes a bike workout or two each week. It makes a lot of sense: by cross-training athletes push their cardiovascular fitness from a different angle.

Cross-training for programmers is a topic I’ve written about before. Yet, more needs to be said about the benefits of this approach. Just like an athlete cross-trains to improve their cardiovascular fitness, I’m incorporating cross-training to improve my mental fitness.

My cross-training involves solving math problems. I apply the same tactics I’d use to solve a programming problem but in mathematics. Same process, different context.

My current math book is one to note: The Art of Problem Solving . Yes, it provides the cross-training benefits mentioned above. But it’s doing something more: it’s helping me build my intuition for solving problems.

That’s an important point. I don’t want to memorize a math equation or process. I want to intuitively know when to use it. The same is true when solving programming problems.

3. Learn from Your Solutions

All of us get stuck and all of us get errors while problem-solving. We use these failures to help us figure out what to do differently.

Oftentimes that’s where the learning stops. Once we’ve solved the problem we’re anxious to move along. But don’t.

Mathematician Richard Hamming suggests that’s when the learning should begin.

“I regard the study of successes as being basically more important than the study of failures...there are so many ways of being wrong and so few of being right, studying successes is more efficient,” Hamming writes in his book, The Art of Doing Science and Engineering .

This idea of "looking back" and studying your successes is a topic I've written about previously , and it's worth noting again. You always hear about how we need to "learn from our failures." But Hamming is right: there's so much to learn from our successes.

So one of the biggest changes I’ve made to my problem-solving process is putting Hamming’s words to practice. I vividly recall solving my first problem that involved a linked list, a data structure that was new to me at the time. After I solved the problem, I studied it intently. I copied my solution into a Google Doc file and used comments to explain the code to myself.

I wanted to ensure I clearly understood what I did and why for this critical reason: so I could do it again.

4. Get Feedback

Awareness can be a wonderful teacher.

Don’t assume your solutions are great. Find out for yourself by getting feedback. Feedback is a critical factor when it comes to getting better. It’s also a component of deliberate practice.

There are two ways I’m getting feedback.

First, after I complete a problem, I study the solutions of others. Sometimes resources, like LeetCode and Cracking the Coding Interview , provide the solution. Other times I find the solution of a programmer who’s solved the same problem. Sometimes use both.

Either way, the next step is the same: I start at the top of the solution and explain each line in my own words. I speculate why the programmer chose this particular data structure, for example. Then, I write a short summary of the program to solidify the core concepts or new approaches that I just learned about.

Putting something complicated, like a line of code, into your own words is a great test to see if you really understand it. Plus, you get practice at another core skill: reading code .

If there’s something that’s new to me, I research it. I compare their code to my own. I study. I evaluate. I learn. It’s an arduous process, but I get so much from it.

The second way to get feedback is to simply ask another programmer for it. Video calls are helpful to step through code line by line in real time. Although, pull requests are useful, too.

There’s a point to the feedback: apply it! Put your learnings into practice.

5. Be Consistent

Now let’s talk about repetition. Problem-solving is a skill. Like any skill, it takes time to build. It simply doesn’t happen overnight or over a weekend. That’s why I devote time each day to problem-solving.

There’s a common reaction to this daily practice: “There’s too much to learn. I can’t spend time each day problem-solving.”

My response is two-fold. First, there’s always going to be something more to learn, always .

Second, in large part programming is problem-solving. It's fundamental to our craft. It’s worthy of your time and attention each day. Here’s the caveat: make your daily practice intentional.

It’s an Art

Many people regard problem-solving as an art. I happen to agree with that sentiment. The same can be said for the process itself.

The ideas outlined in this article are my approach for getting better at problem-solving. Your approach may look very different. The point is this: be intentional about your practice. Quality matters; make each problem count.

how to get better at problem solving reddit

Blog / Time To Code / 6 Ways to Improve Your Programming Problem Solving

6 Ways to Improve Your Programming Problem Solving

6 Ways to Improve Your Programming Problem Solving

Sign up for 7pace newsletter.

I would like to sign up to receive email updates from 7pace. Protected by 7pace's privacy policy .

Reporting is here

Software development is, at its core, all about problem solving.

Think about it.

First, developers need to find a problem they can solve with software. Then, they have to figure out how humans solve that problem. And then, they have to find a way to effectively translate both the problem and the solution into code that a computer can use to solve the problem as well as (or better than) a person.

And then there are all the problems along the way: Working with teams, finding and fixing bugs, meeting delivery deadlines.

Engineers use problem solving skills constantly .

Because of that, if you want to become a better developer, one place to start might be becoming a better problem solver. But that’s easier said than done, and requires a deep understanding of what problem solving is, why it matters, and what it actually takes to improve those skills.

Ready to dive in? Let’s get started.

What Is Problem Solving, and Why Does It Matter?

Have you ever heard this famous Steve Jobs quote?

“Everyone in this country should learn to program a computer because it teaches you to think.”

“Everyone in this country should learn to program a computer because it teaches you to think.”

Jobs was right. Software development is as much about “soft skills” like critical thinking, communication, and problem solving as it is about “hard skills” like writing code.

And so, in the context of software development, problem solving can mean a few different things:

  • Creating an application that meets the end user’s goals.
  • Communicating effectively with team members to delegate work.
  • Finding and fixing bugs in the code.
  • Meeting a tight deadline for a client.

There’s only one thing that’s true no matter what problem solving looks like on a given day: It’s an integral part of every step of the software development process.

Why Should Engineers Work On Problem Solving Skills?

Just like any other skill, problem solving takes practice to apply and master.

Many developers think that becoming a better problem solver means being able to solve more problems, faster. But that’s not true — it means being able to find the best solution to a problem, and then put that solution in place.

Learning to do that is a great way to become a better developer overall. And while soft skills can be more difficult to learn and improve upon than hard skills, there are still some tips and tricks that can help you get better at problem solving specifically.

6 Ways to Get Better at Problem Solving

As you’ll see from these learning tools, getting better at problem solving is mostly like getting better at any other skill for work: You need to practice. A lot. And then practice some more.

6 Ways to Get Better at Problem Solving

Solve a Lot of Problems on a Lot of Different Platforms

Step one? Solve as many problems as you can, but try to focus on different types of problems on different platforms.

Here’s why this is so beneficial: It prevents you from getting comfortable with one problem solving method or framework. As we already know, in the world of software development, there is definitely no one-size-fits-all solution for the problems we encounter.

When you regularly practice solving different types of problems in different platforms, it reinforces the fact that you can’t always rely on the same technique to solve every problem. It forces you to learn to be flexible, and to choose the best tool or framework for each job.

Solve Problems in Contexts Other Than Work

Since problem solving is a skill that requires practice, you can (and should) work on it even outside of work hours.

This doesn’t need to be a chore — there are a lot of fun ways to practice problem solving, like by doing math or logic puzzles, solving crosswords, or playing a game like chess. Even many video games can help work on problem solving skills.

There are also many opportunities to practice problem solving just as you live your life from day to day. Broke something around the house? Use your problem solving skills to DIY a fix. Need to solve a conflict with a friend or a family member? You guessed it — time to practice problem solving.

Learn From Past Solutions, and Apply Them to New Problems

As you keep practicing problem solving as much as possible, you’ll start to see patterns emerge in the problems you solve. You’ll build up a sort of toolkit filled with the solutions you’ve found and used in the past, and you’ll be able to apply those to solving new problems.

This part is just as important as finding the solutions in the first place, because the more you practice your growing problem solving skills, the more natural it will become to apply the right solutions to different types of problems, making you able to solve new problems more and more quickly, while still using the best possible solves.

Ask Others for Help and Feedback

Sometimes, finding the best solution to a problem just requires a fresh, new set of eyes. That’s why it’s important to treat growing your problem solving skills not as a totally solo venture, but as a team endeavor where everyone at your organization can support each other and help each other get better.

If you’re stuck on a specific problem, ask for help. Someone else might have a method or framework you aren’t familiar with, that they can teach you. You can then apply that to more problems down the road.

And if you’ve come up with a solve for a problem, ask others for feedback. They might be able to help you refine or further improve your framework, making it even better.

Train the Problem Solving Part of Your Mind

How do you keep muscles from growing weaker over time? You keep exercising them.

The same goes for your brain, and especially for different knowledge-base skills, like problem solving. You’ll stay at the top of your brain if you keep “working out,” or practicing problem solving all the time.

A good move for a developer who wants to invest in their problem solving skills is scheduling time every week (or even every day) to consciously practice problem solving. Remember, this doesn’t necessarily mean solving work problems. You could commit to doing a tricky logic puzzle every day on your lunch break, for example. The important thing is to get in the practice, no matter how that looks.

Practice Other Skills Related to Problem Solving

Problem solving is an important skill on its own. But there are other necessary skills developers need to support their problem solving abilities, and those skills all take practice, too.

Flexibility. Critical thinking. Communication. Teamwork. Focusing on building and practicing all these skills will help you improve your problem solving.

Problem solving is one of the most necessary skills for developers to have. With time, practice, and dedication, they can improve it, constantly, and keep becoming better.

Tyler Hakes Profile Picture

Rethinking Timekeeping for Developers:

Turning a timesuck into time well spent.

Rethinking Timekeeping for Developers

Leave a Comment

By submitting this form I confirm that I have read the privacy policy and agree to the processing of my personal data for the above mentioned purposes.

how to get better at problem solving reddit

Great article regarding problem solving skill, informative and motivating both.

Codility Tests

Outstanding post, I believe people should larn a lot from this website, its really user pleasant.

Technical Screening Tools

I was very happy to discover this great site. I need to thank you for your time just for this fantastic read!

Sharifa Ismail Yusuf

I learnt from this article that one of the key skills a developer need to have is the \"problem solving skills\". Developers also need dedication, time, create time to practice so they can improve their problem solving skills constantly. I do ask for help from others and learn from past solutions and apply them to new problems. From what I have learnt so far, I will try my best to start focusing on building and practicing Flexibility, critical thinking, communication and team work. Solve a lot of problems on a lot of different platforms. Solve problems on context other than work. To start carring out the above, I will schedule time in a week or everyday to conciously practice problem solving skills and other related problem solving skills.Thanks alot for this wonderful article!

dewayne sewell

Ive learnt the skill of problem solving is like a muscle, where it is important to keep exercising it to stay strong. It is important to be aware of the soft skills necessary for effective problem solving also, such as communication, critical thinking, team working that can leverage your technical hard skills to find a solution faster/more effective. Two things I will aim to do is; 1. To solve problems on different platforms so I don’t get too comfortable on only one and stagnate. This not only challenges the brain to see things from a new perspective, but to start the habit of continuous learning and skill building. 2. Reach out to others for help / discuss problems and my solutions for feedback and advice and sharing ideas.

Pakize Bozkurt

Problem solving skills is a crucial thing to make easier or better your life. In fact as a human being we do it in every day life. I mean, we have to do it for living. There are many ways to how to do it. The best way is we should ask right questions. First of all, we should ask some questions, such as; \' Are we aware of the problem?, Are we clarify the problem? Do we go into problem rational? Do we have reasons? or Do we have evidences? Do we do check them out? etc. I am from Philosophy teacher background. I like solving problem whatever in my work or daily life. Secondly, we should have more perspectives . Although our brain is lazy, it is always in a starvation for knowledge.For this there are many enjoyable things to do it. I highly recommend to read book every day which kind of you like it and playing game or solving puzzle. I love solving Sudoku, puzzle and reading book or article. Finally, solving problem is our invatiable needed. Having flexibility, critical thinking, communication and teamwork are easy way to improve us to how we can do our work better and good life. Massive thank for this amazing article!

I read this amazing article. Normally, everyone knows that but we dont use most of time this informations. Which one is the best way to use? Really it does not matter, every one is like a gold opinion. We can use this ideas for the daily life. I have already used that learn from past solution and ask to someone who knows very well. This is so helpful for me. Sometimes google is the best option for ask to someone. Google can be the best teacher for us as well. Soft skills like a team work or solving problem and critical thinking can be important than typing code. We can learn typing code but we can not learn critical thinking and solving problems from google very well. Thank you for this article.

Ipsa iure sed rerum

Excepturi quo volupt

Thanks for this !

Fahil kiima

Thanks a lot for the ideas on problem solving,I really had a problem with that and now going to use what you\'ve informed us about to better my problem solving skills. Thanks.

Alan Codinho

Nice overview

7pace is coming to GitHub! Sign up here for early access to test our beta!

Time tracking can actually be valuable for your team and your organization. But first, you and all your team members need a complete shift in the way you frame time tracking as part of your work.

Sign up for our newsletter and get your free ebook!

Your information is protected by 7pace's privacy policy .

Thanks for subscribing!

Click the download button to receive your free copy of Rethinking Timekeeping for Developers:Turning a Timesuck Into Time Well Spent

Click the download button to receive your free copy of

Contact sales

Please, note that your personal data provided via the above form will be processed in line with the  Privacy Policy . By clicking “Send”, you confirm that you have read the  Privacy Policy  that sets out the purposes for which we process personal data, as well as your rights related to our processing of your personal data.

I wish to receive marketing emails from Appfire.

Request sent

Your message has been transmitted to 7pace.

We will contact you as soon as possible.

Github

Sign up for GitHub News

The 8 Best Coding Challenge Websites to Help You Level Up Your Skills in 2020

Daniel Borowski

Despite the lowest unemployment rate in decades, analysts expect technology hiring to continue growing steadily into the 2020s.

That’s great news for recent computer science graduates and developers currently working in the field, but that doesn’t mean ambitious engineers can get complacent.

While there will likely be growth opportunities in the market overall, there are still significant changes happening all the time, and a sense of urgency to keep up with the latest trends.

Today, there are more types of technical roles than ever before, and a continued proliferation of new languages, frameworks, and technologies. Technical employees that want to get ahead should routinely test and refine their skills.

To that end, I’ve put together the following list of platforms where you can level up your skills for any number of roles, from data science to developer operations.

1. freeCodeCamp

Helpful links: Website | Forum | Challenges

freecodecamp-hero

Let's begin with freeCodeCamp, which is a great website for beginners who are just getting into coding. They offer all sorts of resources on learning syntax, practicing coding, building projects, and preparing for interviews.

They don’t have as many interactive coding challenges as other sites, but they do offer some fun challenges and interview prep for beginners learning JavaScript.

Novices who are just learning to code for the first time. It’s a great place to learn HTML, CSS, and JavaScript in a fun, interactive way.

Pricing / Premium content

freeCodeCamp is completely free.

2. Coderbyte

Helpful links: Website | Blog | Dev.to | Free Challenges | Premium

coderbyte-hero

My platform, Coderbyte, provides 300+ coding challenges you can solve in an online editor using 10 different programming languages. You can then access official solutions, over 1.5 million user solutions, and read articles on how to efficiently solve the challenges.

Coderbyte is recommended by the top coding bootcamps and companies because of its collection of interview prep challenges.

Coderbyte is perfect for people in the beginner-to-intermediate phase of their careers who are preparing for interviews. There is a library of harder challenges as well for those who like to solve coding problems for fun, but this isn’t primarily a site for competitive programmers.

There are a handful of free challenges on Coderbyte, and then there are hundreds of premium challenges and over 1 million user solutions that are available to members .

3. LeetCode

Helpful links: Website | Discussion | Free Challenges | Premium

leetcode-hero

LeetCode has a collection of some of the best algorithm challenges online today. The topics they cover require knowledge of data structures such as binary trees, heaps, linked lists, and so on, which is why their challenges are a bit more advanced than some other websites. But the challenges are great if used to prepare for a software engineering interview.

They also have a Mock Interview section that is specifically for job interview preparation. They also host their own coding contests , and they have a great discussion board where people talk about interview questions, jobs, compensation, and other topics related to engineering.

LeetCode is great for intermediate-to-advanced programmers. It might not be the best suited for brand new coders who don’t know how to write basic loops yet, but once you learn the fundamentals this is a great site to practice coding.

There are free challenges available on LeetCode, and they also have a premium subscription which gets you access to more challenges and other features of the platform.

Helpful links: Website | Blog | Challenges

edabit-hero

This is the first time Edabit is appearing on our top sites list ( 2018 list , 2017 list )! It has grown in popularity over the last year, and developers seem to really enjoy the challenges. They offer a large collection of over 4,000 challenges that can be solved online in one of several languages.

The site currently only offers online interactive coding challenges — there aren’t any discussion boards, articles, user solutions, or mock interviews like other sites offer, but over time they might be adding some of these.

Edabit is great for beginners looking to practice their coding skills daily by solving bite-sized challenges. Once you reach the intermediate stage, other sites provide harder challenges and more content geared towards competitive programming and job interviews.

All the challenges on Edabit are free, and there is no premium pricing option.

5. Codewars

Helpful links: Website | Blog | Free Challenges | Premium

codewars-hero

Codewars provides a large collection of coding challenges submitted and edited by their own community. You can solve the challenges directly online in their editor using 20+ programming languages. You can view a discussion for each challenge as well as user solutions. You can earn points and climb the rankings by solving their challenges.

Codewars is great for people in the beginner-to-intermediate phase. The challenges are created by the community so you get exposed to a lot of different types of coding challenges.

They offer all of their challenges created by the community for free, and their premium subscription gets you access to some cool features on their platform.

6. HackerRank

hackerrank-hero

HackerRank has a large collection of coding challenges tailored towards algorithms and data structures, along with interview prep material, a discussion board for each challenge, and a list of top user solutions. They have challenges for other topics as well like functional programming, AI, Shell, SQL, and more.

HackerRank is great for intermediate-to-advanced programmers who have already picked up the basics of a language and are ready to solve more complicated problems. The challenges are written with mathematical notation and can sometimes be a little confusing, which is why it might not be so great for beginner developers.

All the challenges on HackerRank are free, and there is no premium pricing option.

7. TopCoder

topcoder-hero

TopCoder is one of the original platforms for competitive programming online. It provides a list of algorithmic challenges from past competitions that you can complete on your own directly online using their code editor.

Their popular Single Round Matches are offered a few times per month at a specific time where you compete against others to solve challenges. Here are some topics that their challenges may cover.

Aside from solving challenges for fun online, they offer sponsored competitions where you can win prizes for writing the best solution.

TopCoder is better suited for advanced programmers who are comfortable solving algorithm challenges dealing with advanced topics like graph search and number theory.

All the challenges on TopCoder are free, and there is no premium pricing option.

8. Codeforces

Helpful links: Website | Discussion | Challenges

codeforces-hero

Codeforces is now probably the top competitive programming website (a few years ago TopCoder was where most competitive programmers spent their time).

There are problems that you can solve online to practice, but there’s no online editor. Rather, you write your solution in your own editor and then upload it to their system which then tests your code against a suite of test cases.

They also frequently hold contests where the best competitive programmers take part in.

Advanced and competitive programmers who truly enjoy solving difficult algorithm challenges.

All the challenges on Codeforces are free, there is no premium pricing option.

CEO & Founder at Coderbyte.

If this article was helpful, share it .

Learn to code for free. freeCodeCamp's open source curriculum has helped more than 40,000 people get jobs as developers. Get started

Cookies on GOV.UK

We use some essential cookies to make this website work.

We’d like to set additional cookies to understand how you use GOV.UK, remember your settings and improve government services.

We also use cookies set by other sites to help us deliver content from their services.

You have accepted additional cookies. You can change your cookie settings at any time.

You have rejected additional cookies. You can change your cookie settings at any time.

how to get better at problem solving reddit

  • Housing, local and community
  • Housing and communities
  • Freehold and leasehold property

Leasehold reforms become law

The Leasehold and Freehold Reform Act has become law today.

how to get better at problem solving reddit

Homeowners will receive more rights, power and protections over their homes under the Leasehold and Freehold Reform Act which has become law today.

The Act will make it easier and cheaper for leaseholders to buy their freehold, increase standard lease extension terms to 990 years for houses and flats, and provide greater transparency over service charges. The Act will also remove barriers for leaseholders to challenge their landlords’ unreasonable charges at Tribunal.

It will further ban the sale of new leasehold houses other than in exceptional circumstances, end excessive buildings insurance commissions for freeholders and managing agents, and scrap the requirement for a new leaseholder to have owned their house or flat for two years before they can buy or extend their lease.

The new powers also grant freehold homeowners on private and mixed tenure estates the same rights of redress as leaseholders, and equivalent rights to transparency over their estate charges, and help more leaseholders take over the management of their property if they want to. Leaseholders in some buildings are barred from taking over the management of the site or buying its freehold if more than 25% of its floor space is commercial – such as shops or offices on the ground floor. But this limit will now be increased to 50% to enable more homeowners to access Right to Manage or the right to a collective enfranchisement.

The Act – which has officially received Royal Assent – strengthens existing, and introduces new, consumer rights for homeowners by:

  • Making it cheaper and easier for people to extend their lease or buy their freehold so leaseholders pay less to have more security in their home.
  • Increasing the standard lease extension term to 990 years for houses and flats (up from 50 years in houses and 90 years in flats), so leaseholders can enjoy secure ownership without the hassle and expense of future lease extensions.
  • Giving leaseholders greater transparency over their service charges by making freeholders or managing agents issue bills in a standardised format that can be more easily scrutinised and challenged.
  • Making it easier and cheaper for leaseholders to take over management of their building, allowing them to appoint the managing agent of their choice.
  • Making it cheaper for leaseholders to exercise their enfranchisement rights as they will no longer have to pay their freeholder’s costs when making a claim.
  • Extending access to redress schemes for leaseholders to challenge poor practice. The government will require freeholders, who manage their building directly, to belong to a redress scheme so leaseholders can challenge them if needed – managing agents are already required to belong to a scheme.
  • Making buying or selling a leasehold property quicker and easier by setting a maximum time and fee that for home buying and selling information.
  • Granting homeowners on private and mixed tenure estates comprehensive rights of redress, so they receive more information about what charges they pay, and the ability to challenge how reasonable they are.

The Act will further benefit leaseholders by:

  • Scrapping the presumption that leaseholders pay their freeholders’ legal costs when challenging poor practice that currently acts as a deterrent when leaseholders want to challenge their service charges.
  • Banning opaque and excessive buildings insurance commissions for freeholders and managing agents, replacing these with transparent and fair handling fees.
  • Banning the sale of new leasehold houses so that, other than in exceptional circumstances, every new house in England and Wales will be freehold from the outset.
  • Removing the requirement for a new leaseholder to have owned their house or flat for 2 years before they can extend their lease or buy their freehold.

Share this page

The following links open in a new tab

  • Share on Facebook (opens in new tab)
  • Share on Twitter (opens in new tab)

Is this page useful?

  • Yes this page is useful
  • No this page is not useful

Help us improve GOV.UK

Don’t include personal or financial information like your National Insurance number or credit card details.

To help us improve GOV.UK, we’d like to know more about your visit today. Please fill in this survey (opens in a new tab) .

IMAGES

  1. 5 Problem Solving Strategies to Become a Better Problem Solver

    how to get better at problem solving reddit

  2. how to get better problem solving skills

    how to get better at problem solving reddit

  3. 3 Tips for Effective Problem Solving

    how to get better at problem solving reddit

  4. The most effective problem-solving strat

    how to get better at problem solving reddit

  5. How to Be a Better Problem Solver: Tools to Succeed

    how to get better at problem solving reddit

  6. 5 step problem solving method

    how to get better at problem solving reddit

VIDEO

  1. What’s better? Problem solving or sales?

  2. The unfair way I got good at Leetcode

  3. 3 steps to solve a problem

  4. What are the best examples of "create the problem, sell the solution? (r/AskReddit)

  5. Prioritizing Self-Care 101

  6. How To Fix And Solve Reddit Something Went Wrong

COMMENTS

  1. How to get better at problem solving? : r/learnprogramming

    Step 1: Describe the problem. You will usually get this part wrong. Step 2: Try to solve. Do it wrong, the best way you know how. Step 3: Reflect on your solution. Step 4: Describe the problem. Now that you have context, you can come up with a better solution. Repeat steps 2 and 3, stop trying when you run out of time.

  2. How did you gain Problem Solving skills? Do you believe it's ...

    Becoming good at problem solving would be difficult. You would constantly remind yourself your becoming comfortable and seek out opportunity and relentlessly say yes with confidence. You eventually get good not at problem solving but at not looking like an asshole. I suppose problem solving is a type of self preservation for taking on risk.

  3. How do I become a better problem solver/programmer in general ...

    A big part of solving problems is identifying similarities and that again requires experience. So don't worry too much, just continue dealing with stuff and try to solve things on your own for a while first (and be honest to yourself about that!). Eventually you will become better and things get easier. 2. Award.

  4. How do you guys improve problem-solving skills?

    Problem solving skills only improve through solving problems. Puzzle games are generally not the worst. Yet, the largest part of problem solving can only be covered to a certain degree by them. The largest, and often most problematic part is: understanding the problem in depth. Here, reading the problem multiple times, then taking a break, and ...

  5. IWTL how to improve my problem solving skills and reasoning

    Crosswords will help you practice remembering things you know are up there in your head but have trouble gaining access to (roadblocks of thought). And Plague Inc helps you improve patience and long-term strategy. These are trivial methods, but I'd be willing to be they will do you some good. 3.

  6. How do I get better at problem solving? : r/math

    The general approach though is having a wide set of "tools" (ie study hard and learn a lot of different things). Break the problem down into easier problems or problems you know how to solve. follow through with your work, if it doesn't reveal a solution, reflect and try again. 6. Share.

  7. Finding a problem to solve is hard : r/startups

    A community of individuals who seek to solve problems, network professionally, collaborate on projects, and make the world a better place. Be professional, humble, and open to new ideas. Our community supports side hustles, small businesses, venture-backed startups, lemonade stands, 1-person-grinds, and most forms of revenue generation!

  8. IWTL how to be a better problem solver. : r/IWantToLearn

    Keep things in variable form whenever possible. The very last step is to plug in numbers and get an answer. It's okay sometimes to fall back on numbers to gain some insight into the problem, but understanding the trend of what's going on is far more important than being able to give someone a number. 2.

  9. ️ Selection of the Right Problem Solving Method Explained

    This Community is all about sharing knowledge about Lean Manufacturing, Lean Six Sigma, Lean Management, Quality Management System, etc

  10. A guide to problem-solving techniques, steps, and skills

    The 7 steps to problem-solving. When it comes to problem-solving there are seven key steps that you should follow: define the problem, disaggregate, prioritize problem branches, create an analysis plan, conduct analysis, synthesis, and communication. 1. Define the problem. Problem-solving begins with a clear understanding of the issue at hand.

  11. How Good Is Your Problem Solving?

    2. After a solution has been implemented, I immediately look for ways to improve the idea and avoid future problems. 3. To avoid asking the wrong question, I take care to define each problem carefully before trying to solve it. 4. I strive to look at problems from different perspectives and generate multiple solutions. 5.

  12. How to Practice LeetCode Problems (The Right Way)

    Focus on short statements that help you remember the key parts of the problem you're solving. 5) Ask questions and confirm assumptions. Here's a handy tip for any interview. Always ask questions as the interviewee. Even if you think you know everything about how to solve a problem, and even if you've solved it before—still ask questions.

  13. 12 Ways to Improve Problem Solving Skills

    On the other hand, you might try to save by cutting your spending or by lowering other costs. Use some strategies to help you come up with solutions: Divide and conquer. Break the problem into smaller problems and brainstorm solutions for them separately, one by one. Use analogies and similarities.

  14. How to think like a programmer

    Simplest means you know the answer (or are closer to that answer). After that, simplest means this sub-problem being solved doesn't depend on others being solved. Once you solved every sub-problem, connect the dots. Connecting all your "sub-solutions" will give you the solution to the original problem. Congratulations!

  15. How to Develop Problem Solving Skills: 4 Tips

    Learning problem-solving techniques is a must for working professionals in any field. No matter your title or job description, the ability to find the root cause of a difficult problem and formulate viable solutions is a skill that employers value. Learning the soft skills and critical thinking techniques that good problem solvers use can help ...

  16. Tips to be a better problem solver [Last live lecture]

    Tips on problem-solving, with examples from geometry, trig, and probability.Past episodes with integrated quizzes: https://itempool.com/c/3b1bFull playlist: ...

  17. How To Get Better At Problem Solving

    3. Choose the People to Solve the Problems. Addressing problems and opportunities for improvement should be a group activity, not an individual one. When you bring people together you bring together a wealth of understanding, creativity and challenge. This diveristy often leads to better solutions and outcomes.

  18. How to Effectively Practice CP + Problem Solving Guide

    In short, mostly you only need to use codeforces (no matter what contest you're training for), find a rating range where you can solve around ~30-40% of the time on your own, and just grind down the problem set tab in reverse order of id (the default sorting). Also take part in every live contest you can, and virtual any live contests you miss.

  19. amymhaddad

    How to Get Better at Solving Programming Problems. By: Amy M Haddad. Most of us have been given the same advice: to become a better problem solver, you need to solve more problems. But this advice is too simplistic. Getting good at anything requires more than just reps. It's also how you go about it. Besides, when programmers hear the advice ...

  20. algebra precalculus

    The only problem, though, is that my abilities in problem solving and other stuff in math aren't that good. I do pretty well in my classes (high As) but that doesn't mean anything. The U.S. system doesn't seem too good in actually teaching math. For example, I can do whatever is on my homework or tests.

  21. How to Solve Coding Problems with a Simple Four Step Method

    In this post, we've gone over the four-step problem-solving strategy for solving coding problems. Let's review them here: Step 1: understand the problem. Step 2: create a step-by-step plan for how you'll solve it. Step 3: carry out the plan and write the actual code.

  22. 6 Ways to Improve Your Programming Problem Solving

    Critical thinking. Communication. Teamwork. Focusing on building and practicing all these skills will help you improve your problem solving. Problem solving is one of the most necessary skills for developers to have. With time, practice, and dedication, they can improve it, constantly, and keep becoming better.

  23. The 8 Best Coding Challenge Websites to Help You Level Up Your Skills

    Codewars provides a large collection of coding challenges submitted and edited by their own community. You can solve the challenges directly online in their editor using 20+ programming languages. You can view a discussion for each challenge as well as user solutions. You can earn points and climb the rankings by solving their challenges. Great for

  24. Leasehold reforms become law

    Government activity Departments. Departments, agencies and public bodies. News. News stories, speeches, letters and notices. Guidance and regulation

  25. How To Solve AI's ROI Problem

    You can improve the customer experience. Any effective executive understands the value of listening to your customers. Deeply engaged and passionate customers can help you steer the evolution of ...