My Favorite Books

Friday, 8/3/01

When I started writing books, I decided to stop reviewing other peoples' books. I used to have a list of all of the books in the topic of my current interest and write a little review, either pumping them or panning them (this was long before Amazon.com). Once I decided to write books myself, I figured that there'd be a conflict of interest putting down competing books, so I stopped. However, I've had lots of folks ask me for a list of recommended books over the years, so I thought I'd provide one. While I'm still biased, there's at least less conflict of interest if I just tell you about books that I love (although I'm not so proud that I don't tag each book URL with my Amazon.com associates ID...).

I would give each of these books a 5-star rating on Amazon (and, in some cases, I've done just that). These are the books that I absolutely love (in no particular order):

  • The PC Is Not a Typewriter by Robin Williams. Of course, this is not by the famous actor, but Robin is as famous in the type design field as the other Robin is in the funny joke field. In fact, I'd say the former is even more impressive, because she doesn't let herself get talked into writing bad books. You can't go wrong with any of Robin's books, but this is the first one of hers that I read and it still holds a special place in my heart. She specializes in teaching text design amateurs how to do text design and she's great at it.
     
  • Genetic Programming III by J.R. Koza, et al. It's no secret that I've long had a weakness in my heart for programs that generate programs. This one is the ultimate -- programs that figure out themselves how to generate the correct program. Very wow. And, as is necessary for all books on this list, it's very well written. It's gripping in the same way that the latest John Grisham novel is gripping (to a certain kind of person : ).
     
  • Essential COM by Don Box. This is not only the classic work on COM, but it captures the heart of the movement of Windows programmers into component development. Be careful when you pick it up, though. You could start by looking something up and find yourself hours later still reading it for the pure pleasure. BTW, Don and I have good close friends for years, so I may be biased (except I'm not -- this book rocks).
     
  • Don't Make Me Think by Steve Krug. I'm still in the middle of reading this book, but wow. It lays out web usability in a way that even a web design cretin like me can appreciate. He points out the dos and don'ts in a way that's clear, concise and entertaining. I'd love to be able to convey so much with so few words. And the production values of this book are great. I wonder if Addison-Wesley will let me write a .NET programming book in the same style...
     
  • User Interface Design for Programmers by Joel Spolsky. Joel maintains one of my favorite web logs and has collected his usability musings into a wonderful little book (clearly influenced by the Krug book). What makes this book so wonderful is that he captures all my feelings about usability, making me feel like an expert. Of course, I love a book that agrees with me. : )
     
  • Effective C++ by Scott Meyers. This is the book that started a movement. Of course, if you're a C++ programmer, you need to read this book. But more than that, Scott laid out a style that has often been imitated, but never duplicated. (I know, because I tried.)
     
  • Mr Bunny's Guide to ActiveX by Carlton Egemont III. If you're a COM programmer, you need this book. Check out the close up of the pixel. It kills me every time.
     
  • C# Essentials by Peter Drayton, et al. This is hands down the best .NET programming book out there. It's clear, concise and accurate (a novelty in the Windows book market). It only took me a few hours to read, but I learned a ton. BTW, Peter works for DevelopMentor, but I'm not biased because I don't like him very much. : )
     
  • Fundamentals of Database System by R. A. Elmasri. This is one of the rare college text books that is not only readable, but practical. I read this after years and years of doing database work and was very surprised that they covered what software engineers actually need to know about how databases work.
     
  • Inside SQL Server by Kalen Delaney. Ironically, I haven't had much database experience under Windows (I was a Unix Informix guy), but when I read the earlier edition by Ron Soukup, I fell in love with this product. I'm sure it was the way that Ron described it, but I couldn't imagine doing SQL Server work without this book.
     
  • Modern Operating Systems by Andrew S. Tanenbaum. I sure wish I had had this book when I was taking my operating systems course in college, because then Linus Torvald would be reading about the success of my operating system and not the other way. This book is so great and so well-written that its inspiring. I firmly believe that every effective programmer needs to first understand what's going on underneath their drag-n-drop, click-button IDE and this book sure lays a great foundation.
     
  • Computer Networks by Andrew S. Tanenbaum. Along those same lines, Tanenbaum's networking book is also excellent. Makes me want to dig right into the plumbing.
     
  • TCP/IP Illustrated by W. Richard Stevens. Of course, the late Richard Stevens was a legend in the Unix community. This book, while slanted towards Unix, is still a great book about the world's most dominant network protocol. I can't decide whether I like this book or Computer Networks by Tanebaum better, but you can't go wrong by owning both.
     
  • Unix Network Programming by W. Richard Stevens. As a Unix programmer not even doing network programming, this was still the bible. I know that you Windows programmers aren't going to rush out and buy it, but if you wake up with a desire to program in a command line world, you'll need this book.
     
  • Philip and Alex's Guide To Web Publishing by Philip Greenspun. I don't know how much practical information there really is in this book, but after reading it, I really wanted to quit my job and go to work for Ars Digita. Unfortunately, after Phil brought in some "professional" management, they kicked him out and, as far as I can tell, are driving that company into the ground. Still, the amount that that guy has contributed to the internet community is staggering and inspiring.
     
  • ASP Internals by Jon Flanders. Now on this one, I'm very biased, because not only is Jon Flanders a fellow DevelopMentor employee, but he's also been one of my best friends since 3rd grade and I wrote the forward. That said, if you want to know how ASP really works, down to source code for an ISAPI extension that Jon builds to work just like ASP, you need this book. And what's so amazing is that he's able to convey so much so concisely. I wish I could write this briefly. I hope an ASP.NET Internals is forthcoming from Jon.
     
  • The C Primer. This book is long out of print, but it's where I learned the C syntax that has served me so well through so many languages, i.e. C++, Java, JavaScript and C#. I don't expect anyone to need this book anymore, but it does have a special place in my heart.