Code Complete: A Practical Handbook of Software Construction

Code Complete is one of the classic books that every programmer should read at least once. It talks about the best practices of software development and contains numerous advice on how to write high-quality code.

It’s a 960 pages long book but every chapter is worth your time. This book will certainly make you a better programmer.

Clean Code: A Handbook of Agile Software Craftsmanship

Another classic book on writing clean, readable, understandable, and maintainable code.

It’s very important to write code that other developers can understand, extend, and maintain in future. This book teaches you how to write such code with simple examples.

Introduction to Algorithms

A bible of computer science algorithms. It is widely used as the textbook for algorithms course at grad schools.

Whether you’re studying algorithms for the first time or preparing for a Software engineer’s job interview. This book must be in your book-shelf.

Design Patterns: Elements of Reusable Object-Oriented Software

Most of the problems that you face while developing software in object-oriented technologies are already faced by other people and they have learned how to solve those problems in the best way possible.

Wouldn’t it be great if we could reuse their solutions for such problems? Well, That’s what this design patterns book teaches you.

It offers scalable and elegant solutions to common problems in object-oriented software design.

Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems

One of my favorite books on designing and developing scalable applications. I keep referring to this book time and again while working on things that need to scale to a huge audience.

If you ever wanted a practical book that teaches you how to write distributed, data-intensive applications that are highly scalable, fault-tolerant, and performant, then this book is for you.

Release It!: Design and Deploy Production-Ready Software

An excellent book on designing and deploying production-ready software. You’ll learn how to design your systems to be fault-tolerant and how to quickly recover if the faults lead to failure in the system.

This is the second edition of the book that includes additional info on DevOps, Microservices, and Cloud-native architectures.

Distributed systems for fun and profit (Free Book)

A free ebook that teaches you the basic ideas behind distributed systems in simple words.

The author of this book, Mikito Takada, is a software engineer at Stripe. He really knows his stuff. You can read more about him from his Twitter profile.

You Don’t Know JS

You Don't Know JS: Up & Going

You Don't Know JS: Scope & Closures

You Don't Know JS: this & Object Prototypes

You Don't Know JS: Types & Grammar

You Don't Know JS: Async & Performance

You Don't Know JS: ES6 & Beyond

A great series of ebooks on Javascript. You can read all of them for free on Github.

These books are continuously drafted, edited, and published. You can track their development from the official Github repository.

Effective Java

This is probably the best book on the Java programming language. The Author of this book, Joshua Bloch, was the chief Java architect at Google.

The book teaches Java from the ground up with simple step-by-step examples of working programs.