Books I Like
coding nerd
Books in 2022??
Books are good. I learned programming with books. Youtube wasn’t so big at the time.
I don’t read fiction and I don’t read books all that much, but I read more books than average. My time/boredom trick for books: Nobody said you have to read every word.
Here are some books I can personally recommend. I will give the Amazon Canada links.
Learn Programming
Find out more on this post from 5 years ago!
The most important link in the post: https://old.reddit.com/r/learnprogramming/wiki/faq
C++ Without Fear
Links: https://www.amazon.ca/Without-Fear-Beginners-Guide-Makes/dp/0134314301
This is not a well-known book, but I have to mention it as it is actually the book from which I started getting a good understand of programming. Variables, control structures, functions, arrays. OOP came later for me.
Programming: Principles and Practice Using C++
Link: https://www.amazon.ca/Programming-Principles-Practice-Using-2nd/dp/0321992784
This brick of scholarly babble is written by Bjarne Stroustrup, the author of C++. Within the context of its writer, it is actually quite practical. If you’re looking to understand programming/C++ comprehensively and you’re patient, this book pays off.
Head First Java
Link: https://www.amazon.ca/Head-First-Java-Brain-Friendly-Guide/dp/0596009208
Head First are a series of books designed to retain the reader’s attention. It emphasizes practice. Head First Java may not be the greatest for programming beginners, but it’s really good for understanding Java and object-oriented programming.
O’Reilly books are also generally really good in computer science and programming.
Head First Object-Oriented Analysis & Design
Link: https://www.amazon.ca/Head-First-Object-Oriented-Analysis-Design/dp/0596008678
The mix of Head First’s approach to human memory coupled with OOP’s human approach to code makes for a great book when big words like polymorphism are thrown around at cocktail parties.
If classes, interfaces, implementations, encapsulation and what’s the point of it all confuses you, this book will sort it out.
To LEARN programming: Books are nice, practice is better!
Software Engineering
These books are good once you have a solid grasp of how to solve programming problems, created something (like a Spigot plugin or Discord bot) or automated away your daily workflows.
Clean Code
Link: https://www.amazon.ca/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882
This is a famous book. A bit polarized actually, but I like it because it taught me a good justification to not put comments in my code. Joking aside it’s a yearly read for sure to remind yourself that you can do better.
Clean Architecture
Link: https://www.amazon.ca/Clean-Architecture-Craftsmans-Software-Structure/dp/0134494164
By the same author as Clean Code. This is way less practical, but if you’re a fan of big words, there’s stuff to learn here.
Code That Fits in Your Head
Link: https://www.amazon.ca/Code-That-Fits-Your-Head/dp/0137464401
This is a different author than Clean Code but in the same series and very recent (2021). The title reasonated with me as I thought it was about synthesis of code expression, but it’s actually a wealth of good advice about programming in an organization. Writing code for others to read, from team processes to java packages organization and a healthy dose of humanity.
Site Reliability Engineering
Link: https://www.amazon.ca/Site-Reliability-Engineering-Production-Systems/dp/149192912X
This is nearly an advertisement for working at Google, but there is sensible advice for organizations of smaller scale aswell. It’s essays rather than a guide, so it can serve as entertainment too!
Designing Data-Intensive Applications
Link: https://www.amazon.ca/Designing-Data-Intensive-Applications-Reliable-Maintainable
Most software out there doesn’t measure it’s userbase in concurrent users, but if you’re running a website, live service or Minecraft, this book showcases the big ideas behind scalability. Human aspect, databases, serialization, distributed systems, stream processing… it’s a bunch of words but with some knowledge of network development and http, words like “stream processing” turn into “Hadoop/MapReduce” and then the book is quite useful.
Soft Skills
Link: https://www.amazon.ca/Soft-Skills-software-developers-manual/dp/1617292397
This book isn’t really about coding. It has a lot of fluff. It’s been recommended to me and in that sense, maybe my entourage should tell you if it’s a good book or not. I liked it!
Specialized Programming
The following books are for more experienced developers looking to branch out into a new domain, or at least like me, get an overview of what it’s all about.
Learn OpenGL
Link: https://www.amazon.ca/dp/9090332561
It’s the paper version of this really good tutorial: https://learnopengl.com/
I am still in no way an expert on OpenGL. Implementing shaders still intimidate me as a lot of them are only shared in white papers with too many big words, but hey I can render cubes and mod Minecraft.
Computer Graphics with OpenGL
Link: https://www.amazon.ca/Computer-Graphics-Open-GL-4th/dp/0136053580
This large book goes at the root of computer graphics. In fact, the algorithm used in Pixel Painters to trace lines in-between interact packets was taken from this book. The book goes in depth on what work OpenGL is saving you.
Understanding Compression
Link: https://www.amazon.ca/Understanding-Compression-Data-Modern-Developers/dp/1491961538
This smol book offers down-to-earth explanations on compression algorithms from ye old and modern ones too. I like compression.
Logic and Computer Design Fundamentals
Link: https://www.amazon.ca/Logic-Computer-Design-Fundamentals-5th/dp/0133760634
This isn’t a book, it’s a university textbook. I picked it up used in some university library. What’s fascinating about this book is the raw density of information presented, as it’s meant to be accompagnied with classes. But if you instead try and apply its topics on redstone or some other game, it’s a weaponized brain squeezer.
Physics for Game Developers
Link: https://www.amazon.ca/Physics-Game-Developers-Science-realistic-ebook/dp/B00CB30Y46
This book for me is neither a reference or a guide, but rather a summary of what physics engines are saving me and thus how to use them and appreciate the features they provide. This book includes the physics classics like rigid bodies, collisions, projectiles and whatnot, but goes above and beyond including how to structure an engine and talking about hardware like touch screen, pressure screens and optical reading.
Game Hacking
Link: https://www.amazon.ca/Game-Hacking-Developing-Autonomous-Online/dp/1593276699
It’s a weird one for me to recommend, but starts from cheat engine and dives into the memory model of games and how to interact with it to modify software through reverse-engineering, code injection and even includes a pathfinding primer. The title/cover is a marketing thing but it has actual info inside.
My 2 cents is that it’s better to create games than to crack them.
Game Design
Books about game design are much rarer than programming books. It’s actually a newer field!
Level Up! The Guide to Great Video Game Design
Link: https://www.amazon.ca/Level-Guide-Great-Video-Design/dp/1118877160
This is a good starter on the kind of thinking required in game design. It reminds me of Extra Credits. This book can be read by literally anybody in any field.
The Art of Game Design: A book of Lenses
Link: https://www.amazon.ca/Art-Game-Design-Lenses-Third/dp/1138632058
The title is important here: Lenses. Basing the creative process on finding the box and thinking outside of it, looking at the box from as many angles as possible to find its limits is a must.
Gamification by Design
Link: https://www.amazon.ca/Gamification-Design-Implementing-Mechanics-Mobile/dp/1449397670
This isn’t a game design book, it’s a tiny primer about how to gamify non-gaming products. For example achievements on Khan Academy. It can be helpful within games to build a meta-game and a meta-meta-game, and also to keep in mind what is or isn’t annoying to players/users.
Pattern Language for Game Design
Link: https://www.amazon.ca/Pattern-Language-Design-Christopher-Barney/dp/0367367726
Much like lenses, this is about patterns, another way to describe open-minded ideation. Applying the ‘15 Fundamental Properties of Wholeness’ from an architecture book is a little bit too guru-lite for me. But, much like programming patterns, just keeping them in mind while creating stuff can help. Plus, this book is well sourced in a wealth of actual games.
Narrative Tactics for Mobile and Social Games
Link: https://www.amazon.ca/Narrative-Tactics-Mobile-Social-Games-ebook/dp/B08LG1KV6P
The title reminded me of “Don’t you guys have phones?”, but it’s actually a collection of PhD essays on storytelling in games. A lot of the content is applicable to all games.
Management
Eek!
Managing Humans
Link: https://www.amazon.ca/Managing-Humans-Humorous-Software-Engineering/dp/1484221575
This book is a fun read because you don’t actually need to be a manager of any kind of appreciate it. It can be used as entertainment!
Peopleware
Link: https://www.amazon.ca/Peopleware-Productive-Projects-Teams-3rd/dp/0321934113
It’s another fun read about understanding behavior of people, although it’s more from a HR point-of-view and slightly more formal than Managing Humans (which is from a dev pov). It’s a well-known book and has a wealth of topics and tidbits anyway.
The Phoenix Project
Link: https://www.amazon.ca/Phoenix-Project-DevOps-Helping-Business/dp/1942788290
This is actually a pseudo-narritive book about software projects. It’s like they took teachings from the Mythical Man Month, modernized it to a DevOps era (although it’s so much IT in there) and built a story of parables around it.
I guess it’s kind of like… the new testament?? Take some and leave some, but can be useful.
A Playful Production Process
Link: https://www.amazon.ca/Playful-Production-Process-Designers-Everyone/dp/0262045516
At the tri-section of design, development (incl. art) and management is production. There is weight to the words in this book because it’s clearly written by someone with experience in the role. Someone who maybe read or experienced Blood, Sweat and Pixels and decided to make a change. Beyond project management, it’s a book about how game design is entertwined in the production/iteration process and how to scale that process.
Quick Mentions
Books that aren’t education or development, but which I remember.
How to Teach RELATIVITY to Your Dog
Link: https://www.amazon.ca/How-Teach-Relativity-Your-Dog/dp/0465023312
Literally Einstein wrote about relativity. This is the simpler tutorial to Interstellar.
Never Split the Difference
Link: https://www.amazon.ca/Never-Split-Difference-Negotiating-Depended/dp/1847941494
It’s a bit like Carnegie’s famous book but without the backwards thinking. I don’t know much about negociating except that most people I know hate it. Might be because of the backwards thinking.
The Art of War
Link: https://www.amazon.ca/Other-Classics-Eastern-Philosophy-Leather-bound-ebook
It’s The Art of War, but this specific edition has other tales and old eastern philosophy texts. Sun Tzu’s book is actually relatively short and an easy read. What’s funny about this book is how some of the lessons in there are quite eternal. The main thing I learned for League of Legends is that victory is about making less mistakes than your enemy.
Maus
Link: https://www.amazon.ca/Complete-Maus-Survivors-Tale/dp/0679406417
It’s a great comic about a greatly uncomical event.
If you find me somewhere or maybe on Twitter, tell me if you got one of those books or if there’s a book you think I should get!