If you are a software developer, then from time to time you will have to solve an Interesting Problem in optimization, such as finding the best matches on a dating site, or the right sharding key for a database cluster. As often as not, such problems can be expressed as a network of interrelated nodes, and if so, the problem probably has a name and a known solution in graph theory. Your problem now is to know that name so you can Google for the solution.

This book is a charming, breezy intro to graph theory, covering basic terminology and some theorems related to planar graphs, topology, map-coloring, matching, and optimization. I was a course shy of minoring in math in college, and I've taken a handful of courses over subsequent 10 years, so I'm far from a math whiz. But I found nearly every proof and problem accessible, sometimes requiring some effort, but never insurmountably hard. The book promises to be introductory, and I have now been introduced—the next time I run into a stumper while I'm building software, I feel I have a far better chance of recognizing it as a known problem with a standard solution. Highly recommended.