(Disclaimer: I received a complimentary copy of this book from the publisher).
There's a healthy market of books describing the basics of programming and programming languages. And there are plenty of books act as reference material once you've learned the basics. But, there's now a growing market for books that purport to be the next step for those who have mastered the basics and are now ready to take their skills to the next level. One of these books is Expert Python Programming. Under the covers, this book promises to help the reader to be more productive with Python, both in setting up an efficient development environment environment, as well as packaging it all together and distributing it. There's also a chapter on test-driven development. The back cover reads like a checklist of good programmer practices that few would argue weren't laudable, even essential programming goals. Unfortunately, the execution in relaying this information is muddled, and the book reads more like a collection of blog posts rather than a contiguous, coherent work.
Expert Python Programming starts by covering installation of Python, iPython, and setuptools. It also covers selecting an editor. Seriously, if you're opening a book called "Expert Python", and the first thing you need to do is figure out how to edit Python code, you might as well just put this book down, because you're not ready for it yet. Granted, there's some nice tips about setting up vim so that it doesn't do bad things with Python code, and I can understand that not everyone that picks up this book may be at a true level of expert (after all, not everyone who reads Seventeen magazine is necessarily seventeen years old yet), but the chapter sets a poor tone for the rest of the book.
The next two chapters for best practices below and above class level were some of the most confusing chapters in the book. I tried very hard to follow along with what was being demonstrated, but try as I might, I felt I needed to refer to other sources to even get close to what was being presented. These two chapters almost made me dismiss the rest of this book, but I persevered. I'm not sure if it was a fault of mine, or if the explanations themselves weren't enough, but suffice to say, they were a low-point of the book for me.
That isn't to say that Expert Python Programming doesn't have it's good points. The book has god advice within it's pages, and the author knows his stuff. Unfortunately, the editing and overall direction of the book makes it not as apparent as it could be. I wanted very much to like this book, and I think that with a different editor at the helm, this could be an extraordinary book. This book would be good for those who have already made it past the intermediate / advanced curve of Python. Unfortunately, as presented, it takes a strong will to get the good bits out. Those who would be best served by the advice of this book (beginners, intermediate programmers) will find themselves wanting another resource.