||New Reviews| |Software Methodologies| |Popular Science| |AI/Machine Learning| |Programming| |Java| |Linux/Open Source| |XML| |Software Tools| |Other| |Web| |Tutorials| |All By Date| |All By Title| |Resources| |About||
Keywords: Big data, data science, machine learning, statistics, algorithms
Title: Learn Python The Hard Way
Author: Zed A. Shaw
Publisher: Addison Wesley
Verdict: Not recommended
OK, I have to admit it, I just don't get it. Zed Shaw's 'Hard Way' series of books have sold in huge numbers and continue to do so. Aiming to lead the non-programmer into the 'terrifyingly beautiful world of computers and code', these books are pitched at the absolute beginner with no previous knowledge of programming in any language. There is actually a pretty crowded market of books that are pitched at that same audience, so what makes these books different and, more importantly, does this one succeed?
Where most beginner books lure the reader into promises of easy victory - learn X in 5 minutes, 5 hours, 5 days etc - these books sound more honest. Personally I find that approach more appealing than empty promises of an easy road to expertise. But where I don't get it is when we look at what that 'hard way' really entails. It's hard not because the material is difficult or theoretical, but because it's a hard slog of learning by rote. Yep, this is programming as taught by a drill sergeant. You do as you're told, you don't ask too many questions and you keep at it. Again. And Again.
The simple Python scripts that are developed have to be typed in by hand. There's no use here for fancy programming tools like an integrated development environment, it's text editor and command line all the way. That I can live with, it's the having to type in everything again and again. The idea is that cut and paste makes you lazy, it stops things sinking in, whereas manual repetition will help things stick. And once you've typed in and run the program, you then get the chance to follow the drill - change this, change that, do this, do that.
And it's not just the learning by rote that I don't get, it's the snark asides and commentary on programmers, computer science, computer languages. These aren't just unhelpful, they actively get in the way. For example object orientation didn't come about because programmers wanted to appear clever. Is it just the author acting up the 'hard man' role for the sake of the book? In any event it doesn't come across as convincing and it's certainly not doing anything to add to the book.
In terms of the actual exercises and what you learn, well it does get more interesting and challenging as the book proceeds. The projects become more engaging, and along the way you are introduced to some key ideas - variables, program flow, conditional logic, data structures, classes and objects. Very often the treatment is cursory, particularly when it comes to the object oriented stuff, and the book sorely lacks depth on the conceptual side of things.
So, to conclude, does this really do as it promises? It's a hard slog alright, but at the end of it I am unconvinced. The book should really be called 'Learning Python The Zed Way'. The author has got a particular take on things and it's imprinted all over the book. Considering there are some many other good introductory Python books, such as 'Dive Into Python', it's hard to see what there is to recommend in this one. Unless you like being shouted at.