Sunday, March 08, 2009

Expert Python Programming, a Book Review

A few months back, I received an email from someone at Packt publishing asking whether I'd like a complementary copy of their Expert Python Programming book, and if I would blog about it. I accepted and read the book immediately. However, their request caused me to deeply consider my personal position on grassroots marketing for corporations.

Ultimately, I decided that it wasn't the publisher nor even the author that really mattered or entered into my assessment equation at all. Instead, it's the potential benefit that can be brought to members of the community. So, at long last, I am writing the review :-)

The author of this work is Tarek Ziadé, is a Python contributor, Plone contributor, CTO of Ingeniweb, author of a French Python book, spoke at OSCON last year, and will be talking at PyCon this year. I don't know him personally, but given his credentials, he is a well-qualified and experienced programmer.

Expert Python Programming is actually a shorter book than I expected, coming in at 352 numbered pages. It's also a fairly different book than I expected as well. If these were times when books were given outrageously long titles, I might have suggested something along the lines of:

Expert Python Programming

Wherein the Tools and Methodologies of the Experts

are Described and Discussed

The amount of material that is covered between its covers, though, is impressive. Check out the table of contents to confirm this. This is essentially a book of best practices and tools for Python developers wanting to move from an intermediate (or advanced beginner) stage towards the levels at which experienced programmers operate. In addition to discussing tools and methodologies, Tarek takes the reader on a quick tour of the entire development process -- an invaluable guide for programmers wanting to hit their stride in larger open source projects or on critical company software initiatives.

In Tarek's introductory blog post, he quoted Shannon -jj Behrens as saying the following:
"If you’re looking to progress from knowing Python to mastering Python, this is the book for you. In fact, this is exactly the type of book I wish I had had five years ago. What took me years to discover by steadfastly attending talks at PyCon and my local Python users’ group is now available in a succinct book form."
This is well said... though I would add that this book in conjunction with Python Cookbook (especially the last several chapters) can get you this progress that Shannon mentions :-)

One tiny little quibble ... Given that this book might be read by developers who have no experience with distributed version control systems, I would have liked to have seen Bazaar and Darcs mentioned in addition to Mercurial and Git. The reason being that a developer reading this book as her introduction to working with others in a distributed environment may be given the impression that Mercurial is "the Python way", and that's not necessarily the case ;-)

I've already personally recommended this book to curious and motivated beginning Python programmer friends (as well as an intermediate programmer who felt like he was stuck in a skill rut). If you're one of these, consider this my recommendation to you too :-)


Nathan said...

Cool, I'll get it and give it a read.

Nick Coghlan said...

The one downside is that, at ~3 years old, some of the specific tools recommended in the book are no longer the preferred way of doing things. Most notably, there are underlying problems with the way that setuptools and easy_install work, so they have been superseded by distribute (where Tarek himself is one of the lead developers) and pip.

No doubt there is still a lot of good advice in there, but keep in mind that providing effective tools for distribution of Python code is an area under active development, so 3 years is a long time.

Some more up to date info on the recommended tools in this area can be found at:

Duncan McGreggor said...

Nick, thanks for the update!

And I look forward to a second edition of this title ;-)

outlier said...

You can download this book here : Expert Python Programming