5 Resources to Improve Your Problem-Solving Skills
Tags: webdev, javascript, beginners, programming
Published: 2024-03-13 19:12:56

Problem-solving is the arguably the most important skill for beginners to learn, but it’s not something that they will often be exposed to during the self-learning stage. While free resources like The Odin Project or Free Code Camp are a great way to broaden your technical knowledge, they don’t usually focus on how to think through problems and come to efficient solutions based in best practices. Fortunately, there are many resources available that can help you develop your skills.

## 1. Rithm School's [problem-solving workshop](https://us02web.zoom.us/rec/play/BdpmEvoBWFdV681xu4p4ah1ghm_lLP2yuoE4vsP0yD_U4ALWtfDhQAzzNaAKUtEcsneyKA5s2bTxysKI.YpxvHnpf3EAcOmex?canPlayFromShare=true&from=share_recording_detail&continueMode=true&componentName=rec-play&originRequestUrl=https%3A%2F%2Fus02web.zoom.us%2Frec%2Fshare%2FcB2h3brC-o1_2altupPBsum8XNjm5XStp7WDiYtlGb2ZnIqq-0Jrk7VAYYz4UZCA.3B7RMM2ITx-Bo3BV)
Take the time to watch this helpful video on how to solve problems like a software engineer. During this interactive workshop, Elie talks through valuable tips like writing pseudocode, thinking through edge cases, and using debugging strategies.


## 2. This [six-part blog series](http://rithmschool.com/problem-solving-strategies-01/) on the problem-solving process 
Take a deep dive into the problem-solving process. In this blog post, we break down the process into six simple steps:

1. Understand the problem.
2. Explore concrete examples.
3. Break it down.
4. Solve a simpler problem.
5. Use tools strategically.
6. Look back and refactor.

By the end of the series, you’ll have a much better understanding of how to tackle the coding challenges in front of you.



## 3. Our favorite problem-solving platform, [Codewars](https://www.codewars.com/)
Codewars is a great free tool for upping your problem-solving skills. Their platform allows users to create and solve problems in just about any language imaginable, at any skill level. Codewars sorts their problems from 8 kyu (easiest) to 1 kyu (hardest). In addition to that, you can also practice:

**- Writing pseudocode before you start coding.** Going back to step one of our problem-solving process, you can’t solve a problem before you understand it. Make sure you understand the problem like a human before you start thinking through it like a computer.

**- “Being your own computer” before you run your code.** Manually step through each piece of your code to make sure it behaves the way you expect it to, and that it meets the requirement to solve the problem you’re working on. It helps to talk through this out loud to whoever you have available to you—now’s the perfect time to turn your cat into a colleague!
 
**- Time yourself as you code.** Time yourself each time you solve a problem. The next time you solve a problem, try to do it a little faster. This will help you get used to coding under time pressure, and will make you quicker and more confident as you work.

## 4. [*Algorithmic Puzzles*](https://www.amazon.com/Algorithmic-Puzzles-Anany-Levitin/dp/0199740445) by Anany & Maria Levitin
*Algorithmic Puzzles* is a book we often recommend to learners who struggle with problem-solving during their technical interviews. The book begins by walking you through algorithmic design techniques such as backtracking and divide-and-conquer. After learning about these techniques and how to analyze algorithms, you’ll move into three sets of 50 increasingly challenging puzzles where you’ll put your knowledge to the test. This book is a great resource and is very popular with our teaching staff!

## 5. [*Eloquent JavaScript*](https://eloquentjavascript.net/) by Marijn Haverbeke
This book comes highly recommended by our instructors, and has been used by lots of successful Rithm grads. This book not only serves as a great introduction to JavaScript, but also will guide you through five projects you can build to apply what you’ve learned. The full text of the book, as well as the associate code sandbox and exercise solutions, can be found for free [here](https://eloquentjavascript.net/).

Developing your problem-solving skills is essential for success as a software engineer. By taking advantage of the resources we’ve shared in this blog post, you can learn the techniques, strategies, and tools you need to tackle even the most complex challenges. Remember to approach problem-solving with a growth mindset, be persistent in your practice, and don’t be afraid to ask for help when you need it. With practice, you’ll become a confident and effective problem-solver, able to take on any challenge that comes your way.