Learning software development is a fundamental skill in today’s world. I hoped to share a list of books for understanding and growing in software development. I have shared parts of this list with team members who join my team or who I mentor.

I grouped these books by area of growth, as opposed to specific language or facet of software development. There’s a continuium of experience and facets of software engineering touched by each book (e.g. Javascript: The Good Parts is in the “Everyone” section. This language specific book shares Javascript principles that backend developers (that may never touch Javascript) would find interesting).

“Learning to write programs stretches your mind, and helps you think better, creates a way of thinking about things that I think is helpful in all domains.” —Bill Gates

How this article is organized:

  • For Everyone - I’d recommend for every man, woman and child who’s learning about software
  • For Career Growth - I’d recommend for people thinking about their career growth
  • For Technical Growth - I’d recommend for people thinking about their technical growth

For Everyone

Most of these books have a higher level of legibility and I believe are great introductions to subjects relevant to software development.

Cal Newport: So Great They Can’t Ignore You
Peter Thiel: Zero to One
Gang of Four: Design Patterns
Thomas Cormen, et al.: Introduction To Algorithms
Joshua Blochs: Effective Java
Steven Pressfield: War of Art
Steve Krug: Don’t Make Me Think
Douglas Crockford: Javascript: The Good Parts
Paul Graham: Hackers and Painters
Robert Martin: Clean Code

For Career Growth

Most of the books here should be legible for those who have worked in software for a (few) years.

Michael Lopp: Being Geek: The Software Developer’s Career Handbook
Reid Hoffman, Ben Casnocha: Start-up of You
Tom DeMarco, Tim Lister: Peopleware Productive Projects and Teams
Michael Lopp: Managing Humans Biting and Humorous Tales of a Software Engineering Manager
Patrick Lencioni: Five Dysfunctions of Teams
Patrick Lencioni: The Advantage

For Technical Growth

Most of the books here should be legible for those who have worked in software for a (few) years.

Jason Fried, DHH: Rework
Martin Fowler, et al.: Refactoring
Andrew Hunt, David Thomas: Pragmatic Programmer
Robert Martin: Clean Architecture
Martin Kleppman: Designing Data-Intensive Applications
Niall Richard Murphy, et al.: Site Reliability Engineering
Gregor Hohpe, Bobby Woolf: Enterprise Integration Patterns
Gene Kim, et al.: Phonenix Project

All book images from amazon.com.