Asher Cohen
Back to posts

Essential Books for Software Developers

Curated reading list covering programming, architecture, UI design, and agile methodology

Introduction

Great developers are always learning. This curated list covers the most impactful books across programming, software architecture, UI design, and agile methodology — books that have shaped how I think about and write code.

Programming

Learning TypeScript

A practical guide to TypeScript's type system. Covers generics, conditional types, and patterns for large-scale applications. Essential for teams adopting TypeScript.

Structure and Interpretation of Computer Programs (JavaScript Edition)

The classic MIT textbook adapted for JavaScript. Teaches fundamental programming concepts through functional programming — recursion, higher-order functions, data abstraction, and interpreters.

You Don't Know JS — Kyle Simpson Series

A deep dive into JavaScript's core mechanisms. Covers scope, closures, prototypes, async patterns, and types with unparalleled depth. Start with "Scope & Closures" and "this & Object Prototypes."

JavaScript: The Definitive Guide

The comprehensive reference. Covers every aspect of the language from basics to advanced patterns. Keep this on your desk for when you need the authoritative answer.

Composing Software — Eric Elliott

Explores functional programming and composition in JavaScript. Covers pure functions, immutability, currying, monads, and how to build software by composing small, focused functions.

Functional Programming in JavaScript — Luis Atencio

A practical introduction to functional programming concepts applied to JavaScript. Covers map/filter/reduce, composition, functors, and monads with real-world examples.

Programming JavaScript Applications

Patterns and practices for building robust web applications. Covers architecture, APIs, authentication, and deployment strategies for production JavaScript apps.

RxJS in Action

A comprehensive guide to reactive programming with RxJS. Covers observables, operators, subjects, and patterns for handling async data streams in Angular and Node.js applications.

Software Architecture

Fundamentals of Software Architecture

Covers architectural patterns, decision-making frameworks, and soft skills needed for architect roles. Explores microservices, event-driven architectures, and how to evaluate tradeoffs.

Design Patterns: Elements of Reusable Object-Oriented Software (Gang of Four)

The classic catalog of 23 design patterns. While examples are in C++, the concepts — Strategy, Factory, Observer, Singleton — apply to any language including JavaScript.

UI Design

Refactoring UI — Steve Schoger & Adam Wathan

Practical UI design tips for developers. Covers layout, typography, color, spacing, and visual hierarchy with before/after examples. The book that teaches developers to design without a designer.

Atomic Design — Brad Frost

A methodology for creating design systems by composing small, reusable components (atoms → molecules → organisms → templates → pages). Essential for component library design.

CSS Secrets — Lea Verou

47 creative solutions to common CSS problems. Covers borders, shapes, typography, animations, and interactions with elegant, production-ready code.

CSS-Tricks Guides

The Flexbox Cheatsheet and Grid Cheatsheet are the definitive visual references for CSS layout. Bookmark these.

Agile & Project Management

The Pragmatic Programmer — David Thomas & Andrew Hunt

Timeless advice on software craftsmanship. Covers DRY, orthogonality, prototyping, estimation, and pragmatic approaches to debugging, testing, and refactoring.

User Story Mapping — Jeff Patton

A practical guide to turning user needs into actionable development plans. Teaches how to create shared understanding, prioritize features, and deliver value incrementally.

The Nature of Software Development — Ron Jeffries

Explores the principles behind agile development — small batches, continuous delivery, and keeping projects simple and valuable.

The Undoing Project — Michael Lewis

The story of Daniel Kahneman and Amos Tversky's work on cognitive biases. Understanding how people make decisions improves how you design software, estimate projects, and work with stakeholders.

How to Read These

Don't try to read everything at once. Pick one book that addresses your current challenge:

  • Learning JavaScript deeply? Start with "You Don't Know JS"
  • Improving your design skills? Read "Refactoring UI"
  • Growing as an architect? Pick up "Fundamentals of Software Architecture"
  • Writing better code today? "The Pragmatic Programmer" is timeless

Read actively — type out the code examples, apply concepts to your projects, and revisit books as your experience grows.

#books #programming #javascript #architecture #ui-design #agile #learning