Code: the hidden language of computer hardware and software, by Charles Petzold.
It's a modern classic (2000). It's less technical and more about the history behind the idea/theories of coding itself. It also explains some basic principles of how computers work, at a high level. Very well written.
I also think it's a great book, but partly because it is technical.
Charles is great at explaining how computers actually work with circuit diagrams from the ground up in a way that's articulate, clear, and engaging. I think I learned more from this book than I did in my CS architecture class.
The historical context he puts it in helps with clarity since it's easier to understand when you know how each successive step built on the previous one.
In addition to the Dream Machine, I'd also mention Steven Levy's Hackers as an obvious one to read.
Some others I've read:
- What the dormouse said (this one was just okay, but interesting to see some of the cultural context at the time).
- Crypto (about the history of cryptography). I really liked this one, but people I've recommended it to found it dry.
- In the Plex (history of Google)
- Masters of Doom (John Carmack, John Romero and Id Software)
Related Fiction:
- Microserfs
- The Soul of a New Machine
- The Phoenix Project (fiction paired with the Dev Ops Handbook)
Curious why you labelled The Soul of a New Machine as fiction? It's a non-fiction book by Tracy Kidder and I highly recommend it. A really fantastic piece of work I think anyone in our industry should read, great insights into teams, burnout, our culture, managing, software development etc. There are online versions of it if you Google.
Oh, maybe my idea of "technical" is too narrow. From a typical book perspective it's very technical. I meant it more from a textbook perspective. Code isn't a book you use to teach, or to learn concepts in detail. You could learn plenty of things at a high level, some concepts at a single-example level, but you aren't learning computer architecture or algorithms here. It's the only book I've read that effectively bridges casual reading with textbook ideas, without actually throwing you in the deep end.
On a side note, people keep recommending masters of doom to me, I definitely need to check it out myself.
It definitely does - nothing is perfect, but the core ideas of version control for config, continuous deployment, automated testing, focusing on bottlenecks, and tracking data are all valid.
The dev ops handbook is a good compliment for real world examples. I’ve personally seen good dev ops turn things around and make products way better.
There's a software-industry version of that book about the startup Ask Computer Software killing it in the MRP business software space with a product called MANMAN. Maybe somebody remembers the title?
It's like reading a long version of one of Paul Graham's essays.
Some of the things it covers:
- Ask's actual relationships with customers. One of them interviews all other existing clients before buying (like 200 companies.)
- the software team dynamics. One "rockstar" polyfills over all the weird OS bugs at the time, so the others can work on the actual application.
I’d also add Small Fry to this list - Lisa Brennan-Jobs’ memoir. Very different in style, but very good and focused on the family life part rarely talked about.
This is one of my favorite books of all time out of all books, not just tech. No other book has had a more profound impact on how I look at and relate to those (previously) mysterious chunks of metal and plastic that we all spend so much time in front of now.
It's a modern classic (2000). It's less technical and more about the history behind the idea/theories of coding itself. It also explains some basic principles of how computers work, at a high level. Very well written.