The Software Developer's Library
A treasure trove of books for people who love code. Curated by Eric Elliott.
Arranged by topic, loosely in learning order.
A Note to Beginners
I learned to code around the same time I learned to read and write. I loved computer games and I wanted to learn how to make my own. I loved games and stories about magic, and computers seemed about as close to magic as you can get. In those days, many computers booted directly into a programming environment, and I took it for granted that if you wanted to create something on a computer, you had to learn to code. My best friend's dad gave me a book designed to teach kids how to make computer games with code and I dove in head first.
Today, we create on computers all the time, and we take computers for granted, but if you're the type of person who likes to take things apart to see how they work, the allure to look under the hood and discover how apps are made can be irresistible and endlessly entertaining.
I have now been chasing this passion for half a lifetime. What started with a love of computer games has become a rewarding career that has enabled me to travel around the world and discover the real magic we can make with software. Along the way, I have been inspired by a lot of other great books.
It is my hope that this collection of some of my favorite programming books will help you to discover and create some magic of your own.
~ Eric Elliott
P.S. Everybody learning to code should read Learn to Code: 13 Tips That Could Save You Years of Effort
For a Good Cause
When you make a purchase using these links, a portion of your purchase will help train homeless people to code. JSHomes is a not-for-profit organization that works with homeless services and refugee training centers to provide critical job skills to those in need.
For Beginners & Kids
-
Super Scratch Programming Adventure! Learn to Program By Making Cool Games by The LEAD Project
-
Video Game Programming for Kids by Jonathan S. Harbour
-
JavaScript for Kids: A Playful Introduction to Programming by Nick Morgan
-
3D Game Programmig for Kids: Create Interactive Worlds with JavaScript by Chris Strom
-
Adventures in Minecraft by David Whale, Martin O'Hanlon
-
The Game Maker's Apprentice: Game Development for Beginners by Jacob Habgood, Mark Overmars, Phil Wilson
-
Code: The Hidden Language of Computer Hardware and Software by Charles Petzold
-
GΓΆdel, Escher, Bach: An Eternal Golden Braid by Douglas R. Hofstadter
-
Eloquent JavaScript: A Modern Introduction to Programming by Marijn Haverbeke
Software Craftmanship
-
Coders at Work: Reflections on the Craft of Programming by Peter Seibel
-
Beautiful Code: Leading Programmers Explain How They Think by Andy Oram, Greg Wilson
-
The Pragmatic Programmer by Andrew Hunt and David Thomas
-
Clean Code: A Handbook of Agile Software Craftmanship by Robert C. Martin
-
Code Complete: A Practical Handbook of Software Construction by Steve McConnell
-
Debugging: The 9 Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems by David J Agans
-
Seven Languages in Seven Weeks by Bruce Tate
-
Seven Databases in Seven Weeks: A Guide to Modern Databases and the NoSQL Movement by Eric Redmond, Jim R. Wilson
-
Seven Concurrency Models in Seven Weeks by Paul Butcher
-
The C Programming Language aka the K&R book by Brian W. Kernighan, Dennis M. Ritchie
Functional Programming
-
Professor Frisby's Mostly Adequate Guide to Functional Programming by Brian Lonsdorf
-
The Little Schemer by by Daniel P. Friedman, Matthias Felleisen, Duane Bibby, Gerald J. Sussman
-
Learn You A Haskell for Great Good by Miran Lipovaca
-
Purely Functional Data Structures by Chris Okasaki
-
Basic Category Theory for Computer Scientists by Benjamin C. Pierce
Academic Topics
-
The New Turing Omnibus: Sixty-Six Excursions in Computer Science by A. K. Dewdney
-
Design Patterns: Elements of Reusable Object Oriented Software AKA the Gang of Four book or the GoF by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Grady Booch
-
How to Design Programs by Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi
-
The Structure and Interpretation of Computer Programs by Harold Abelson, Gerald Jay Sussman, Julie Sussman
-
Introduction to Algorithms, 3rd Edition by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein
-
Algorithms by Robert Sedgewick, Kevin Wayne
-
The Art of Computer Programming: Vol. 1 by Donald E Knuth
-
The Art of Computer Programming: Vol. 2 by Donald E Knuth
-
The Art of Computer Programming: Vol. 3 by Donald E. Knuth
-
Programming Pearls by Jon Bentley
-
How to Prove it: A Structured Approach by Daniel J. Velleman
-
The Annotated Turing: A Guided Tour Through Alan Turing's Historic Paper on Computability and the Turing Machine by Charles Petzold
-
Introduction to Graph Theory by Richard J. Trudeau
-
Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp by Peter Norvig
-
Artificial Intelligence for Humans: Deep Learning and Neural Networks by Jeff Heaton
Compilers
-
Compilers: Principles, Techniques, and Tools by Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman
-
Types and Programming Languages by Benjamin C. Pierce
-
Advanced Topics in Types and Programming Languages by Benjamin C. Pierce
Productivity & Principles
-
Rework by Jason Fried, David Heinemeier Hansson
-
The Mythical Man-Month: Essays on Software Engineering by Frederick P. Brooks Jr.
-
Continuous Delivery by Jez Humble & David Farley
-
AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis by William J. Brown, Raphael C. Malveau, Hays W. "Skip" McCormick, Thomas J. Mowbray
-
Refactoring: Improving the Design of Existing Code by Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts, Erich Gamma
-
The Clean Coder: A Code of Conduct for Professional Programmers by Robert C. Martin
-
The Passionate Programmer: Creating a Remarkable Career in Software Development by Chad Fowler
-
Test Driven Development By Example by Kent Beck
-
The Phoenix Project: A Novel about IT, DevOps, and Helping Your Business Win by Gene Kim, Kevin Behr, George Spafford
-
The Art of Unix Programming by Eric S. Raymond