Top 10 Books For Software Engineers
So you want to improve as a Software Engineer? There are plenty of blogs and tutorials online, but they often lack the depth of understanding that you can get from a real book.

So here is a rundown of the top 10 books for Software Engineers.
Personal Development
The Pragmatic Programmer – Addison Wesley
This book address the important aspects of becoming a programmer, from personal responsibility and career development to architectural techniques to apply to build reusable and competent code. A must for new software developers. Get It Here
Managing Humans: Biting and Humorous Tales of a Software Engineering Manager – Michael Lopp
How better to remember answers to serious topics? Through the use of humorous stories, of course. And this book does that the best. Michael Lopp tells sometimes unbelievable stories from his time in Apple, Pinterest, Slack and others. This book is suited not only to managers or aspiring managers but also to devs wondering what the heck their manager does all day! Get It Here
Cracking the Coding Interview, 6th Edition: 189 Programming Questions and Solutions – Gayle Laakmann McDowell
If you wanted a book on how to pass an interview, it would be ideal if that book was written by a Software Developer, especially if they had previously been on both the hire and recruiter side of the hiring process; even better if that person had worked with Microsoft, Google, Amazon, Apple, IBM and others. Well, good news, that book exists! It’s Cracking The Coding Interview by Gayle. Get It Here
CS Theory
Clean Code – Robert Martin
Clean code is a classic book takes you past being able to understand code, to being able to truly write very good applications and services. Think of it as the difference between being handed a block of iron and told you can make tools with it to a blacksmith teaching you how to work that block of metal into a world class sword.
This book focuses on Java but can be adapted to suit most programming languages. It’s highly recommended. Get It Here
Design Patterns: Elements of Reusable Object-Oriented Software – Erich Gamma
A mouthful of a title and the age of the book (obvious by the cover) may initially be off-putting however this classic book is still very relevant in 2019. Due to its age, it actually cuts through all the modern ‘fads’ and gets to the core of Object Oriented design, including the reasons why design patterns are so useful. Get It Here
Technical
Effective Java: Third Edition – Joshua Bloch
One of the long-claimed books on Java programming is now in its third iteration, covering Java up to 9. This is one for those looking to really understand best-practice coding in it’s easy to read ‘item’ form. Each item is a comprehensive and specific description of what to do, not to do and why. Get It Here
Head First Design Patterns – Eric Freeman
Here’s a book that really gives you the technical knowhow to design real world applications using design patterns. While design patterns are one of the most important aspects of software development, they are often missed from CS degrees. Head first have a very unique presentation style that most people love, so it’s definitely worth a read.
As an added bonus, it’s a great book to freshen your knowledge before interviews as design patterns are nearly always brought up. Get It Here
For Younger People
Coding For Dummies – Nikhil Abraham
Despite the offensive name, for dummies books are some of the most popular leaning series. Especially good for new programmers getting to grips with the syntax and jargon, for dummies explains the core of coding in a memorable way. Get It Here
Python Basics – The Coding Club
Wanting to teach software development to a young person and maybe brush up on the basics as you go along? No better book than Python Basics by The Code Club. Get It Here
Reference
Beginning Programming: All-In-One Desk Reference For Dummies – Wallace Wang
Another For Dummies book, this one is perfect for a coder at any stage of their career. Having this book to hand is so helpful when you just need to remember that tree traversing algorithm, methods of sorting, or which loop to use in your application. I’d recommend this not as a cover-to-cover read, but as a go-to when you need to refresh your memory. Get It Here