Gunjan Sharma

Reading

Bookshelf

Books I've read, am reading, or plan to read. Engineering, systems thinking, philosophy, and the occasional fiction. I try to write a short note on each.

Currently Reading

The Art of Computer Programming

Currently Reading

Knuth's magnum opus — the most comprehensive treatment of algorithms ever written. Dense, mathematical, and brilliantly rigorous. Even reading selective volumes on sorting and searching reshapes how you think about algorithmic efficiency and correctness.

Structure and Interpretation of Computer Programs

Currently Reading

The wizard book. A profound exploration of computation, abstraction, and programming paradigms using Scheme. SICP teaches you to think about programs as processes and procedures. One of the most intellectually rewarding CS books ever written.

Microservices Patterns

Currently Reading

Deep practical guide on patterns for microservices including Saga, CQRS, event sourcing, and API gateways. Richardson's pattern language provides a shared vocabulary for discussing distributed systems architecture and transaction management.

Computer Networks

Currently Reading

Foundational textbook on networking from physical layer to application layer. Understanding TCP/IP, DNS, HTTP, and routing is non-negotiable for building reliable distributed systems. Tanenbaum's explanations of protocols remain unmatched.

Operating System Concepts

Currently Reading

The dinosaur book. Comprehensive coverage of processes, threads, scheduling, memory management, file systems, and I/O. Understanding OS internals is critical for writing performant systems code and diagnosing low-level production issues.

System Design Interview

Currently Reading

A structured approach to tackling system design interview questions. Walks through real-world systems like URL shorteners, rate limiters, and distributed caches. The framework for back-of-the-envelope estimation is especially useful in practice.

Cracking the Coding Interview

Currently Reading

The definitive interview prep book for top tech companies. 189 programming questions with detailed solutions covering arrays, trees, graphs, dynamic programming, and system design. Actively using this for SDE interview preparation.

Database Internals

Currently Reading

Deep dive into how databases work under the hood — B-trees, LSM trees, storage engines, and distributed consensus. Essential reading for anyone optimizing database performance or building data-intensive applications. Complements DDIA perfectly.

Refactoring: Improving the Design of Existing Code

Currently Reading

Fowler's catalog of refactoring patterns is indispensable for working with legacy codebases. The discipline of making code changes in small, safe steps while maintaining a green test suite is something I apply daily in production systems.

The Phoenix Project

Currently Reading

A novel about DevOps transformation that reads like a thriller. Follows an IT manager trying to save a struggling project. The Three Ways framework — flow, feedback, and continuous learning — fundamentally shaped how I think about engineering culture.

Building Microservices

Currently Reading

The go-to practical guide for decomposing monoliths into microservices. Newman covers service boundaries, inter-service communication, deployment strategies, and observability. Directly applicable to my work on distributed fintech platforms.

Domain-Driven Design

Currently Reading

The blue book that defined how to model complex business domains in software. Concepts like bounded contexts, aggregates, value objects, and ubiquitous language are foundational to building maintainable enterprise systems and microservices.

The Mythical Man-Month

Currently Reading

Brooks' Law — adding people to a late project makes it later — is as true today as it was in 1975. This classic explores why software projects fail and the inherent complexities in large-scale software development. Timeless project management wisdom.

A Philosophy of Software Design

Currently Reading

Ousterhout challenges conventional wisdom around comments and complexity. His framework of deep vs. shallow modules provides a fresh mental model for designing systems. A concise but profound read on managing software complexity.

Software Engineering at Google

Currently Reading

Insights into how Google scales its engineering culture and processes. Covers code review culture, testing philosophy, dependency management, and large-scale refactoring. Invaluable for understanding how elite engineering teams operate.

Introduction to Algorithms

Currently Reading

CLRS is the bible of algorithms. Dense but comprehensive — covers sorting, graph algorithms, dynamic programming, and NP-completeness with mathematical rigor. Essential for competitive programming and technical interviews at top companies.

Site Reliability Engineering

Currently Reading

The definitive guide to how Google runs production systems at scale. Concepts like error budgets, SLOs, SLIs, and toil reduction are now standard in the industry. Essential reading for anyone working on distributed systems or DevOps.

Clean Code

Currently Reading

A must-read for every software engineer. Martin's principles of writing clean, readable, and maintainable code are timeless. Chapters on naming, functions, and the Single Responsibility Principle fundamentally changed how I approach code structure.

The Pragmatic Programmer

Currently Reading

A timeless collection of practical wisdom for software developers. From DRY and orthogonality to debugging and career advice, this book shaped an entire generation of engineers. The tips inside are as relevant today as they were in 1999.

Designing Data-Intensive Applications

Currently Reading

The definitive guide to building scalable, reliable, and maintainable systems. Covers replication, partitioning, transactions, consistency, consensus, and stream processing. If there is one book every backend engineer must read, this is it. Shaped how I think about data systems architecture.