The “excluded middle” of technical books
(ok, I know that “excluded middle” has a specific meaning in philosophy and I’m using it incorrectly here, but I like the way it sounds)
A couple of months ago I read a book called A Semantic Web Primer, published by the MIT Press. It was recommended to me by my coworker Jamie, who said it was about the only thing worth reading on the subject.
I will say that I’m glad I read it, because now I understand the terminology and the way that the Semantic Web community talks about knowledge and ontology. What I found intriguing about the book, however, was the nature of the content:
- Begin with hyperbolic vision of the future where software agents are negotiating my doctor’s appointment
- Explain a little about RDF concepts, then spend almost half the book describing the XML serialization
- Explain a little about ontology and then do a deep-dive on OWL, which is mostly a way of describing which properties are valid for certain classes
- This is where it gets weird — The “applications” section. Suddenly we’re talking about how Elsevier and Audi are using “The Semantic Web” to solve all manner of problems by having shared ontologies. Or maybe they’re planning to. The descriptions of what they’re doing are no more than well-padded paragraphs with no detail
It struck me that there was a massive chunk of the book missing, which was bridging the technical details of the RDF spec with how a car company might design and implement a shared ontology using the specs just described. This gap was so apparent that it got me thinking about the different kinds of computer books out there, which generally come in three flavors:
- High level books about technology concepts, principles or “the future”
- Learning a specific technology at a pretty deep level
- Algorithms and computer science books that are math-heavy and at best use pseudocode
The first category tends to sell the most, because it’s accessible to the largest group. The second has been struggling for a while because the internet makes it so easy to learn and reference information about specific technologies, and the final group will probably always have a place amongst people who really want to deep-dive into the algorithms.
When I wrote Programming Collective Intelligence, I was hoping to find a middle-ground, which would introduce readers gently to the algorithms, show them working code and then try it out on real data that they could find on the web. The book was criticized by different people for not fitting into the aforementioned categories: “Not big-picture enough”, “This isn’t real production code”, “Not deep enough on algorithms”, “why did he use Python instead of pseudocode” or “Why would I want to learn 3 things at once?”.
The overall response, however, was overwhelmingly positive — most people loved that they could learn something new, actually try it, and then have an idea about how they could work it into their project. Tim O’Reilly called it the “start of a new category rather than one more entry into an existing one”.
Anyway, I guess what I’m getting at here, is that I’d like to see more books that fill out that middle ground — show me concepts, implementation and applications all at once. People can read any number of online tutorials to get a deeper understanding of how to do something with a particular technology. Once they understand the basics of algorithms, there are plenty of textbooks and journals to teach them more. As for big picture, throw out a few ideas and people’s creativity will fill in far more than can be covered by any book.