A treasure trove of books for people who love code. Curated by Eric Elliott.
Arranged by topic, loosely in learning order.
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
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.
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
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
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
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: 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
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