Naming only ones I haven't seen mentioned in other comments:
- Networking for Systems Administrators, by Michael W. Lucas. Its explicit goal is to teach you just enough about networking, from the electron up, that you can talk to an actual network engineer and not make a fool out of yourself. It's a phenomenally high-ROI read if networking isn't your strong suit.
- The first 3 chapters of Mastering Regular Expressions. Regexes are up there with Vim keybindings in terms of sheer ubiquitous use no matter what stack you find yourself in. The rest of the book is excellent if you want to actually implement a regex engine.
- The Art of Unix Programming. Less technical. Gives you an idea of why exactly 'nix machines are like that, especially older commands. The 18 rules of design are worth committing to memory.
- The Linux Programming Interface. More technical. Pairs esp nicely with the above. Lots of practice C code one can run, plenty of short self-contained chapters.
- Not a book, but an online paper: https://how.complexsystems.fail . I see echoes of this everywhere I work, and it often helps me understand what kinds of "bad" things are secretly highly evolved resiliency measures.
- The Little Schemer. Just for the joy of solving problems.
Most of the others I can think of are too specialized to be of worth to everyone, but for what it's worth, William S. Vincent's Django for Beginners, APIs, and Professionals are a lovely triptych for anyone wanting to get into backend web dev.
Brian wrote The C Programming Language (the book), along with many other great books. He worked at Bell Labs during the time of Unix and it's a casual, whimsical telling of some of the history there.
John Ousterhout's "A Philosophy of Software Design" I liked. It was supposed to be assigned reading for Berkeley's data structures class CS61B, and I don't think I really internalized the lessons within, but after re-reading it recently, I appreciated it a lot more and found the material transcends how to write code but also how to architect things as well.
Zen and the Art of Motorcycle Maintenance was a HN favorite, but seems to have dropped off the charts. It's not exactly CS, but covers the topic of tech and quality.
Don't know who you mean by "everyone," but the only two mentioned so far suitable for a broad audience are The Soul of a New Machine and The Cuckoo's Nest.
- Networking for Systems Administrators, by Michael W. Lucas. Its explicit goal is to teach you just enough about networking, from the electron up, that you can talk to an actual network engineer and not make a fool out of yourself. It's a phenomenally high-ROI read if networking isn't your strong suit.
- The first 3 chapters of Mastering Regular Expressions. Regexes are up there with Vim keybindings in terms of sheer ubiquitous use no matter what stack you find yourself in. The rest of the book is excellent if you want to actually implement a regex engine.
- The Art of Unix Programming. Less technical. Gives you an idea of why exactly 'nix machines are like that, especially older commands. The 18 rules of design are worth committing to memory.
- The Linux Programming Interface. More technical. Pairs esp nicely with the above. Lots of practice C code one can run, plenty of short self-contained chapters.
- Not a book, but an online paper: https://how.complexsystems.fail . I see echoes of this everywhere I work, and it often helps me understand what kinds of "bad" things are secretly highly evolved resiliency measures.
- The Little Schemer. Just for the joy of solving problems.
Most of the others I can think of are too specialized to be of worth to everyone, but for what it's worth, William S. Vincent's Django for Beginners, APIs, and Professionals are a lovely triptych for anyone wanting to get into backend web dev.
reply