Before reading through endless posts on "best books for learning how to program" or the like, you should ask yourself what you want to achieve. I would consider:
- What area of programming do you want to start with? Gaming, Web development, data?
- Is it a specific language you want to learn?
- Do you have a specific goal in mind?
For example, there is no reason to buy "clean code" if you want to dip your toes into web development. Also consider starting out with online resources instead of spending on books, there is a ton of content on youtube. However if you are like me you probably enjoy the mix of it all and thereby the books as well! You can also check out my post on what makes a great developer here. Let us move on to the list!
Disclosure: Bear in mind that some of the links in this post are affiliate links and if you go through them to make a purchase I will earn a commission. Keep in mind that I link these companies and their products because of their quality. The decision is yours, and whether or not you decide to buy something is completely up to you.
The Pragmatic Programmer: From Journeyman to Master
Author: Andy Hunt
This is a great book for learning general terms in programming and how to continuously improve. This is also one of the first books I read on software development. I remember when I read it I was about a year into my professional career - which I think is the perfect time to read it. Many of the things mentioned in this book are very basic and easy to understand. If you are new to programming you may learn a great deal from this book. If you have years of experience it will likely confirm what you are doing is right (or wrong). Therefore I believe this book is great for developers of all levels of skill.
Something that you will learn is how to approach development pragmatically. This book will guide you through the obstacles and technical decisions in the daily work of a programmer. Amazon has the following summary of its contents:
- Fight software rot
- Learn continuously
- Avoid the trap of duplicating knowledge
- Write flexible, dynamic, and adaptable code
- Harness the power of basic tools
- Avoid programming by coincidence
- Learn real requirements
- Solve the underlying problems of concurrent code
- Guard against security vulnerabilities
- Build teams of Pragmatic Programmers
- Take responsibility for your work and career
- Test ruthlessly and effectively, including property-based testing
- Implement the Pragmatic Starter Kit
- Delight your users
Head first Design patterns
Authors: Eric Freeman, Bert Bates, Kathy Sierra and Elisabeth Robson
Do you want to learn about design patterns? look no further! When I first read this book I did not appreciate it enough, but after a couple of years in the industry I found it to be such a great dictionary for design patterns.
Even though this book is very technical with a lot of code to grasp. It is still relatively easy to read. It has some great examples and humor. The examples in this book are in Java, but they are applicable for most programming languages. The examples are easy to follow and gives you hands on experience. If you already have this book and is looking for an alternative. You could try an older book I also have enjoyed: Design Patterns: Elements of Reusable Object-Oriented Software
Author: Jon Duckett
... and both of these books are visually beautiful!
Don't make me think
Author: Steve Krug
Another book that is closely related to web development is "Don't make me think" and anyone working with interfaces can benefit from this book. I used to do this a lot myself, and during my time working with web development I read the book "Don't make me think". This is a fantastic and comprehensive book on usability. Steve Krug takes you through many annoying and irritating situations while dealing with the web. He illustrates the user's frustration in a way which makes you feel compassion. There is a lot to learn from this book and it is also a great entry level book for User experience. Even though the book focuses on web development, it can still be used for general user experience.
His overall mantra "Don't make me think" is the theme throughout the book. If you have to think in order to use an interface - then it is not that good. Whenever a user interface is not meaningful or frustrates me, I think of this book.
This book is excellent to bring on a vacation, as it is short, fun and inspiring.
Learning C# by Developing Games with Unity 2020
Author: Harrison Ferrone
The first of the two "learning to do game development" books on this list. This book was written by an author who wished he had this resource when he first started out. The book starts with simple terms and then goes on to more advanced topics. It has a focus on Unity and creating games which gives you something visual to look at, which often makes learning a new language more fun and easier.
The Author writes that the two key takeaways of the book are: "anyone can learn to program, and programming is a muscle - the only way to get better is to exercise it".
The C# Player's Guide
Author: RB Whitaker
Sorry for pushing two Unity and C# books, but I do believe that if you want to get into game development, Unity is an excellent place to start. It also opens up a lot of future possibilities.
This book starts out by setting you up to start coding in C#. It the moves on to the simple mechanics and structures of the language: variables, if statements loops and methods. It then moves on to object-oriented programming and how to structure code so that it is reusable. At the end it demonstrates some of the more advanced features of the language.
There are many exercises in this book which creates a hands on approach, they are well covered by examples so you are not left wondering how it all fits together, like you do in some other books.
Beginning Database Design Solutions
Author: Rod Stephens
Last book on the list! It is quite hard to find good books on database design and development, but I thought I would include one on this list. Most books on databases teach you how to create a table, an index or make a query. This book teaches you how to design your database so that it matches your needs (and in the end your customers needs). Even better, it tells you what mistakes to avoid! The book iterates through different types of "databases" such as XML, flat file databases, spreadsheets, and of course relational databases.
That is all
I hope you enjoyed this list, please leave a comment down below! As mentioned I have included different types of books for different needs, let me know if I missed a category or a good book!