System Administration, Linux, DevOps, Programming, Computer Science, and other Interesting Books/Videos
Practical exploration of your systems is one of the best ways to learn, but to be a great system administrator or software developer, you need to build up a huge amount of theoretical knowledge too.
Theory gives you a framework to hang your experience on, which will help you make sense out of the enormous number of new facts you’ll learn every day. This is actually a really exciting prospect: thousands and thousands of incredibly bright people have poured their life experience into creating books, which allow you to shortcut all the pain and suffering and simply ‘understand the important stuff.’
This is a list of the best and most important books for you to read. These are referral links, which means that not only is buying these books a great investment into your skillset and career, but it’s also a nice way to give back to tutorialinux without spending any money that you wouldn’t spend otherwise.
Books You Need To Read
We’re in the system administration business. These are the books that make up the foundation of our technical skills:
The Unix and Linux System Administration Handbook (5th edition)
by Evi Nemeth, Garth Snyder, Trent Hein, Ben Whaley, et al.
This is probably the most valuable tome on Unix and Linux system administration that’s out there. I own several dog-eared editions of this one, and it’s always on my desk. When I moved from the U.S. to Europe (and then back), this was the only book I didn’t ship in a box — I felt like I needed it with me, so it got to ride in my carry-on.
If you could somehow work through this book and have a grasp of everything it contains, it would more or less qualify you as a mid-career sysadmin. It’s extremely practical, but also has tons of history, background information, stories, advice, and just a really readable tone (which is rare for this genre).
On a practical-skills level, this book has given me more than anything else. During my first few system engineering jobs, I would read a given section about some topic (cron, init, the /proc virtual filesystem) and then immediately be able to have a conversation with a much more experienced sysadmin about that topic, without it being obvious that I was a newbie.
If you’re serious about becoming a sysadmin, system engineer, system architect, or other Systems professional, and for some reason you can buy only one book, it has to be this one.
The Linux Command Line: A Complete Introduction
If you’re just getting started with Linux and need a clear, no-nonsense guide to basic command-line skills, this is the book to start with. It’s small enough to be manageable, but working through it will give you solid command-line skills.
You might not have a deep understanding of how the Linux kernel works after reading this, but it will give you indispensable skills that make further Unix/Linux exploration much faster and more pleasant.
The Practice of Cloud System Administration: DevOps and SRE Practices for Web Services, Volume 2
If you’re interested in DevOps, Platform Engineering, SRE, or any of these other newfangled terms and positions, this is the book to read. It’s a no-nonsense guide to managing large-scale software-as-a-service infrastructures. Once you know how to administrate one or ten Linux systems, this is the book you need to read to learn how to administrate thousands.
I use information from this book almost every single day at work (I’m a Platform Engineer).
The Practice of System and Network Administration: Volume 1: DevOps and other Best Practices for Enterprise IT (3rd Edition)
This one is a great high-level guide to working as a system administrator. There is fantastic advice about working with people, setting up systems, planning your career, and just about everything else that isn’t covered by technical guides such as the Unix and Linux System Administration Handbook (above).
Older Edition:
Networking for Systems Administrators (IT Mastery) (Volume 5)
Mike W. Lucas has written one of the best introductions to networking that I’ve ever read. If you’re new to system administration and networking, there’s no better place to start. Highly recommended.
Time Management for System Administrators: Stop Working Late and Start Working Smart
This is one of the best books I’ve ever read on time management. It offers immediately actionable advice and a strategy for doing system administration work that makes you much more productive from day 1. If you’re working as a system administrator and are feeling even the tiniest bit busy, this book is required reading.
RFCs (Requests for Comments)
Do you like the Internet? If you do, you may enjoy understanding how it works. This will make your life easier and more fun in a virtually unlimited number of ways. Thankfully, the design documents for the Internet are freely available. Here’s some to get you started:
RFC 791: Internet Protocol (IP)
RFC 793: Transmission Control Protocol (TCP)
RFC 768: User Datagram Protocol (UDP)
Programming and Software Development
You don’t really think that system administration is all you do…do you? You’re in charge of systems that are made out of countless levels of software abstraction. Big mountains of software. Not to mention thousands of octopus-like scripts, reaching out between components and tying them together.
If you think you can be a system administrator in the modern age without also having a good bit of software development understanding, you will never know how much time you’re wasting. At the very least, learn a programming language like Python or Go. If you want to go deeper, these books will help:
Structure and Interpretation of Computer Programs
Abelson and Sussman have put together probably the best book in existence on programming. It is dense. You will be using Lisp (Scheme). Your brain will hurt. And then you will suddenly understand how everything is tied together, composed, abstracted, and ruled over by the principles in this book. Just go read some of the reviews on Amazon, that should be enough to convince you that this is THE FOUNDATIONAL TEXT for computer science and software development.
You can check out the video lectures for free on the MIT website; they are phenomenal.
Mr. Neighborly’s Humble Little Ruby Book
It’s cute. It’s small. It’s (maybe?) a tiny bit outdated. But this is the book that gave me the insight that made basic programming in a dynamic language make sense for me. Maybe it was the fact that I’d been plowing through programming books before that, and this was the last head bash that was necessary to finally get a grasp on the subject matter.
I don’t know. But maybe it’ll be the same for you. If you’re totally new to programming, this is a great (free) book. Please donate to him if it’s useful.
The Little Schemer
When you begin to wonder why there’s so much noise about Lisp, Scheme, functional programming, and all this weird parentheses stuff, this is the book to start with. It will give you the beginnings of a deep intuitive understanding of functional programming, and why some of the smartest people in our industry rave about it.
Be warned: the book is cute, but it’s not easy. As a matter of fact, it will probably by crushingly difficult. I got a tremendous amount of value from actually working through every single problem on paper (Scheme/Lisp is actually quite nice to write out on paper). The book’s focus on mentally stepping through the computation will make you a better programmer for the rest of your life, and will teach you recursion without much fuss.
Peopleware — Productive Projects and Teams
If you find yourself getting involved in a software development project, you need to cancel your plans for the weekend and read this book. The amount of pain it will save you is almost immeasurable. If you don’t understand what’s in this book before trying to direct a software project, you are getting yourself into more trouble than you know.
Psychology
Think you’re in the business of administrating computers? Wrong. You’re in the business of dealing with other humans, and providing value to them. Here are some of the best books I’ve found about human interaction:
Influence, by Robert Cialdini
This one will mess you up, but only for a few weeks. You’ll see that all your life, you’ve been played for a sucker by people who understand the principles outlined in this book (the “Weapons of Influence”). This is an excellent examination of how people get and use power over other people. My recommendation is to use this for defensive purposes, and purposes of understanding.You can take this too far and try to actively ‘use it on someone’, but then you’re going to have to eventually contend with all the resulting problems you create for yourself because you are a jackass.
Use it wisely.
Learning and Thinking
You might think you are in the business of system administration or software development or networking or psychology or something else, but you are wrong. You are in the business of learning huge amounts of new information quickly, and solving problems by thinking powerfully and correctly.
The Psychology of Human Misjudgment (video), by Charlie Munger
One of the key insights from modern psychology in general is that our minds hide their own weaknesses and deceptions from themselves.
If you’re not sure why you should listen to this guy, look him up on wikipedia. He’s someone who has made thinking his business (and happens to be one of the wealthiest humans around, suggesting that his theories actually work in practice).
This is a video of a speech he gave to Harvard students and faculty a while back. In places it can be difficult to understand, but spending some mental energy on really understanding the material will save you more time and suffering than you can imagine.
Thinking, Fast and Slow, by Daniel Kahneman
This is a great book that points out some interesting ‘bugs’ in the human mind, and how to start becoming aware of them. If you’re interested in thinking straight (instead of just believing that you do), you should read it.
This book is a slightly more gentle introduction to the idea that human minds are extremely buggy, and that humans make stupid mistakes which totally hijack their lives all the time. For a short, dense, and brutal introduction, check out the Charlie Munger video above.
Fiction
It’s not all about work. Here’s some fiction that you might like, and which might motivate you to learn about aspects of programming, systems, computer science, security, or other issues in a way that reading dry technical content cannot.
Cryptonomicon
You know what? Just go read everything that Neal Stephenson has ever written, starting with Cryptonomicon. “What’s it about,” I can feel you asking. I dunno…just read it, ok?
It’s about World War Two. It’s about the beauty of math and computer science. It’s about statistics. It’s about Turing and the beginnings of modern cryptography and cryptanalysis. Forget it, this brick of a book can’t really be described. Just read it and thank me later.