Below a small list of books that I can personally recommend for reading to all programmers, including beginners. As it usually happens that I bought, I sell it.
Computer Science fundamentals
Computer Science Distilled (Wladston Ferreira Filho)
This is an super-"based" book which is well-suited for beginners, particularly for those who have no specialized education.
Harvard CS50 video course
This is not a book, but perhaps the best that you can find for training a base. This is a magnificent Harvard course, on the example of which you will understand why people seek to get to study in places such as Harvard. You can watch this course online absolutely free.
Also, you can earn a certificate on edx.org or on the Harvard website. The course is regularly updated, so if you started, it is better to finish in the same year.
Programming
Object-Oriented Thought Process (Matt Weisfeld)
I would describe this book as the initial one for those who want to use the OOP in their work. I know that this book is not very popular, but it personally helped me in due time to "set up" some concepts in my head.
Head First Design Patterns (Eric Freeman, Elisabeth Robson, Bert Bates, Kathy Sierra)
There are two versions of these books - one of them contains illustrations for better understanding. Understanding the patterns will allow you to structure various approaches in your head and communicate in the same language with other programmers, choosing solutions for certain problems.
Clean Code (Robert Martin)
In the book you will find a set of rules that will help you write understandable for yourself and, which is much more important in large companies, a code understood for other programmers. The sooner you read this book, the better.
Test Driven Development: By Example (Kent Beck)
Sometimes programmers neglect testing (which is bad). The book will inspire you to write tests, or at least give food for thought.
Algorithms and data structures
Grokking Algorithms (Aditya Y. Bhargava)
The book gives basic ideas about the algorithms and data structures. The book is loved by many for its simplicity, with which the author explains key principles. If you read, understand and implement everything that is in this book, then you should not have problems with the next book. It is recommended to read the updated (fixed) version of the book.
Cracking the Coding Interview (Gayle Laakmann McDowell)
Essentially, this book is intended for those who are going through interviews at major technology companies. A lot of material is dedicated to the main section – algorithmic.
System Design
System Design (Alex Xu)
A well-structured book that is often recommended for reading before undergoing interviews. Numerous diagrams, describing various 'IT-related' things, by the same author can be found online.
High Load
Designing Data-Intensive Applications (Martin Kleppmann)
Famous "book with the boar", one of the fundamental books for a programmer who wants to proudly call themselves a Software Engineer.
Management
Software Engineering at Google (Titus Winters, Tom Manshreck, Hyrum Wright)
The book provides general insights into development at tech giants like Google. You can learn how to be a good manager, hire engineers and evaluate their performance, test, scale, and decide on tools to use – a lot of useful content.
Agile Estimating and Planning (Mike Cohn)
In my opinion, the book is somewhat verbose. However, it contains very detailed descriptions of team interactions working with Agile methodology, which you'll start to understand and use better.
Afterword
It would be interesting to see your minimum set of books in the comments. If there are any remarks, I'll try to improve the article or publish an updated version later.
Top comments (0)