After a quick discussion with Mo Khan about books we’ve read, I realized it would be efficient just to make a list of books I can recommend for tech, picking out the ones that really made me think. I read about 6-12 tech books a year, so expect this list to change and grow over time. No particular order of importance, just grab any of these that looks good.
Code Complete, by Steve McConnell
This was the book that changed my approach to programming, and made me care about style. Like reading Strunk and White’s The Elements of Style makes you a better writer, Code Complete is one of those books that will make you write better code.
That said, this book is huge, and an undertaking to really take to heart. However, everyone I know who has read this writes pretty code. Read it every few years, it’s that good.
Systems Performance, by Brendan Gregg
USE methodology. If you get nothing else from this book, fine, but understand USE.
The Phoenix Project, Gene Kim
What I like about this book is that it confirms my suspicions - the time I put in at a paper mill is applicable to my work in IT. There are cognitive limits to the amount of WIP (Work-in-progress) your group can have before you start tripping over each other. Think of it like the saturation point in USE, leading to errors and wasted work.
Bash Cookbook, by Carl Albing
The time you put in to learning how to effectively use a shell is not wasted time. Learn the tools, be awesome.
DTrace, by Brendan Gregg and Jim Mauro
Once you’ve learned DTrace, you’ve removed the blindfold, and your ability to troubleshoot bugs and performance problems is limited by your imagination and knowledge of the system.
Design of Everyday Things, by Donald A. Norman
After reading this, many designs you see in the real world will piss you off as you see how unsatisfactory they are. Well-designed things are a joy to use, practically transparent because no mental effort is involved in the usage.
Don’t Make Me Think, by Steve Krug
Like Design of Everyday Things applied to computer user interfaces.
Time Management for System Administrators, by Thomas Limoncelli
As my responsibilities have grown over the years, I’ve looked for shortcuts and ways to fit 28 hours into 24. This book gave me lots of ideas for what eventually blossomed into "The System" (which I’ll write about some time).
Being Geek, by Michael Lopp
If you’re planning on being in IT for the long haul, you’ll want some sound advice for navigating the softer side. This book has it in spades.
The C Programming Cookbook, by Brian Kernighan and Dennis Ritchie
Even if you never write C, knowing C is important. Learning C gives you access to the black box of your operating system (which is likely written in C), and let’s you see that most of computing is just manipulating memory.
Hackers, by Steven Levy
Knowing history is essential to understanding the design choices that were made in building the computer in front of you now. It’s a long, messy road, and with Steven Levy’s writing, you’ll be amazed, entertained, etc.
The Cuckoo’s Egg, by Clifford Stoll
Written in the 80s, and at least in 2014, a lot of the lessons still hold. Even if you’re not in tech, it’s just a fun story to read.
The Art of Unix Programming, by Eric S. Raymond
Whatever you think of ESR, this book is a great introduction to the Unix Way. Pretty much what I’d recommend to Windows devs, if they’re at all interested in taking a peak.
The E-Myth Revisited, by Michael E. Gerber
A lot of tech workers think they can get away without understanding how businesses work and how to organize one. This book will give you (in plain English) how to organize a successful business based on roles, creating a reproducible, resilient structure.
Programming Pearls, by Jon Bentley
Easily digestible chapters, fun to read.
Modern Operating Systems, by Andrew S. Tanenbaum
It surprises me when genuinely smart, knowledgeable people don’t peak under the covers of their operating system.
Man and the Computer, by John G. Kemeny
I read this when I was in middle school, and from what I recall of its points, it nailed it. Due for a re-reading, so I reserve the right to be wrong about this book being good.
I read a lot. If you’ve taken a look at my personal blog, you’ve seen that I consume, on average, a book a week. I’d be lying if I said the books above provide ‘all you need to know about computers.’ I’ve gotten chunks of wisdom from old Fortran manuals, works of fiction, dead folks who squeezed in a few gems in tomes of nonsense. Certainly, the above shouldn’t steer you wrong, but the key is to read a lot, and not just all tech stuff.