Learn Python 3 the Hard Way

Author: Zed Shaw
Publisher: Addison Wesley
Pages: 320
ISBN: 978-0134692883
Print: 0134692888
Kindle: B07378P8W6
Audience: Would-be Python programmers
Rating: 1
Reviewer: Alex Armstrong

Personally I'd prefer the easy and fun way but can hard be better?

I appreciate the need for titles that attract a reader, perhaps even by being insulting, after all what are the Dummies books if not slightly insulting to the reader. All books that say "easy", "fun" etc are also down playing the difficulties that you might encounter in learning anything. But, what to make of a book that proclaims that you are to learn Python the hard way? It is slightly different, but wait this only a good approach if there isn't an easier way - and I think there is.

This particular book seems to preach the idea that rote learning is the only way to learn to program - or anything for that matter. It is adamant about following rules and committing lists to memory and it is very strong on old-fashioned values. If you like wearing hair-shirts and beating yourself with birch twigs, you might like this book - whether you will learn any Python is another matter.


I find it very difficult to review a book that I'mso at odds with. The attitude of the author is one of a hardly concealed superiority - but maybe he is, so I'd better try harder to understand the reasons for the approach. I have tried and I have to confess to finding all of the recommendations made simply contrary to best practice.

Right from the start we have a problem because the reader is told:

"do not use an IDE"

Later we are told:

"do not use a debugger"

Ah yes, let's don our hair-shirts and start programming with the help of a basic text editor like Notepad++ and don't bother with a debugger because, even though this can tell you more about your program than anything on the planet, well print statements are enough.

This is the 21st century and we are being advised not to use the best tools available. When you are a beginner you need all the help you can get and something like PyCharm with its intellisense-style completion, code highlighting and suggestions is like having a helpful tutor alongside. Not to use it is just silly and to suggest not using it is damaging and making things hard for the sake of it.

As to not using a debugger - this too is laughable advice. You can get by with print statement debugging, and it is skill worth knowing because it can help find faults in a few seconds, but - if it doesn't you need the help of a debugger and the sooner you get to know how to use one the better. To the book's credit it doesn't suggest that you use vim or emacs or stick pins in your arm while you are working.



What else is characteristic of this approach apart from not using modern tools?

There is a great deal of emphasis on hard work - even if it isn't smart work. For example quite early on the reader is presented with a list of operators. No explanations just a list so that you can read though and remember them as abstract symbols. You can come back later and fill in details of what they are. This is nuts. You don't have to memorise the operators only find out about what you want to use as you go along.

And so it goes on with heavy-handed assertions of rules that make little sense. The further the book goes into Python and coding, the worse it gets. We don't get a clear explanation of for loops and while loops; just that you should use for loops unless this isn't the case when you can break the rule. As the book moves into increasingly abstract territory like classes and objects, I fear it is even more likely that the innocent reader will either get lost or misunderstand.

Of course if the reader is committed to the "hard way" then eventually they will get somewhere by sheer brute force of work. Well done, but I prefer smart to dumb.

There are concepts behind the syntax. Coding is far from just a matter of knowing where the commas go. There are ideas behind loops and conditionals, functions, classes and objects. The book's subtitle is:

A very simple introduction to the terrifying beautiful world of computers and code"

It turns out to be a simple and boring introduction so something that. if done right, is far from terrifying. Programming is logical and if this logic isn't pointed out to you then it will seem like a collection of arbitrary syntax and hence terrifying,

It is possible that this whole approach is a tongue-in-cheek, put down of more enlightened methods of explaining how to program, but I still can't recommend it to a beginner and I certainly can't recommend it to anyone who can program - the boredom would be lethal.



For recommendations of Python books see Books for Pythonistas and Python Books For Beginners in our Programmer's Bookshelf section.

For more Book Watch just click.

Book Watch is I Programmer's listing of new books and is compiled using publishers' publicity material. It is not to be read as a review where we provide an independent assessment. Some, but by no means all, of the books in Book Watch are eventually reviewed.

To have new titles included in Book Watch contact  BookWatch@i-programmer.info

Follow @bookwatchiprog on Twitter or subscribe to I Programmer's Books RSS feed for each day's new addition to Book Watch and for new reviews.




Elements Of Game Design (MIT Press)

Author: Robert Zubek
Publisher: MIT Press
Pages: 256
ISBN: 978-0262043915
Print: 0262043912
Kindle: B087PL89PY
Audience: would-be game developers
Rating: 4.5
Reviewer: Kay Ewbank

Is developing a computer game very different than working on a different sort of app, and can you learn how to do it from [ ... ]

Beautiful C++

Author: J. Guy Davidson and Kate Gregory
Publisher: Addison-Wesley Professional
Date: December 2021
Pages: 352
ISBN: 978-0137647842
Print: 0137647840
Kindle: B09HTH1X38
Audience: C++ developers
Rating: 5
Reviewer: Mike James
Can C++ be beautiful?

More Reviews




Last Updated ( Friday, 15 June 2018 )