Prep: Engineering Topics: A more effective way for problem solving - mwilkin-401-advanced-javascript/bend-javascript-401d2 GitHub Wiki
Programming or software development is about solving problems. Regardless of the scale of the problem, becoming a better programmer means developing or improving your problem solving skills. How is this done? Well, to account the randomness of the problems you will encounter, systematizing your problem solving approach will ensure that you are not reaching a solution by either blind luck or guessing. To that point, R. Reis in "How to think like a programmer - lessons in problem solving" references an article from Hack Rank(2018 Developer Skills Report) that "Computational thinking or the ability to break down large, complex problems is extremely valuable in the work place, more so than the baseline technical skill." Problem solving is a central and fundamental skill to being a productive and valuable employee. It is, therefore, worth developing as a skill and following a systematic approach will help.
Steps for better problem solving:
- Understand; know what is being asked: verbalize it, write it down, draw a diagram, etc. Be able to explain it to someone else, if you can't then you don't understand the problem.
- Plan your solution. Work you plan. Write down the exact steps and then follow them.
- Divide or reduce the problem into sub-problems and solve the simplest one first. Then connect all the sub-solutions.
- Stuck? Don’t get irritated get intrigued. Debug, step-by-step. Reassess the problem. Research.
- How do you get better? Practice: micro-problem solving. This can take many different forms: playing video games, practicing coding problems, play chess, etc. Essentially, practice problem solving.
I've always loved problem solving, be it puzzles, streamlining processes, or finding the best way to hard boil an egg. I've never thought of systematizing my approach to problem solving in such a formal way, but I can see it's merits. It'll help ensure that you don't get lost in the weeds or mired down when the problems get complex.