In today's article we have collected some of the most popular books selected by the developers themselves - residents of Reddit, Quora, Stack Exchange, Stack Overflow and Hacker News.
Our selection includes works on popular programming languages, software design, working with Linux-systems, collections of practical advice for developers - from beginners to experienced. This selection is combined by the high marks of the programmers themselves, who were helped by these books at different stages of their careers.
/ photo by Marketa CC')
About computer device and development in general
Let's start with books that will be useful to those who take the first steps in the development or want to "close the gaps" in basic knowledge.
This book provides an answer to the question of how a computer works. Here you will not find modern practices and programming tips, but you will be able to delve into the basics and history of computing systems.
Craig Rowe, leader of the Dootrix development team,
admits that he read the book only because Joel Spolsky, the author of the blog Joel on Software and one of the founders of Stack Overflow, called it the master read. At first, Craig doubted whether to read the book, because it was published in 2000. But in the end I read and was satisfied: the book helped him fill in the blanks on topics missed during his studies, and the narration in the format of a sequence of historical events made it possible to read fascinating.
The approach to the story in this book is different from the traditional. It is built in the form of a dialogue between the author and the reader, and the pages are not divided into paragraphs, but into columns with questions and answers. Users of Hacker News
note that due to the informal style the book is easy and not boring to read. The questions and answers in the book are gradually becoming more complicated, so it will not be too easy at the time of reading - there is even a
thread on the Stack Exchange with a discussion of how to read it correctly.
Another book about the computer device for readers of any level. It describes the general principles of the computer in accessible language. One of the authors of the WirelessMoves blog
claims that just 30 minutes with this book allowed him to understand how the CPU works - the blogger admits that, despite experience and theoretical knowledge, for him this section was a kind of “white spot”. The specifics of the book will help to do the same even for those who do not know anything about electronics.
There are many practical problems in the book, the solution of which is far from being always given - some see this as another of its virtues. As a supplement to this book, Reddit users
recommend paying attention to
The Elements of Computing Systems .
This book has both fans and opponents. It focuses on functional programming and how to
think about programs. Initially, it was written as an introduction to programming, which is why it is mainly aimed at beginners.
This book became popular due to the
recall of Peter Norvig, director of research at Google. Peter draws an analogy with cars: SICP is suitable for those who want to understand how a car works, what it consists of, and how to build a safe and reliable car, but it is unlikely to please those who just want to learn to drive.
This is not an easy reading; the book requires concentration and thoughtful study. Because of its complexity, some even
arrange a SICP challenge
for themselves: in order to get through it, you need to finish reading a book to the end. If time is too expensive for you, you can pay attention to the
short version of the book.
About algorithms
Programmer Philip Buuck
claims that this book has become the most exciting book about data structures of all that he has ever read. Steven Skiena, author of the book and professor of computer science at the University of New York at Stony Brook, in an understandable language explains the reader complex things, and at the end of each chapter gives a lot of exercises.
However, the opinions of residents of Stack Overflow on this book are
divided : someone confidently recommends it to beginners, and someone only advises to look through the first 200 pages. By the way, Stephen Skien in 1988, together with his team,
came up with and
described a concept similar to an iPad at a competition to develop a computer of the future.
The fundamental monograph on the principles of the algorithms and data structures from an outstanding computer scientist, professor, mathematician and programming ideologist Donald Knuth (
Donald Knuth ). This book is not easy to read, but according to residents of the
Hacker News and
Stack Exchange , it is worth the effort.
Bill Gates was ready to review a resume of everyone who mastered this work. It took Gates himself "a few months in the context of the strictest discipline."
About Linux intricacies
This book will help those who have just started learning Linux. This is not a guide or reference book. However, if you want to understand the principles of distribution kits, network subsystems, or other components of Linux, the book will tell you about it in detail and in depth.
According
to Phil Bull, an astrophysicist at NASA, the problem with many Linux books is that they try to grasp the immensity. Authors are often torn between a common but superficial material and a description of the specifics of a particular distribution.
The author of this book has managed to find a balance between the data on the system as a whole and more detailed information.
According to the app developer Frank Cleary (Frank Cleary), the book helped him to better understand how different components of Linux interact, and to apply this knowledge in their work.
According
to Dave (Dave C), the system administrator, developer and author of the YouTube
tutoriaLinux channel, if you want to read only one book on system administration, you should choose this one. The book will be a good reference and allow you to quickly find the information you need thanks to convenient content.
Residents of Reddit
note that it will tell you the right tools and learn how to manage popular server distributions. The author of the book, teacher and engineer Evi Nemeth (Evi Nemeth) is
known for deep knowledge in the field of system administration and network technologies. In addition to working in IT and teaching, Evie was fond of yacht tourism and went on her yacht Wonderland to different parts of the world. In 2013, she and her crew sailed on a Niña yacht in the direction of Australia and
went missing somewhere along the way.
According
to 95% of people who left a review on Amazon, this book is the best reference for Linux. It tells about operating systems in general and about Linux in particular, provides historical background, C code examples and 200 exercises.
The author of the book, Michael Kerrisk (
Michael Kerrisk ) - a programmer and creator of the
Linux project
man-pages has received wide recognition for this volume (1500+ pages) work among Linux-developers. Federico Lucifredi (Federico Lucifredi), distribution manager for SUSE Linux Enterprise and openSUSE,
calls this book the encyclopedia of programming for Linux.
And Jake Edge (Jake Edge), Linux developer and editor of LWN.net,
says that despite the impressive volume, the book is easy to read and explains most of the key points in simple words.
/ Wall Boat PD Photos
About programming languages
It is logical to get acquainted with C ++, following the advice of its creator: Bjarne Stroustrup. The author detailed in his book the fundamental features and evolution of the language. The first edition of the book
dates back to 1986. Since then, the popularity of the book has only grown: it was published 4 times (the last in 2013) and translated into 20 languages.
Peter Lee, the head of Microsoft Research, especially
recommends that the book be addressed to those who want to brush up on their knowledge of C ++. In addition, Lee notes a good supply of material, which allows you to quickly and efficiently find and examine everything you need. It is worth considering the physical dimensions of the book (if you prefer the paper version): a volume of 1300 pages in size will be uncomfortable to read in transport or between times.
Users of Reddit consider that the book is worthwhile and useful, but they
warn that it is rather difficult to master it entirely and advise to use the book mainly as a reference book. Additionally, through
this link you can find a selection of books on C ++ for any level of language proficiency.
On a hundred and fifty pages of this book, the authors have managed to fit a lot of decent advice. John Kurlak from Facebook,
regrets that he did not read it when he first encountered JavaScript, because the volume and presentation of the material are well suited for beginners. According to John, the book will be useful if you want to study design patterns at the stage of acquaintance with a language. The book is traditionally
included in the lists of the most popular: 178
references to Stack Overflow and 639 to
Reddit .
This book is
recommended not only to Java-developers, but also to those who want to understand multi-threaded programming in general. Residents of Stack Overflow
claim that the book helps to learn the basics of multithreading, thereby saving many hours when creating multithreaded applications. Since the book reveals the basics, it is more suitable for beginners.
Peter Cooper (Peter Cooper), the developer and author of the book
Beginning Ruby ,
read this book entirely in just 24 hours. According to him, the book delays the style of writing: it seems that one of your friends wrote it.
Unlike its previous book,
Design Patterns in Ruby , author Russ Olsen in this book does not consider specific Ruby design patterns, but the overall style and nature of Ruby. Code inComplete developer and author Jake Gordon
recommends this book to advanced Ruby programmers who want to make sure they are on the right track.
This classic textbook is also sometimes called K & R after the first letters of the authors' last names. The first one is Brian Kernighan, a scientist, one of the Unix developers, a co-author of the
AWK and
AMPL languages . The second is Dennis Ritchie (
Dennis Ritchie ), a physicist, mathematician, creator of C and one of the leading developers of Unix.
Residents of Reddit
note that the book can be your only tutorial on C, because it gives a comprehensive picture of the structure and features of the language. A programmer Mike Taylor (Mike Taylor)
compares this book with a group of Beatles: it is popular and its popularity is absolutely deserved.
About the intricacies of work and self-improvement
Users of all thematic sites recommend this book to be read. For example, in
this thread on Quora, it is advised by almost every user. The author of the book is Robert Cecil Martin (
Robert Cecil Martin ), known as Uncle Bob, software developer, writer and co-author of Agile Manifesto. This book has been
mentioned on Stack Overflow 256 times, has helped many people rethink their approach to work.
Drew Hoover, developer of Atomic Object,
notes that despite his age, the book contains thoughts and ideas that do not lose their significance. Some, however,
blame the book for being too categorical - so Clean Code is recommended to experienced programmers.
This book can be found in almost every collection of materials for the developer. And not just like that. Its author, Steve McConnell, CEO of Construx Software, has twice
received the Jolt Excellence Award for outstanding books on software development.
One of the founders of Stack Overflow, Jeff Atwood,
notes that reading this book means that you enjoy your work, take it seriously and want to improve. And blogger and developer Jason Roell
thinks that regardless of experience, development environment, or project size, this book will stimulate thinking and help improve the code.
Osman Ahmed Osman (Osman Ahmed Osman), Quora Lead Engineer,
claims that on his first day at Google he was given this particular book as a code writing guide, and it helped him a lot. Among the minuses, you can note the volume - 900 pages will not be read quickly - and the gradual obsolescence of some of the principles mentioned in the book.
The most
popular book on Stack Overflow tells you what to do with legacy code — obsolete code that is not updated but used. Eli Bendersky (Eli Bendersky)
writes that "the book contains techniques that are just as terrible as the code for which they were directed." As Eli notes, 400 pages of the book contain little “water”, and reading it “linearly,” from beginning to end, is difficult and not always useful. It is more convenient to use the book as a collection of recommendations for working with various problems of legacy code.
This book describes the solution of object-oriented programming problems and offers 23 templates for creating flexible and elegant solutions on your own. Because of the long name, it is sometimes called the “book of the gang of four” (book by the
Gang of Four ).
Residents of the Stack Exchange call it canonical in terms of studying design patterns. And to begin familiarization with templates, users of the Stack Exchange recommend the book
Head First Design Patterns: A Brain-Friendly Guide . Despite the ambiguous
cover , many note that it is easy to read, which is especially important when getting acquainted with the topic.
This book is already 40 years old, but it is still being
read, discussed and
included in the lists of programmers' favorite books. The secret of popularity is simple: technology is changing, but people are not. Frederick Brooks (
Frederick Brooks ), the author of the book and a scientist in the field of the theory of computing systems, is famous for supervising the development of OS / 360 at IBM and outlined in his book "Brooks's Law": if the project does not fit the deadlines, then adding labor will delay it more. The book will be useful to all who manage projects and think about productive work.
Under the cover of this book, you will find decoding of 80 hours of interviews with 15 programmers, each of whom has achieved significant success in his field (among them Peter Norvig and Donald Knuth, already mentioned today). They will talk about how they studied programming, what tools and languages ​​they use in their work, how they eliminate errors in code, what they think about the future of programming, etc.
The book provides many different points of view and is marked by positive reviews of well-known developers. Joel Spolsky
notes that it is not only useful, but also truly fascinating.
And which books useful to programmers would you recommend?
Tell us about it in the comments!
PS Here are a couple of selections from our blog on Habré:
PPS And some materials on a subject from our corporate blog: