|Syntactic Confectionery Delight|
What do you want out of a programming book?
If you want to learn how to think about programming, this is one of the best books ever. If you want recipies that you can cobble together to get a program, it is worthless. If you learn what is in this book, you will become a better programmer, and it will continue to make you a better programmer after today's popular languages are long gone. It will not help you get a job tomorrow.
Some may think this opinion arrogant, but I suspect that the people who did not like the book do not particularly want to think. Consider this question carefully: Would I enjoy finding out how to reconceptualize what I am doing so that I can notice ways in which I cause myself trouble down the road, ways in which I can make the same code more powerful and adaptable, and find ways to take full advantage of language features that currently pass me by? The key word being "reconceptualize".
If this does not sound like your cup of tea, then don't get this book. You won't enjoy it. You won't learn its lessons. And it will be a waste of your time, your money, and the poor tree from which the paper was made.
Conversely if this sounds like you, you will likely find the book absolutely invaluable.
As you can see from the reviews, this is very much a yes/no question I am asking here. There is no middle ground. If you don't enjoy the exercise of trying to understand something you already know in a different way, don't kid yourself and say, "Well I respect tilly, and tilly recommends this, so I will get this book because it is going to be good for me." You will either find it a 1 or a 5, so don't bother getting it unless you are pretty sure that it will be a 5.
Does that answer your question?