Top 10 Developer Books

To improve in the field of development is not only to write good code, but also to read about how to write it.




Hi, Habr! I continue to share useful selections. Most recently, I published 2 posts listing Github repositories: Part 1 and Part 2 . This time I bring to your attention a selection of useful books for developers. Who cares - welcome to cat.

In addition to all the blessings of the modern world - podcasts, videos, blogs, etc., reading a good book is something that is still in demand. I have read many good books on technology and software development, and still read to keep abreast of new patterns and best practices.

Finding great books for software development is not an easy task, as the ecosystem changes so quickly that many things become obsolete in a short time. This is especially true for those books that describe a specific version of a programming language.
However, there are “eternal” books: they are devoted to meta-themes, design patterns, or general concepts.

The following selection consists of the most popular and most read books. Books that are still relevant today and that experienced developers often recommend to novice professionals. I know that time is precious, especially for developers. But if you can read some of these books, it will definitely help you and your career. Please note that the books from the list are not arranged by degree of importance - they are all equally recommended for reading.

1. Cracking the Coding Interview or Career Programmer



I highly recommend this book to all those who want to thoroughly prepare for the interview. The author, G. Luckman MacDowell, an experienced software engineer, was both an interviewer and a candidate. She will teach you to find hidden details in questions, break problems into small pieces, and also help improve your learning skills.

In addition, the author provides us with 189 real questions for the interview and their real solutions so that you can prepare well for the next interview.

2. Code Complete or Perfect Code



This book by Steve McConnell is one of those books that every programmer most likely leafed through at least once in his life.

This is a comprehensive analysis of software design, well written and in demand in the industry. The book covers topics such as design, code writing, debugging, and testing.

This book is likely to be the most profitable investment for developers with professional experience from one to three years. But I also recommend the publication to beginners, as it helps at the start of software development.

The main conclusion: developers must manage complexity and write code that is easy to maintain and read both for themselves and others.

3. Clean Code or Clean Code



Robert Martin's (or Uncle Bob's) book, Clean Code, is one of the most popular programming books. It was written to teach software engineers how to write clean code. The book contains many examples showing how to refactor code to make it more readable and maintainable. But keep in mind that the publication is focused specifically on Java. Although some of the patterns and techniques extend to general programming and other languages, the main audience for the book is Java developers.

It should also be noted that the book was published in 2008. Some information, such as code formatting, is less relevant today due to the available tools and IDEs. But still, this is a great book.

4. Refactoring or Improving the Design of Existing Code



The second edition of Martin Fowler's book explains what refactoring really is, however, like the first edition, released 20 years ago. After reading the book you will find answers to the following questions:

  • Why do I need to refactor my code?
  • How can I recognize code that needs refactoring?
  • How can I successfully refactor my code?

After reading this book, you will understand the process itself and the general principles of refactoring, which you can immediately apply to your code. You will also learn how to detect shoals in your teammate’s code that require refactoring.

5. Head A First Design Patterns and Design Patterns



This book, which has 4 authors at once, teaches you design patterns and best practices used by other developers to create functional, reusable, and flexible software. The publication has a lot of visual presentations that will help you easier to master new concepts.

If you want to learn about things like factories, singletones, dependency injection, etc., this book is a great choice. The examples are written in Java, so it would be nice to know this, or any other object-oriented language.

6. Patterns of Enterprise Application Architecture or Enterprise Application Templates



Another great book by Martin Fowler on enterprise application development. After a quick tutorial, Martin offers you more than 40 templates as a solution to common problems in enterprise application development. In the book you will find a large number of UML visualizations and code examples written in Java or C #.

After reading the book, you can divide corporate applications into levels, know the basic approaches to organizing business logic, use MVC templates to organize web applications, and manage the parallel processing of several transactions.

However, the book is quite old, so modern concepts like REST, cloud or JSON are not mentioned. This is good material to study, but still be critical of it.

7. Working Effectively with Legacy Code or Effective work with legacy code



In the book, the author offers strategies for working with large, uncovered test bases of legacy-code. You might think: “2020 is the year. Legacy code is no longer a problem, because we have clean, supported code and microservices. ” Let me assure you that this is a misconception. Legacy code is still one of the biggest challenges for many companies.

After reading this book, you will be able to understand the general mechanisms for changing software, for example: adding features, fixing bugs, optimizing performance, and improving design. In addition, you will learn how to prepare legacy code for testing and determine where you need to change it.

The book contains examples written in Java, C ++, C and C #, and it also contains tips on working with legacy code, which is not related to object-oriented code.

8. The Clean Coder or Perfect Programmer



Another Uncle Bob’s book that teaches techniques, practices, and tools for true software skills. It contains practical tips on evaluating projects, writing code, refactoring, and testing.

After reading this book, you will learn how to deal with conflicts, busy schedules and irrational managers; learn to deal with constant pressure and avoid burnout; learn how to manage your time, how to write high-quality code and help create an environment in which developers and teams can successfully develop.

This book is quite popular, but I think that not everything in it is pure gold. It contains many stories from life and hypothetical conversations, which in most cases lead to the conclusion that the developer is ultimately responsible for what he does. Sometimes such passages go too far: in one of these passages, the developer whose code generated the error suggests compensating the company for financial losses.

Therefore, I advise you to read this book carefully and with some criticism.

9. Introduction to Algorithms or Algorithms: Construction and Analysis



This publication is nothing more than a mandatory guide to various types of algorithms. The book is very wide profile and is suitable for both beginners and professionals. The material is clearly stated and reveals the essence of the issue. But at the same time, the book is not quite simple.

It covers topics such as data structures, fast algorithms, polynomial algorithms for difficult problems, graph theory, computational geometry and much more. Although the book contains several examples of pseudo-code, in my opinion, it is very “theoretical”.

10. of The the Pragmatic the Programmer or Pragmatic Programmer



This is one of the most serious books I've ever read. The publication is full of both technical and professional practical tips that have helped me in many projects, as well as helped me become better as a developer.

The book is very relevant even in 2020, especially the latest edition. Here, the author analyzes what it means to be a modern developer, explores various topics: from personal responsibility and career growth to architectural techniques.

After reading the book, you will understand what continuous learning is and how important it is; learn how to write flexible, adaptable and dynamic code, how to solve competitive problems, how to guard security, how to test “ruthlessly and effectively”, and much more.

If I were to choose only one book to advise you, I would choose this one!

Conclusion


It was a list of some of the most popular books for developers. The best from the list, in my opinion, is the “Pragmatic Programmer” by E. Hunt and D. Thomas. The books of Robert S. Martin are in demand and like by many developers, but I would advise you to be critical in reading them, since I do not agree with Uncle Bob on many issues.

Surely, you have already read many of these books, or at least held them in your hands, or at least saw them on the Internet. As the author of the article put it, these are “eternal” books that are devoted to the basics. If you have something to supplement the list - share in the comments, I think it will be useful to everyone.

All Articles