I spent the weekend digging up resources for this same purpose. However, I’ll just recommend what I already know and have personally found fruitful.
The most effective (by personal anecdote) and general framework I know of is polya problem solving. In practice, I find that this technique is especially good at getting beginners (and experts) to slow down and plan the implementation rather than rush to a shaky implementation: en.m.wikipedia.org/wiki/How_to_Sol...
I highly recommend checking out the wiki page and, if interested, picking up “How to Solve It.”
A second, more in-depth set of tools I’ve found for problem decomposition is in “The Art of Insight in Science and Engineering” by Sanjoy Mahajan. The applications in this book are all towards approximation questions in physical sciences, but I argue that they are also a beautiful articulation of several key foundations for computational thinking.
Lastly, “The Algorithm Design Manual” by Skiena gives some excellent advice on how to think about finding counter examples to a heuristic in the first chapter (think small, think exhaustively, try extreme cases, etc.) I find this to be a common skill set for assessing the correctness of an algorithm you think you up.
Lastly, since problem solving is a practice before it is a theory, I highly recommend “A Mind for Numbers” by Barbara Oakley as a practical manual on what constitutes effective practice for mathematical subjects.
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.