Recently, I began working on improving my problem solving skills as a programmer. Usually, this is done by trying to solve a series of increasing difficult puzzles. No, I’m not talking about the rumored Microsoft and Google questions of “How do you move Mount Fuji?” and “How many golf balls can fit in a school bus?” True programming puzzles (at least ones worth solving) are designed to exercise and evaluate your critical thinking skills. One great book for helping increase these skills is Think Like a Programmer: An Introduction to Creative Problem Solving by V. Anton Paul.
The beautiful thing about this book is not just its great repertoire of programming puzzles, but how it helps you turn some of the “intuition” of problem solving into a plan you can implement against any new programming problem (or any kind of logic problem, really). It starts off with classic problems like the Fox, Goose, and Bag of Beans and moves into writing programs to print geometric shapes and algorithm design.
I cannot recommend this book enough for anyone looking to really improve their problem solving skills as a programmer. You can pick up a digital copy on Amazon.