Book Review: Python 3 Web Development - Beginners Guide

I just finished reading Python 3 Web Development - Beginners Guide by Michel Anders and here is my book review.

Michel Anders is no doubt a brilliant programmer. He has managed to go through HTML, Javascript, jQuery, jQuery plugins(both using and writing), jQuery UI, CSS selectors, CSS 3, Python, CherryPy, SQL and SQLite, unit testing, writing your own ORM, and Python meta-classes all in one book! Which is the problem with this book. I doubt any one who qualifies as a beginner will be able to get any further than chapter 2. I believe the author made the mistake of not putting in enough thought about his audience when writing. But, before making my final remarks, I'll give it proper treatment by commenting on each of the chapters.

Chapter 1

Chapter 1 explained the authors reasons for choosing the tools that he did, and boy were there a lot of choices to be made. Here were the choices:

  • Web framework: CherryPy
  • Language: Python 3
  • Javascript Library: jQuery and jQuery UI
  • Database: SQLLite
  • ORM: None. He's rolling his own
  • Revision Control: svn

There are a lot of high level talk about the rationale of each choice and why he made them. It was a bit strange that he put the choice of using Python after the choice of using CherryPy. The first chapter is quite intimidating for beginners - there is really lots to consider when building a web app. He admits it too, but he puts in a lot of encouraging words to encourage the reader to stay focused.

Chapter 2

Chapter 2 went through the exercise of building a web-based spreadsheet application, a la Google Docs. The goal is ambitious, especially for a "hello world" program. I wondered how he was going to pull it off. 

The Author covered CherryPy, jQuery/CSS selectors, a jQuery plugin called jEditable, wrote his own jQuery plugin that builds a spreadsheet which uses jEditable, CSS 3 and HTML all in this chapter. The amount of Javascript in this chapter really surprised me because in the who-is-this-book-for section, it says "introductory level knowledge of JavaScript might be useful, but is not strictly necessary". He simply tried to cram too many things in, explaining each technology only cursorily as he encounters them. I am pretty sure that he lost almost all readers in his audience with this chapter

The Rest of the Chapters

Since we've already lost almost all readers I will place less emphasis on chapters 3-10. Basically, it is more of the same: trying to cram too much information into his readers' minds too quickly. These chapters whirl-wind tour the following:
  • Writing an authentication handler, and then later authorization within CherryPy
  • Using the file system as storage
  • Using SQLite to replace the file system as as storage
  • Using SQL directly to manipulate and query the database
  • Ajax and lots more of jQuery and jQuery UI
  • Unit testing in Python
  • Building a hand-rolled ORM, and then improving it using meta-classes, where the phrase "make your head explode" was used
  • Adding a CRUD interface to the system for his CRM, and then refining the CRM.
The further you get in the book, the larger blocks of code were put on the page, and the author just tries to talk through what is going on. I skimmed most of these chapters because when you are explaining code that is so dense, it is easier to read the code itself - which I often resorted to - than to read the prose.

Conclusion

Unfortunately, I cannot recommend this book. Reading from the book title, the audience is a Python programmer, perhaps beginner to intermediate, who is beginning in building web applications. This book will send this programmer away crying. I think perhaps a more fitting title for this book is "A Coding Cowboy's Journey In Web Development with Python 3".
blog comments powered by Disqus