The critical thing to remember about "Code" is audience. This is a book targeted at a smart person who knows little about computers, and really wants to get a fundamental understanding. Those who are willing to dedicate time and some heavy brain power to it will get a lot out of it. Although well written, the tone is dry, and the concepts covered here are not lightweight. Essentially, Petzold covers a college-level course on computer logic and design, starting at ground level, and taking you through a lot of territory. For computer people, this a great book to give to someone else.
If you're a computer person, don't read this book. You won't be happy, because it's not meant for you, you've heard it all before, and you'll soon grow tired of it. If you've always wanted to explain the details of computers to some other person, then give them this book.
It's a little uneven at times, and the tone is dry. It may not hold the interest of any but the most dedicated reader. Occasionally, it seems like there was stuff that was neat, and Petzold really wanted it in the book, even though it doesn't really help make his point. I found the material on Morse code, Braille, UPC codes, and film cartridges interesting, but any one of these would have made his point. Similarly, his sudden dive into the history of computing is distracting - he hasn't really focused on the characters of computing in the 250 pages before this, and quickly sticking this in the middle doesn't help elucidate the concepts presented in "Code."
For someone who is interested in the details of computers, and willing to invest the time to learn them, this is an excellent book. Be prepared - there's a lot of detailed information here, but, if you get through it, you'll be rewarded with an in-depth understanding of computers and "Code."