The 10 most recommended programming books by programmers

Libri sulla programmazione

On the occasion of World Book Day, we asked on our social profiles (in this post) and also on thematic groups (such as on “Italian programmers“) which is the book that just can’t miss in a programmer’s library.

We received many answers – for this we thank all users – and these are the recommendations we have collected, divided into a ranking that is by no means exhaustive.

10. C – Complete Guide – Herbert Schildt 
A book that obviously does not hold a candle to Kernighan&Ritchie (which we will discuss later), but which is recommended for its more practical approach.

9. Introduction to Algorithms – Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein. 
It has been called the “world milestone of algorithms” because it is a book that disregards programming languages and fashions of the moment, is always up-to-date and gives an excellent foundation in programming. Interesting for understanding how certain problems are solved, it is an excellent book on algorithmics, the theorems are explained in a concise but never verbose manner and it offers an excellent introduction to basic data structures (and their algorithms). 

8. The Pragmatic Programmer: From Journeyman to Master – Andrew Hunte and David Thomas 
According to many, this is the book you need to know if you want to call yourself a programmer.

7. C Programming – Paul J. Deitel and Harvey M. Deitel 
In the opinion of many, the best manual for a first approach to programming in general and to C, because it is particularly clear in its explanation and contains all the standard algorithms. 

6. Clean Code: A Handbook of Agile Software Craftsmanship and Clean Architecture: A Craftsman’s Guide to Software Structure and Design – “Uncle Bob” Robert Cecil Martin. Often cited together, these are important books if you consider cleanliness in your code. 

5. Computer Networks – Andrew S. Tanenbaum and David J. Wetherall and Modern Operating Systems – Andrew S. Tanenbaum and Herbert Bos
Although they cover different topics, we put these together for convenience, since they are both by Tanenbaum.
The first book ‘moves’ many commentators, who describe it as ‘mythical’ and ‘a must have’.
The second makes an interesting and enjoyable read of all the issues facing operating systems. It is fascinating reading because, since the operating system lies between the hardware and the application software, the book in fact covers a little bit of everything that concerns the operation of a modern computer.
In general, the author is quoted over and over again for his major works, and always with enthusiastic expressions.

4. Head First! Design Patterns – Eric Freeman, Elisabeth Robson, Bert Bates, Kathy Sierra 
Considered by many a must-read, perhaps more entertaining than the almost eponymous ‘Design Patterns’ because it has an approach like: This is what you write -> This is the problem -> Let’s do it this way. 
There is no shortage, however, of those who found it too dispersive.

3. Design Patterns: Elements of Reusable Object-Oriented Software – Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides (better known as the Gang of Four).
What can we say? A milestone as far as the object-oriented programming paradigm is concerned.

2. The art of computer programming – Donald E. Knuth
A series of masterpieces, the volumes are splendid and meticulous in every detail. Some have called it a kind of encyclopedia of algorithms because they are treated in great depth; tough, a bit dated in certain aspects, but certainly fascinating. 

1. The C language. Programming principles and reference manual – Brian W. Kernighan and Dennis M. Ritchie 
The podium could only go to this handbook, described as “the holy of holies”, “a sacred text of programming”, “for many, the first book on programming, indeed for the hard-core old hackers, K&R is only 1978”, “a must-read that throws out the basics for everything else”.

To these, in Develer we also wanted to add other titles dear to us, which we could not allow to be left out!

Computer Networks and the Internet. A top-down approach – James F. Kurose and Keith W. Ross
Everything you need to know about computer networks and especially how the Internet works, from its beginnings to the most modern technologies.

Domain-Driven Design: Tackling Complexity in the Heart of Software – Eric Evans and Martin Fowler
Another milestone about design (in general, however, not only Object Oriented)

Structure and Interpretation of Computer Programs – Harold Abelson, Gerald Jay Sussman, Julie Sussmanm and Alan J. Perlis
SICP is considered a classic text in computer science. A high-level introduction to programming that explains its underlying principles.

Programming Kotlin Create Elegant, Expressive, and Performant JVM and Android Applications – Venkat Subramaniam
It teaches Kotlin, but more generally all the syntactic mechanisms that a programmer may find in front of any programming language; thanks to the very simple syntax of the language, one can understand the basic concepts without getting lost in details related to the language used; for many, it has been useful to clarify concepts on concurrent and parallel programming.

Finally, with regard to refactoring, there are at least two recommended ones:

Refactoring: Improving the Design of Existing Code – Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts and Patterns of Enterprise Application Architecture – Martin Fowler 
A reference for refactoring could not be missing, and what if not the works of Martin Fowler? A sacred gift for working on legacy code (90% of the time for the junior programmer), these are “the” books on refactoring 

Do you agree with these recommendations? Do you also have a book to add to our list that was instrumental in taking your first steps in programming, or why do you occasionally go back and reread it?

Tell us about it on our social networks or write an email to the Develer editorial team!