I really like reading in general but especially reading technical books. In contrast to digital content, a book must pass a technical review before publication. This ensures to a certain degree that the content is good or at least not entirely wrong.
When searching for information online you must always ensure that you are not consuming outdated or incorrect information. This can be quite hard if you want to learn a new programming language or paradigm because you don’t recognise what’s incorrect.
The Algorithm Design Manual – Second Edition (Steven S. Skiena)
My absolute favourite book!
I think algorithm design is super interesting and I like Skiena’s writing style. The book gives a brought overview of the different kinds of algorithms sprinkled with entertaining stories from his experiences with clients.
At the end of each chapter, sources for future reading, a few exercises and challenges to deepen the learning are given.
After reading the book you will know how to recognise algorithmic problems and abstract your concrete problems to the standard algorithmic problems. You can skip through the book and check if one of the standard problems looks like the one you are trying to solve.
Once you know what your problem is called it’s a lot easier to find a solution. If you’re unlucky your problem resides in the NP part of the book but this also means nobody else is able to solve it efficiently at the moment.