So much to read! So much to learn!
There are lots of programming books out there. Find the ones that will help you achieve your goals.
When I first started teaching myself about programming concepts, I didn’t do too much reading. I thought, that the best resources for learning about computers would be: on computers.
Don’t underestimate the power of reading.
Without a doubt, there are loads of excellent learning resources on the internet. However, I have also found there are just as many great programming books out there. If you truly want to streamline your learning progression, then utilize as many quality resources as you can.
That being said, I feel obligated to give you fair warning. Books can be addictive. I personally suffer the effects of book addiction. Frequently, I find myself on Amazon, telling myself it will be the last one as I select the “Buy Now” button. It is never the last one.
Never stop reading!
This is the way I see it: you can’t put a price on knowledge. Read the books you buy. Buy the books you will read. That being said, I have not read all of the books in my library yet, BUT one day I will have read them all. That is my goal.
Let me share with you the books that are currently in my collection. Keep in mind that programming is a vast and ever-changing subject, so there might be some books on this list that are not relevant to your goals. On the flip-side, this list might be missing some of the books that might be better-suited for your needs.
That’s ok. My goal is to simply provide a list of the books with the hopes that you find at least a few that might be helpful for you.
I am not a big fan of ranked lists. These books are going to be listed in alphabetical order. Ready? Ok let’s go!
Authors: Robert Sedgewick, Kevin Wayne
Let’s start the list off with a classic. This book is used in universities throughout the world and is considered one of the best resources for algorithms and data structures.
2. An Introduction to Programming in Emacs Lisp
Author: Robert J. Chassell
Emacs is a powerful text editor. Lisp is the main scripting language for Emacs. This book will give you a more thorough understanding of Emacs and allow you to use more of Emacs’ functionality.
3. Automate the Boring Stuff with Python
Author: Al Sweigart
This is a great book for someone with a beginner to intermediate skill level with Python. It is packed full of exercises that allow you to create programs to automate some of the mundane activities that the you might do on a day-to-day basis.
4. Big Data: Using SMART Big Data, Analytics and Metrics To Make Better Decisions and Improve Performance
Author: Bernard Marr
As data becomes more and more important in our society, it can be tough to separate the signal from the noise. This book by Bernard Marr helps to clarify what is important in our data-driven world and illustrates exactly how data influences business.
5. Blockchain Bubble or Revolution: The Present and Future of Blockchain and Cryptocurrencies
Authors: Aditya Agashe, Neel Mehta, Parth Detroja
Blockchain and Cryptocurrency technologies are gaining more and more traction throughout the world. Some say it is a scam. Others say it is the future. Use this book to help you separate the fact from fiction.
6. C Programming: A Modern Approach
Author: K. N. King
If you want to learn C, then this is the book for you. The author presents the material in such a way that allows intuitive learning. The exercises are engaging and the progression of material has a natural flow.
7. Clean Code: A Handbook of Agile Software Craftsmanship
Author: Robert C. Martin
In the world of programming, every programmer should strive to keep their code clean. Poorly written code is tough to read by other programmers and can cost valuable time for them to try to make sense of it. Time lost is money lost, so strive to keep your code clean.
8. Code: The Hidden Language of Computer Hardware and Software
Author: Charles Petzold
This book explores the origins of the computing world as we know it! Only by understanding the past, can we truly understand the present. Get a better idea of what technology is relevant today and what will be relevant in the future.
9. Cracking the Coding Interview
Author: Gayle Laakmann
Interviews for programming interviews are known to be tough. If you know Java, use this book to prepare for algorithm and data structure questions and ace your next tech interview!
10. Design Patterns: Elements of Reusable Object-Oriented Software
Authors: Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
This book receives criticism as being bit of a dry read. I am going to have to agree. However, there is just so much information packed in this book that I just had to include it. It is considered a classic too, so it definitely belongs on every programmers shelf.
11. Designing Data-Intensive Applications
Author: Martin Kleppmann
“Yea, but does it scale?” If you have ever heard someone utter this phrase and you are wondering what they are talking about, then give this book a shot. It is a wonderful tool to learn more about distributed systems and scalability.
12. Django for Beginners
Author: William S. Vincent
A great book to start learning about Django! Gives you the exact instructions needed to create your first Django projects. Allows you to get a good feel for Django before you go off to create your own projects.
13. Django for APIs
Author: William S. Vincent
The next book in the series by William S. Vincent. By the end of this book, you will have three Django back-ends created.
14. Django for Professionals
Author: William S. Vincent
The third book in the series by William S. Vincent. This book is truly an excellent resource. It provides a thorough overview of all of the components that are required for a production-ready website. Great way to get acquainted with industry standard.
15. Don’t Make Me Think, Revisited: A Common Sense Approach to Web Usability
Author: Steve Krug
When creating a website, you need to always keep the user in mind. A visitor to your site should never ever be confused when navigating through your site. Use this book to make your website a truly user-friendly experience.
16. Effective Java
Author: Joshua Bloch
An excellent Java resource. It truly does a terrific job at explaining some difficult concepts. Perfect for an intermediate student of Java.
17. Elements of Programming Interviews in Python
Authors: Adnan Aziz, Tsung-Hsien Lee, Amit Prakash
Interviews for programming interviews are known to be tough. If you know Python, use this book to prepare for algorithm and data structure questions and ace your next tech interview!
18. Exploring Raspberry Pi: Interfacing to the Real World with Embedded Linux
Author: Derek Molloy
The Raspberry Pi is a great way to learn more about the Linux operating system and the Internet of Things. This book has plenty of fun things that you can do with your Raspberry Pi.
19. Fluent Python
Author: Luciano Ramalho
A book for the more intermediate student of Python. Take your Python skills to the next level with this excellent book from Luciano Ramalho.
20. Forge Your Future with Open Source
Author: VM (Vicky) Brasseur
Every programmer should give back to the open source community. This book will explain why it is important to contribute to open source and will also show you how.
21. Grokking Algorithms: An illustrated guide for programmers and other curious people
Author: Aditya Y. Bhargava
Probably the most painless way to learn algorithms. Lots of cartoons. Lots of fun. A great introduction into algorithms.
22. High Performance Spark
Author: Holden Karau, Rachel Warren
In the world of data, Apache Spark is kind of a big deal. Learn how to use Spark and become a data-mining pro.
23. Hooked: How to Build Habit-Forming Products
Author: Nir Eyal
If you are the owner of a website, then your goal should be to have your visitors coming back, again and again. Read this book by Nir Eyal to establish a recurring user base.
24. How to Transform Your Ideas into Software Products: A step-by-step guide for validating your ideas and bringing them to life!
Author: Poornima Vijayashanker
Have an idea that you would like to see transformed into a software product? Oh, you do?! Then get this book. It will definitely help you out with a few things.
25. HTML and CSS: Design and Build Websites
Author: Jon Duckett
This book is a visual masterpiece. I still remember the first time I opened it. I was truly impressed with its colorful and playful design. Aesthetics aside, this book is jam-packed with the essentials for HTML & CSS.
26. Introduction to Programming in Java: An Interdisciplinary Approach
Authors: Robert Sedgewick, Kevin Wayne
Want to start learning how to program in Java? If you do, then this is a pretty decent book to get started with.
27. Java Precisely
Author: Peter Sestoft
Here is another great Java book. It is geared more towards the intermediate Java student.
28. Kubernetes in Action
Author: Marko Luksa
So what is Kubernetes? If you really want to know, then get this book! It is loaded with tons of detail to make sure that you get well-acquainted with Kubernetes.
29. Learning from Data
Authors: Yaser S. Abu-Mostafa, Malik Magdon-Ismail, Hsuan-Tien Lin
Machine Learning is becoming increasingly prevalent in today’s data world. This book does a great job at sticking to what is truly important when it comes to Machine Learning.
Author: Robin Nixon
If you are trying to build a responsive website, then this might just be the book that you are looking for. It has a nice cover too.
31. Learning Spark
Authors: Holden Karau, Andy Konwinski, Patrick Wendell & Matei Zaharia
Here is another good book for Spark. If data analytics is your thing, then the more that you know about Spark, the better.
32. Mastering Bitcoin
Author: Andreas M. Antonopoulos
Bitcoin is a bit of a buzzy word these days. Learn about the truly important stuff when it comes to Bitcoin.
33. Mastering Emacs
Author: Mickey Petersen
Becoming proficient with Emacs can definitely be a bit tricky. This book makes things a whole lot easier. Trust me.
34. Practical Vim
Author: Drew Neil
If you want to be as fast as possible when hacking away at your code, then Vim just might be the text editor that you are looking for. If you want to learn Vim, then this just might be the book that you are looking for.
35. Practices of the Python Pro
Author: Dane Hillard
Dane Hillard takes a unique approach and explores what practices a successful Python developer should employ. A good book if you like Python and aspire to become a developer.
36. Pro Git
Author: Scott Chacon
A great introductory book to learn all about Git and see how it is used in the programming world.
37. Python Crash Course
Author: Eric Matthes
This is the book that started it all for me. This is my very first programming book! It does an exceptional job at being both understandable and enjoyable. Highly recommend!
38. Python Data Science Handbook
Author: Jake VanderPlas
Out of all of the programming languages, Python might be the most well-suited for data mining. This book is a great resource if you are using Python for data analytics.
39. Python for Data Analysis
Author: Wes McKinney
Another book for data analysis with Python. This book focuses on the Python libraries that make Python such an ideal choice for data analytics.
40. R for Data Science
Authors: Hadley Wickham, Garret Grolemund
In addition to Python, R is also a powerful tool when it comes to data mining. Get this book to learn more about R.
41. Raspberry Pi User Guide
Authors: Eben Upton, Gareth Halfcree
If you get a new Raspberry Pi, it can be kind of tricky to figure out what you need to do to get it up and running. This book is a great way to become acquainted with the Raspberry Pi and get a solid understanding of what it is meant to be used for.
42. Refactoring: Improving the Design of Existing Code
Author: Martin Fowler
When some code is written for the first time, it may be functional, but it might not necessarily be written the best way. Refactor code to make it as readable and efficient as possible. This book does an excellent job of describing the why, when, and how of refactoring.
43. Serious Python
Author: Julien Danjou
This is a great book if you want to learn how to build a web application using Python. It covers a range of topics including frameworks, databases, and scalability.
44. Structure and Interpretation of Computer Programs
Authors: Harold Abelson, Gerald Jay Sussman, Julie Sussman
This book is supposed to be a real game-changer. If you want to level up your code-level to wizard status then this is definitely the book for you. You should be warned: it is definitely for the advanced programmer.
45. Structured Design: Fundamentals of a Discipline of Computer Program and Systems Design
Authors: Edward Yourdon, Larry L. Constantine
Want to mix things up a bit and learn about something besides object-oriented or functional design? Then give this book a shot and learn a bit about structured design.
46. Technical Blogging: Amplify Your Influence
Author: Antonio Cangiano
If you want to start a blog, but are not sure where to start then this is the book for you. It does a great job of describing all of the critical features that should be present in order for a blog to be successful. You can use this tutorial too if you are interested in creating a blog.
47. The Algorithm Design Manual
Author: Steven S. Skiena
A great book for Algorithms! The exercises are engaging and the descriptions are thorough.
48. The Complete Software Developer’s Career Guide
Author: John Sonmez
If your goal is to get a job as a software developer then you need this book! There is so much terrific advice in this book. John Sonmez truly covers all aspects of career development for an aspiring developer.
49. The Linux Command Line
Author: William Shotts
This book is great! Using the Linux command line for the first time can be tough. With lots of detailed explanations and engaging exercises, this book will make you a command line pro in no time!
50. The Mythical Man-Month: Essays on Software Engineering
Author: Frederick P. Brooks, Jr.
Having more software developers assigned to a project does not necessarily mean that the project will get done sooner. In this book, Brooks shows how to find the optimal number of developers that should be assigned to a project.
51. The New Hacker’s Dictionary
Author: Eric S. Raymond
There are certainly lots of programming words to keep track of. Get this book and use it as a handy humorous reference.
52. The Pragmatic Programmer: From Journeyman to Master
Authors: David Thomas, Andrew Hunt
Use this book to learn what it means to be a modern-day programmer. Once you have a job as a software developer, this book will allow you to be the best developer that you can be.
53. The Singularity Is Near: When Humans Transcend Biology
Author: Ray Kurzweil
Why need a brain when you could have a computer instead? Maybe your brain is already a computer? Maybe nothing is real? I don’t have the answers to these questions. I am just a guy with a blog. Ray Kurzweil has the answers, though. Read his book and find out more.
54. Two Scoops of Django: Best Practices for Django 1.8
Authors: Daniel Roy Greenfield, Audrey Roy Greenfield
This book contains all of the best practices that you should employ if you are using the Django framework to create a web application. Definitely not a tutorial, but a great resource for guidelines that will make your application great.
55. Web Scalability for Startup Engineers
Author: Artur Ejsmont
A great beginner’s book for system design and scalability. Learn about the infrastructure that the world’s most popular web applications are built upon.
56. Web Scraping with Python
Author: Ryan Mitchell
There is lots of data on the internet, just waiting to be scraped. Use Python to develop some crawlers to do it.
57. Working Effectively with Legacy Code
Author: Michael C. Feathers
Working with old code in old systems can certainly be a challenge. Use this book, so that working with legacy code is a bit easier and less stressful for you.
Well, what do you think?!
I hope that you were able to find a book here that will bring you one step closer to your goals.
If there is a book that is not on this list, but you think that it should be, then please by all means include it in the comment section below.
Well, I sure do hope that this was helpful for you.
This is a very impressive list, Daniel. I read many of these and wholeheartedly agree with your assessment and choice of including them. Also, thank you for including my blogging book. 🙂
Thank you for the kind words, Antonio! It is good to know that someone out there likes the same books that I do! Also, it was a no-brainer to include your book. I wouldn’t have been able to create this blog without it!
I’d love to see Tiny Python Projects (http://tinypythonprojects.com/) make it on to that list someday!
I was just looking at Tiny Python Projects for a bit and I think that it might find its way on the list someday! : )