What makes a good programming book?
During the last couple of years, I’ve been reading quite a few books about various programming topics and related technologies. Some of them take a very practical approach with a lot of examples and some take a more philosophical approach and some books are somewhere in between.
Examples of the practical books are Microsoft ADO.NET Core Reference by David Sceppa and Visual Basic .NET Unleashed by Paul Kimmel. They are filled with code samples and how-to guides and are good books for reference.
The Pragmatic Programmer by Andrew Hunt and David Thomas take a philosophical approach with few code samples. A book like this is easier to read and makes you think.
The books in between could be C# 2005 Business Objects by Rockford Lhotka. It’s not exactly philosophical but it touches some of the same topics. It is also filled with code samples that are understandable through discussions in the book, thus making it a little philosophical.
The problem with the practical books is that they are too broad in their covering of the subject. When they state that the book is for intermediate users, you can rest assure that most of the content is not. The same goes for the advanced books. This is regardless if the book is highly focused on a niche in programming or takes a more broad perspective. They are good for reference but so is the Internet.
The philosophical books tend to be more challenging and that’s usually a good thing. However, the lack of practical use makes them vulnerable to personal interpretation and thereby looses some of their usefulness. This could also be a benefit of course, depending on the nature of the book.
Both the practical and the philosophical books always make me skip pages, because there are a lot of wasted ink and paper in them. This could come in form of over-explaining things or just stating the obvious again and again.
I find that almost every programming book falls into one of these three categories. My personal favourite category is the one that mixes code samples with a philosophical approach, because it forces you to participate in the discussions and make your own judgments on specific coding and architectural problems while you read it. It can also be used as a reference and thereby combining the best of the two worlds.
So, what does make a good programming book? To be honest, I don’t have a clue. Maybe it depends on what your expectations for a certain book are before you read it. I have been disappointed many times because of high expectation.