If you search something like "programming books" or "books developers should read" you will get a lot of articles listing the same 5 or 6 books. In this article, I want to bring to your attention some stellar books on coding that don't get the love they deserve.
There are no affiliate links here, just one guy's opinion on some books that merit more recognition. Three of these books are language specific, but don't skip them if they're not your language. The underlying lessons you'll find inside are applicable to development in general. There are no books on this list that are only good for the language they're written for.
The Usual Suspects
These are excellent books that don't get enough attention, but they are only from my personal opinion. I encourage you to add your own in the comments, but remember this list is for "off the beaten path" books. Specifically, I'm avoiding mentioning books like The Pragmatic Programmer, Clean -anything-, The Mythical Man Month etc. You know, the ones that always get mentioned in these kinds of articles.
1. Practical Object-Oriented Design: An Agile Primer Using Ruby
By Sandi Metz, link here.
This book is great for learning more about object oriented programming principles, and an ideal start to transitioning from "beginner" to "intermediate" OOP skills. Honestly, I cannot say enough good things about this book and I'm surprised it doesn't get mentioned more often.
Don't worry if you don't know Ruby. The examples are intuitive enough (and Ruby syntax straightforward enough) that you can still absorb the lessons presented in the book.
2. Test-Driven Development with Python (aka, Obey the Testing Goat)
You can read this one for free online here.
Test-Driven Development with Python is a great introduction to TDD in.. well.. Python and Django. The author, Harry Percival, is pretty great at explaining TDD from the ground up covering unit testing, mocks, and even touching on Continuous Integration.
You'll need a beginner's fluency in Python and some basic web development knowledge to really benefit from this book. Most of the Django parts are explained pretty well in the book as they come.
3. Functional Programming in C#
By Oliver Sturm, link here
This is a good book for learning the FP paradigm, especially if you're coming from an OOP background. The reason this book explains functional programming principles so well is because C# isn't necessarily built for it the way a language like Haskell is. Hence, in order to conceptualize FP concepts, you will have to do a little more work than you would in a purely functional language.
You will need somewhere between beginner and intermediate fluency in C# (or another strongly typed OOP language) to get the full benefit of this book.
4. 24 Deadly Sins of Software Security: Programming Flaws and How to Fix Them
By Michael Howard, David LeBlanc, John Viega
This book covers a surprising range of security issues from command injection to cryptography blunders. In my personal experience, programming how-tos and learning tracks skimp on the security information, making a book like this necessary for burgeoning programmers.
To fully understand the book, you will need some basic, but broad knowledge. For example, you might not appreciate the severity of SQL injection if you don't know anything about databases. Conversely, the book shows examples in multiple languages making it language agnostic (or I guess language polytheistic?)
One downside to this book is that it's a little on the expensive side.
5. Agile Testing: A Practical Guide for Testers and Agile Teams
By Lisa Crispin and Janet Gregory
This may seem like an odd addition, but trust me, it is 1000% worth the read for testers and developers alike. This book is awesome and the authors are active in the testing community. In this book, the authors go over testing strategies, philosophies, tips, and stories encompassing the Agile testing quadrants. I believe great developers are also great testers and to write off the lessons to be learned in this book is to do your career/skill a huge disservice.
I will note, however, that the lessons in this book will be more meaningful if you already have some experience on a software development team (in any role). Without the context of knowing how an SDLC plays out in practice, the book won't come off as poignant as it is.
One other note, the authors also have More Agile Testing in which they share more lessons learned since the first book's publication. That one is pretty good too and definitely suggested if you liked the first one.
Conclusion
I hope you found this list useful. Once you've read the most commonly suggested books regarding software development, it's hard to find good recommendations on your next read. Like I said before, please feel free to add your own thoughts on books worth reading that don't get recommended enough.