Apr 15: Book Review: The Art of SQL
Then, occasionally, I realise how important it is to apply certain standards to what I write here, particularly if I'm reviewing someone else's work, and one of the most important qualities is honesty, even at the expense of popularity or friendship.
I'll declare up-front that one of the co-authors of this book is a good friend of mine, Peter Robson. Peter has discussed this book with me intermittently over the past 18 months or so and I was chuffed when he popped a free copy round to my house a couple of weeks ago. I was expecting it to be pretty good. Stephane Faroult is the primary author and Peter is (only) a 'with Peter Robson' but Peter earned my respect for his views long ago so his involvement was a good sign. I've heard great things about Stephane too.
Sadly, I think this is a poor book and reading it has been an extremely annoying experience. In fact, it's been so irritating that I've stopped at page 112 out of about 330 because I have more valuable uses for my time. It's important for me to emphasise that I've based this review on a third of the book, even though I can see there might be some interesting material coming up in the next few chapters. I promised Peter I'd give it my best shot, but I feel I'm wasting my time. So, what's my problem with it?
Let me start off with the positive aspects. Most of the Oracle books that I've disliked in the past have been technically inaccurate. Given the free availability of largely accurate and readable vendor documentation, it's unreasonable to expect me to pay extra for a book that is wrong. Then again, I have to accept that I've said stupid or wrong things in the past that were documented correctly, but if a book contains numerous errors, that would be my primary reason for shelving it early. I can't say I've found any blatant inaccuracies in this book. A couple of areas of minor disagreement possibly, but the authors clearly understand the subject well.
They also understand the important fundamentals of solid relational database design and demonstrate a good approach to problem solving. In fact, if I was looking for a consultant to help me implement an important new database system, I would have no hesitation in approaching the authors. While reading the book I had a constant feeling of 'Yes, I know exactly what you mean. Good point.' There's a lot of hard-earned experience behind this book.
I think the sentences are well written in the main, but it's very difficult to follow. If that seems like a contradiction, hopefully it will become clearer later in this review.
Now on to the negatives.
Most active members of the online Oracle community will be aware of the efforts of people like Kyte, Lewis and others for everyone to base their material on test cases, for various reasons. What this book reminded me was how important test cases, or rather examples, are to learning. While reading this, I often thought, 'Yes, I know what you mean, but why don't you *show* me instead of describing it to me? It's too hard to follow and takes too long this way'. I raised this with Peter and he suggested my reaction may be based on my experience level, but I think that reading this would have been worse if I didn't know the subject. There are long discussions on topics during which I would feel, 'Thank goodness I know this subject already because otherwise I would be totally lost'. Think of the subject - The Art of SQL. Doesn't that seem like a perfect opportunity for numerous examples of different ways of writing the same SQL statement, showing which is the best, and why? In the first 37 pages there are two SQL statements, neither of them very significant.
Instead there is page, after page, after page ... of opinion. Frankly, I don't care if the authors have interesting opinions based on years of experience. To me, the purpose of a book is for them to communicate that experience to *me*. If they can't communicate it to the reader, so the reader's knowledge grows, then what's the point of the book? Reading this book hasn't taught me anything. Is that because I know everything in the book? It might be, but when I'm reading a book about Oracle I always have one eye on how well things are explained. Maybe I want to steal the ideas or maybe I'll recommend this book for others to read. I wouldn't wish this book on anyone who is trying to improve their SQL skills.
There are far too many assumptions about prior knowledge. It's as though the author was writing entirely from his own perspective, without thinking about the reader. Maybe it assumes a certain level of experience and I'm missing the point? Well, I have a lot of experience and I didn't find anything that was very interesting or new in the book, so I assume it's not aimed at me. In fact, if I had to pick the most frustrating aspect of this book, it's that so many subjects are mentioned in passing and then cast aside without adequate explanation. i.e. In what I suspect is an attempt to pitch the book at a technically competent audience ('no need to explain that, they'll understand it') the book is very thin on technical substance of any kind. The result is far too abstract.
Despite there being nothing intellectually challenging here, I found it a very difficult read. Reading continuous text describing a language and a methodology with no illustrations is challenging, to say the least. If I compare it to Chris Date's 'Database in Depth' book - that dealt in very fundamental, very complex subjects and yet was much more readable because they were illustrated and not just discussed.
It's like trying to learn how to bake a cake without having a recipe or even a list of ingredients. All that's here is a description of how tasty cakes are; that it's important that they rise and that you can have different toppings. All of which may be true, but are of negligible value when it's time to bake one of your own. I'm not a fan of so-called 'Cookbooks' either, because they just give me examples and don't really teach me the fundamentals. However, even though I don't want fully-formed recipes, I do want someone to show me how to use a whisk properly. (Okay, I've done the cake thing to death now)
If I had to read 5 or 6 pages of this material in a blog format, I might recommend it wholeheartedly as an opinion piece. I agree with many of the opinions it contains, in fact. As it stands, though, I can't think of a single colleague or course student I've come across that would extract much that was useful from this. Which is a shame, but true.
I've got some good news. You don't even have to trust my opinion here - have a look through the sample chapter, which I should warn you is easily my favourite and might make this review seem churlish. If you enjoy that, you might well enjoy the book, but it's not for me.
If anyone does have a positive opinion of this book, I'm desperate to see your comments because maybe I've missed the point completely.
#1 - Anonymous 2006-04-15 17:51 - (Reply)
Well, Doug asked me to consider a comment, so here goes (head in lion's mouth, etc).
I really enjoyed your review, Doug - especially the nice things about me. There was lots of positive stuff, but there weren't many examples. By the time I got to the line about 'on to the negatives', I got a bit bored (I mean, that must have been at least one and a half screens without a diagram, never mind some SQL!), didn't really want to shatter the illusion, so stopped reading...
Seriously, thanks for taking the time and trouble to review it! I may just get around to reviewing your review before too long, if I can incorporate more than two SQL examples...
#2 - Doug Burns said:
2006-04-15 18:03 - (Reply)
Peter,
A perfect review and it brought a *big* smile to my face. You've hit the nail on the head, as usual.
If you look back in the blog, somewhere is a previous review I had rejected by Amazon. With the benefit of hindsight (and a comment by Howard Rogers, if I remember correctly), it was a rubbish review because I didn't actually say much about the book to help people make a decision about whether to buy it or not.
So I'm a bad reviewer, it's true, and I don't seem to have learnt my lessons. It's not my job though and sometimes I just say what I think, for better or worse. Maybe I should say - 'an Opinion about a book' rather than 'Book Review', but that seems artificial.
I still don't like the book, but felt I had to give an opinion on it because I'd said in a previous blog that I would and promised you I would, too. If I'd decided not to bother or said I really liked it, that would have been a much bigger crime than a badly written review.
Here's a link to Amazon's page for the book that contains more information on the content of the book if that's what people want :- http://www.amazon.com/gp/product/0596008945/sr=8-1/qid=1145138286/ref=pd_bbs_1/102-9113720-5272925?%5Fencoding=UTF8. I'd originally included it in the blog and replaced it with a link to the sample chapter, which will allow people to form their own opinions.
To sum up (boy, I do like to go on don't I, and then I have the cheek to slag the book off for doing the same), this reponse is as witty and incisive as I wish I could be.
Cheers,
Doug
#3 - Jonathan Gennick said:
2006-04-21 16:36 - (Reply)
I'm the editor of the Stéphane's and Peter's book. Their book is actually one of a handful that stand out, that I'm most proud of having edited during my tenure at O'Reilly. Naturally it's disheartening to read your criticism of the work.
The positive aspects you list in your review reinforce my already good opinion of the authors. You point out that their book contains no "blatant inaccuracies," and that you have only "a couple of areas of minor disagreement possibly." You say that "the authors clearly understand the subject well," and that "they also understand the important fundamentals of solid relational database design and demonstrate a good approach to problem solving." I agree with you on all these points. Were I implementing a new system, I too would surely want the authors on my side.
But then everything goes downhill as you compare The Art of SQL to books from Tom Kyte and Jonathan Lewis, and then complain of the lack of test cases. I can accept the fact that you like the style and approach that Kyte and Lewis use when they center their books around reproducable code examples. There's a danger though, in venerating people so highly that you come to see their approach as the one, true way. You seem to agree with Stéphane and Peter, you just don't seem to like the way in which they present their material. Does that make the book "poor?" Perhaps it does in your eyes, but I would hate to see potential readers translate your dislike of Stéphane's and Peter's writing style into a damning of their content and reputation.
I'd like to also comment on the prior knowledge that readers are assumed to have. In your review, you say: "There are too many assumptions about prior knowledge." Perhaps that's true. The authors do admit right up front in the preface that they assume readers "have already mastered the SQL language." But isn't it rather refreshing to for once read a book about SQL that doesn't begin with "here is how we select from a table?" I sure found it refreshing. And I learned a few things too, from Stéphane and Peter. Probably I fell into their target audience a bit more squarely than you did.
I'm their editor, and of course biased, but I find Stéphane's and Peter's book to be a refreshingly creative read on SQL. The do provide evidence and statistics sometimes to back up their claims, but they are also not afraid to assert their experience. And I respect experience.
I'm sorry you didn't like Stéphane's and Peter's book. I hope in general that it's better receieved. Time will tell. Thanks though, for taking the time to post your review and for inviting me to respond.
--Jonathan Gennick
#4 - Doug Burns said:
2006-04-22 04:20 - (Reply)
Thanks for the comments Jonathan.
"Their book is actually one of a handful that stand out, that I'm most proud of having edited during my tenure at O'Reilly. "
Which illustrates the subjective basis of any review. I just didn't like it, I suppose, but you really did and you've spent a lot more time reading it than I did
Each to their own.
"There's a danger though, in venerating people so highly that you come to see their approach as the one, true way."
Well, I seem to be one of the few people on the face of the 'Oracle planet' who didn't think Jonathan Lewis' first book is a resounding success and have said so in the past (both in reviews and to his face). Again, it was for stylistic reasons, rather than the quality of the information it contained. I'm also nowhere near as keen on Tom Kyte's 'Effective Oracle By Design' as I am on the Expert One-on-One book. My point was that a technical book works best with plentiful examples. I happent to think that Expert One-on-One book is the epitomy of what I feel a technical book should be, but I accept that not all books can be the same and some people might find different styles work better for them.
"You seem to agree with Stéphane and Peter, you just don't seem to like the way in which they present their material."
That's about the size of it, although I also believe that the book actually ends up being light, in some respects, because it's heavy on *opinion* and light on supporting *information*
"... but I would hate to see potential readers translate your dislike of Stéphane's and Peter's writing style into a damning of their content and reputation."
That's not very likely when I was reinforcing their reputation in the early parts of the review. Personally, I think I've been quite clear that I really don't like the book, regardless of how much I might respect the authors. On the content, I think the choice of subjects to discuss and what appear to be the high-level objectives were a great idea, I just don't like the way they've been delivered. Which might seem minor, but I *really* don't like it and I think the content is pointless if the reader doesn't get it.
"There are too many assumptions about prior knowledge." Perhaps that's true. The authors do admit right up front in the preface that they assume readers "have already mastered the SQL language."
What I hoped to get across in my review (because I spent a lot of time thinking about this) is that, if that's the assumption, then I think the book is *far* too light on material that would add to my knowledge of the SQL language.
"But isn't it rather refreshing to for once read a book about SQL that doesn't begin with "here is how we select from a table?" I sure found it refreshing."
You know what? Here's the bit you don't know yet, because it wasn't in the review. I had that feeling at the start too. 'Oh, great, this is going to be good'. Then I realised that what I thought was an initial gentle warm-up was going to be the tone of (at least the first third) of the book. I kept thinking - 'yes, this could be interesting' and then the subject would be glossed over in a couple of sentences or discussed in such abstract terms that you could only really understand it if you know it already (in which case, why on earth would I bother reading it?). I'm guessing about that last sentence, of course, because of my prior knowledge but I've taught lots of people and have a good feel for what is likely to be confusing.
Essentially, I kept waiting for the book to get interesting and it just didn't. I loved the discussions in the online chapter, about SQL and the database and the optimiser but that was about it. Even then, it could have done with more detail and illustration.
"I'm their editor, and of course biased, but I find Stéphane's and Peter's book to be a refreshingly creative read on SQL."
Maybe other people will too. I just found it frustrating.
"The do provide evidence and statistics sometimes to back up their claims, but they are also not afraid to assert their experience. And I respect experience."
So do I, but I much prefer it when someone can express that experience to a novice, whilst providing enough substance for other readers. Even the novice has no reason to believe the content unless the authors can show me. It's undoubtedly a tough trick to pull off, though.
"I'm sorry you didn't like Stéphane's and Peter's book. I hope in general that it's better receieved. Time will tell. Thanks though, for taking the time to post your review and for inviting me to respond."
Thanks for the response. It's one of the things I love about blogging. Although the comments aren't as prominent as the original criticism, there's *always* a right of reply here.
I'd still like to read a positive comment on the book from one of it's readers who weren't involved in the book.
#5 - Jonathan Gennick said:
2006-04-22 08:45 - (Reply)
"I'd still like to read a positive comment on the book from one of it's readers who weren't involved in the book."
Stéphane coincidentally pointed me to the following review just this morning:
Craig Mullin's blog entry on the book
There are a couple of Amazon reviews too, and they are mixed: one being a thumbs-up and the other a thumbs-down.
