
This fourth edition covers Red Hat Enterprise Linux, openSUSE, Ubuntu, Solaris/Opensolaris 11, and AIX 6.1.
Unix and Linux System Administration Handbook by Evi Nemeth et al.
I'm pretty sure Arch wiki is worth reading, too.
- UNIX and Linux System Administration Handbook. Get the most recently volume. It's a tomb (~1200 for the most recent).
- If you do any SQL, SQY Performance Explained is an 80/20 read for DB indexes, query optimization, and troubleshooting
- A Philosophy of Software Design (more recent). Just a great book on good design considerations to keep in mind.
- Mastering Regular Expressions. The first half of the book will make you confident. The second half will show you how they're implemented. Regular expressions aren't something to be afraid of!
- Designing Data Intensive Applications (more recent). Great book about data infra design decisions. Maybe not the scope you're looking for though.
- Design Patterns (Gang of Four). Absolute classic. Hard to read all the way through though, more of a reference read. You'll recognize a lot of the patterns. You'll find some great to see a formal definition of, and you'll see some you never want to use.
- Clean Architecture - Uncle Bob's best book IMO. I really don't like Clean Code, but this book talks a lot about interfaces and the right level of separation in your systems.
- K&R, as you mentioned, is of course a classic
- The AWK Programming Language is a nice quick read with similar quality and structure to K&R.
- Beej's Guide to Network Programming. The best overview of network programming, including the C API. Plus this book is genuinely funny. Beej has a ton of great stuff, all on their website for free, or in print.
- The Rust Programming Language is very well written too. Also online for free or in print.
- Structure and Interpretation of Computer Programs: this helped me understand the different types of recursion; how a problem can be modeled for the code to solve and how those designs can evolve and how the paradigm I'm using (functional or OOP) can help me
- Refactoring: this book helped me understand the different patterns we can use to alter code. Giving them a name and symptoms is a great way to apply and communicate with other coders. I recommend this book to everyone.
- The little Lisper: this really helped me get recursion. Like really. Although I could use a refresher.
- Clean code: look... this book is bad. Like, really bad. But, at the time I read it, and in the languages I used (Python, C, R) we didn't have many rules on how to write and organize our programs. And I wanted to improve on that skill. And this book gave me pointers and made me think about those ideas. I don't recommend it around, because for many people Clean Code can become a dogma really easily. But if you can question and critique and reach out to other resources and is an advanced beginner to coding, I can see this book bringing value.
- An Elegant Puzzle and Staff Engineer by Will Larson: those helped me get clarity on the role of the technical team in an organization. A team that produces code as the main driver of impact in a product/service. I lump them both because I read them back to back and don't remember, exactly, which is which. But une is more focus on a tech leader and the other a tech specialist.
- Unix and Linux System Administration Handbook: whenever I need to interact with some unix technology, this book delivers in terms of giving me a nice historical view and presenting the common tooling around the tool. This helps me interact with stuff programmatically much better. Be it GRUB, X, SAMBA, this book gave me the necessary introduction I needed, much more organized and thought out and with useful references than the average blog post you will find in the wild.
And I'd like to recommend this Ask HN on problem solving books