10 Must-Read Books for Software Engineers in 2023

10 Must-Read Books for Software Engineers in 2023

Photo by Ria Puskas on Unsplash

If you want to learn more about tech, subscribe to my brand new YouTube Channel, where I explain complex topics in a crisp & sharp way to skill you up! → https://www.youtube.com/@litwire

Besides all the great offerings of the modern world — podcasts, videos, blogs, etc. — reading a good book is still something many people don’t want to miss. I have read many good books covering tech-related things, such as software engineering, and am still reading to learn new patterns and best practices.

Finding great books for software engineering is not easy because the ecosystem changes rapidly, making many things obsolete after a short time. This is especially true regarding books that rely on a specific programming language version.

However, there are evergreens available, books that deal with meta-topics, design patterns, or general mindsets.

The following collection consists of some of the most popular books available. Senior developers often recommend books that are still relevant today to junior developers. I know that time is precious, especially for software engineers, but if you manage to read some of them, it will help you and your career. Note that this list is in no particular order because all of these books are equally recommendable.

Note: None of the links below are affiliate links.

Cracking the Coding Interview

“Cracking the Code Interview: 189 Programming Questions & Solutions” is highly recommendable to anyone who wants or needs to take coding interviews. Author Gayle Laakmann McDowell, an experienced software engineer, was both an interviewer and a candidate. She can help you to look for hidden details in questions, break problems into small chunks, and to get better at learning concepts.

Furthermore, Gayle provides 189 real interview questions and solutions so you can prepare well for the next coding interview!

Code Complete

“Code Complete: a Practical Handbook of Software Construction, 2nd Edition” by Steve McConnell is one of the books every programmer should probably have skimmed through once in their life.

It’s a comprehensive analysis of software construction, well written, and highly accepted in the industry. It deals with the design, coding, debugging, and testing topics.

Overall, this book will probably have the highest ROI for developers with one to three years of professional programming experience. But I recommend it to beginners as well because it helps give you more confidence when constructing software.

The main takeaway? Developers have to manage complexity. To write code that is easy to maintain and to read for you and others.

Clean Code

“Clean Code: A Handbook of Agile Software Craftsmanship” by Robert C. Martin (Uncle Bob) is one of the most popular programming books. It was written to teach software engineers the principles of writing clean programming code. It comes with many examples showing you how to refactor code to be more readable and maintainable, but be aware that it is very Java-centric. While some patterns and techniques are transferable to general programming or other languages, the book’s primary audience is Java developers.

Another thing to note is that the book is from 2009. Some content, like code formatting, is less relevant today because of the available tools and IDEs. But it is a good read, after all.

Refactoring

The book Refactoring: Improving the Design of Existing Code, 2nd Edition by Martin Fowler explains what refactoring is, just like the original 20 years ago. Questions that you may ask yourself and that are answered in this book are:

  • Why should I refactor my code?
  • How can I recognize code that needs refactoring?
  • How can I successfully refactor my code?

After reading this book, you should understand the process and general principles of refactoring that you can quickly apply to your codebase. You should also be able to spot “bad smells” in your teammate’s code that need refactoring.

Head First Design Patterns

“Head First Design Patterns: A Brain-Friendly Guide” by Eric Freeman, Bert Bates, Kathy Sierra, and Elisabeth Robson teaches you design patterns and best practices used by other developers to create functional, reusable, elegant, and flexible software. It is also filled with great visualizations that will help you to learn new concepts more quickly.

This book is a great choice if you want to learn about things like factories, singletons, dependency injections, etc. The examples are written in Java, so it wouldn’t hurt to know that language or another object-oriented one.

Patterns of Enterprise Application Architecture

“Patterns of Enterprise Application Architecture” is another excellent book by Martin Fowler that deals with the practice of enterprise application development. After a short tutorial on developing enterprise applications, Martin then gives you over 40 patterns as solutions to common problems while architecting enterprise applications. It also comes with many UML visualizations and code examples written in Java or C#.

After reading the book, you should be able to divide an enterprise application into layers, know the practical approaches to organizing business logic, use the MVC patterns to organize web applications, and handle concurrency for data over multiple transactions.

However, the book is aging poorly, such modern concepts like REST, cloud, or JSON are not mentioned. It’s still a good read, but be critical while doing so!

Working Effectively with Legacy Code

In “Working Effectively With Legacy Code” by Michael Feathers, the authors offer strategies to deal with large, untested legacy code bases. While you might think that we are in 2023 now and legacy code shouldn’t be a problem anymore because we only have clean, maintainable code and microservices all along, let me assure you that this is a misconception. Legacy code still is one of the most challenging problems for many companies.

After reading this book, you should be able to understand the general mechanics of software change, like adding features, fixing bugs, optimizing performance, and improving the design. Furthermore, you learn how to get legacy code ready for testing and how to identify where the code needs changes.

The book provides examples written in Java, C++, C, and C# but also includes tips on dealing with legacy code that is not object-oriented.

The Clean Coder

Another book by Uncle Bob teaches techniques, disciplines, tools, and practices of true software craftsmanship. “The Clean Coder: A Code of Conduct for Professional Programmers” is packed with practical advice about estimating, coding, refactoring, and testing.

After reading this book, you should be able to deal with conflicts, tight schedules, and unreasonable managers; handle unrelenting pressure and avoid burnout; to manage your time; to get into the flow of coding, and foster environments where developers and teams can thrive.

This book is pretty accepted in the industry, but I think not everything in it is pure gold. It contains many anecdotes and hypothetical conversations that often conclude that the developer is ultimately responsible for what they do. This goes so far that in one statement, the advice for a developer whose code produced a bug is to reimburse the company financially for the money loss.

So my advice is to read the book carefully and critically if you do!

Introduction to Algorithms

“Introduction to Algorithms, Third Edition” by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein is nothing less than an essential guide to algorithms of all kinds. It is comprehensive and accessible to all readers, beginners, and professionals alike. It is worded and covers a lot of subject matter. But it also is complex and not so easy to follow.

It covers data structures, fast algorithms, polynomial-time algorithms for seemingly intractable problems, graph theory, computational geometry, and much more. While it contains some examples in pseudo-code, it still is a very theoretical book in my eyes.

The Pragmatic Programmer

“The Pragmatic Programmer” is one of the most important books I have ever read. It is filled with technical and professional practical advice that helped me in many projects and become a better developer.

The book is highly relevant even in 2023, especially with the new 20th Anniversary Edition. It examines what it means to be a modern developer by exploring topics that range from personal responsibility and career development to architectural techniques.

After reading the book, you should know what continuous learning means and how important it is; how to write flexible, adaptable, and dynamic code; how to solve the problems of concurrent code; how to guard against security vulnerabilities; how to test ruthlessly and effectively; and much more.

If there were one book I had to pick to recommend to you, it would be this one!

To sum up, these are some of the most popular books for developers. If I had to pick a book to recommend to you, it would be “The Pragmatic Programmer” by Andrew Hunt. The books by Robert C. Martin are accepted in the industry and liked by many developers, but I would be critical while reading them because I do not share many opinions with Uncle Bob.

Xổ số miền Bắc