Bob Nystrom's Game Programming Patterns is an engaging, informative book about design patterns that are commonly used in games but are relevant to non-game software too.
I love this book. It's a good introduction to design patterns. Very well-written and entertaining, and filled with real code examples. It's certainly not boring, I was able to read it in about a weekend (and I read slowly). For a free book, that's such a quick read, it has a surprising amount of knowledge in it.