Learn Python The Hard Way is Zed Shaw’s introduction to programming for non-programmers. He uses the Python language and gradually introduces concepts via examples. The exercises and instruction are reminiscent of the rote repetition of mathematics in grade school, with the complication that each lesson seems to build on the past; there’s never another zero-point along the way.
I have a hard time evaluating such a work, as I am not the target audience. I have written code before. I’ve even seen and played with (albeit briefly) Python before.
My benchmark for introductory programming language books is K&R. It may not be the best book on a programming language ever, but as introductory texts go, it covers an amazing amount of ground. One of the key aspects of K&R is that the examples are nontrivial; the authors build upon what they’ve explained previously to develop real programs, rather than just exploring a lot of toys.
I don’t mean to imply that the best programming language books have to be like K&R, but it is a yardstick by which I measure.
The rote approach is thorough in covering basic language mechanics, and not particularly redundant. It encourages careful study, reflection, and side projects for learning more, but doesn’t force one to do these things. I don’t think this is a bad approach, for people that learn by repetition.
What I’m not sure is if good programmers learn this way. I guess that’s my sticking point.
With that said, one’s either going to appreciate Zed’s style or they’re going to be offended by it. I think the same is probably true of the book; as much as I can’t accurately speculate on behalf of its target audience, I suspect people will either find it condescending, frustrating, and toy-like or they will find it enlightening, empowering, and educational.
Some of the advice isn’t something I necessarily agree with; I think lesson 36 does a good job of hand-waving and giving potentially dangerous/silly advice, which while perhaps appropriate for the beginner, could set an unfortunate precedent.
And then chapter 37 shows up and says “go teach yourself all of the key features of Python.” And, after that, I lost interest. We went from a somewhat exploratory/rote approach to a “well, I’ve walked you through how a match works, go study every type of fire-starting construct ever made.” It’s sort of a logical next step, but after 35 lessons of barely incremental progress and rote, Zed gives up and tosses the reader into the deep end.
So, I’m not particularly fond of this book. The beginning seems well thought out for the beginner, but the last third of the book is if anything just an admission of how little had been covered prior to that point.