Customer Reviews: Learn Python the Hard Way: A Very Simple Introduction to the Terrifyingly Beautiful World of Computers and Code (3rd Edition) (Zed Shaw's Hard Way Series)
Amazon Vehicles Up to 80 Percent Off Textbooks Amazon Fashion Learn more Discover it $5 Albums Fire TV Stick Health, Household and Grocery Back to School Totes Summer-Event-Garden Amazon Cash Back Offer TheKicks TheKicks TheKicks  Amazon Echo  Echo Dot  Amazon Tap  Echo Dot  Amazon Tap  Amazon Echo Starting at $49.99 All-New Kindle Oasis Celine Dion Shop Now

Your rating(Clear)Rate this item

There was a problem filtering reviews right now. Please try again later.

on February 27, 2014
I have been teaching programming for more than a dozen years and I can't decide if I love or hate this book. The fundamental approach, "type this code and see what happens" is right on the money but all too often the code is followed by the advice to "look up the details on the web." The author does not direct the reader to specific sites (like this book's website -- which contains all the content). Rather, you are sent adrift and told to find your way. As everyone knows the quality of advice across the web is hit or miss and some programming symbols are hard to find. For example in the section called "symbol review" the author suggest looking up operators like ==, {, @, ] or escape sequences like \\ or \a or string formats like %%. I agree that the exercise of trying to find these things is useful but I paid for the book and I want to have the answer key. Similarly, in the section titled "learning to speak object oriented", he introduces randint() but does not say how it works. It is easy to do a web search for it but one of the top five results on Google is just wrong and others require you to know the difference between [0, 10] and (0, 10). The repeated calls to make flashcards makes sense but not if he fails to provide the information that belongs on the cards. While the lack of detailed tables for key features is horrid, the information provided is superb and there are very few typos. Sadly the typos are fixed on the book's website but there is no errata to allow you to correct the hard copy (which will make you nuts when you get to page 133 and there are [ ] where { } belong). I especially appreciated the introduction to Windows PowerShell (and Mac Terminal) which, unlike the rest of the book, does include the definitions for essentially everything covered.

So, while the positives (well thought through progressively more difficult code examples) do outweigh the negatives (lack of a glossary and lack of tables with details) ... barely ... you will likely want to get another reference book to cover the holes in the instruction.
1717 comments| 145 people found this helpful. Was this review helpful to you?YesNoReport abuse
on December 23, 2014
I approached this book with half a B.S. of Computer Science complete and various levels of experience using C, Java, PHP, Ruby, C#, etc... so, what I'm trying to say is. This review is not meant to be a rant from a new programmer. And if you are a new programmer reading this, I highly suggest you look elsewhere to begin your journey into Computer Science / Programming / Python.

I read this book as the free HTML version which Zed offers, which is very kind of him to do. My expectations were high since I regularly see this book listed as one of the first you should read when learning Python. At around lesson 41 though I really began to lose my patience.

As other reviewers have stated, I will simply reiterate. The writing style is very light, degrading, and misleading. You are constantly told to do exactly what the author states you should do which is a huge disservice to learning. The examples that stand out the most to me is when Zed states to avoid Vim, avoid IDLE, avoid Python 3.... I assume most beginners will have no idea what he is talking about and take his word for it. I definitely agree Vim can be intimidating for some but I would avoid being so finite about how a student wants to learn. Let them make the decision and simply guide them.

The strictness of avoiding Python 3 to me is utterly ridiculous. The differences would most likely be unnoticeable at this level of programming... the only problem I have ever ran into is print() vs. print. I see this as the author simply being lazy and not wanting to update his book. Python 3 should be taught. This is the same mentality you hear from old HTML/XML programmers who do not want to adopt HTML5 standards. Students should be urged to adopt the most recent version of the language.

Much of the material is not covered enough to be useful and for the inexperienced this will simply be a book to build associations and muscle memory but you will ultimately not really understand what you are doing, or why you are doing it. Additionally, there are code breaking mistakes littered throughout this book which perhaps was intentional to see if the student can debug their own code properly.

It just feels like this book was written by someone that woke up and decided that anyone can write a book, so why doesn't he? I can't give any suggestions to an alternative as I am still looking for something that resonates with me. But since this book is available for free, take the time to check it out. You might like it... but it isn't worth investing in a hard copy. Go watch free YouTube tuts and save your money for a better quality book or just read the official documentation.
1111 comments| 130 people found this helpful. Was this review helpful to you?YesNoReport abuse
on January 2, 2015
Try the free online version first. I bought the e-book PDF plus videos from his website. Like others I believed the links (even the edX MIT 6.00.1X course I took also refers to it) to it. If you want dry humour and condescension and want to look everything up yourself then go ahead. It is commendable the book is available free online so try it there. The videos are nothing more than the author typing in the code and running it.
I checked the "Learn Ruby the hard way" to see what that would be like. It is almost at verbatim, with slight Ruby specific changes, identical to the Python version.
I am totally new to programming or Python yet found most exercises extremely simple. Why spend a week on learning logical operators and Boolean expressions. I'm 40+ years out of high school but that is kids stuff even my 5 year old can understand in a couple of hours.
Then he gets to dictionaries and object oriented programming and the lack of in depth explanation from the authors side and the look it up yourself looks just lazy to me.
22 comments| 17 people found this helpful. Was this review helpful to you?YesNoReport abuse
on August 23, 2015
Beyond what other users have said (tone, dogmatic approach), I found the most disappointing aspect of this publication is that the online content is much richer and more complete than the printed material. For example, Exercise 39. In the book, it's a simple example of using dicts with a single program and little code explanation. However, online, the content includes not only the exercise on dicts, but also an example of creating your own dictionary module, substitution of that module in the original exercise, and discussion/explanation of the code. To add insult to injury, there's also numerous typos in the book, including one (again) on Exercise 39, which, if you follow the directions and type "exactly" what is in the book, will result in your trying to create a dict using list syntax. All in all this book is a very poor representation of the material available online for free.
0Comment| 11 people found this helpful. Was this review helpful to you?YesNoReport abuse
on June 10, 2014
For some strange reason a lot of the examples in this book are using [square brackets] instead of {curly brackets} for dictionaries - which will not compile. The author has admitted this is a typo but if you are new to programming it will be extremely confusing especially since most of the exercises are "type in exactly what I tell you and I'll explain it later". Do not buy this book unless you are comfortable debugging his code and confident you can identify when he meant to use an array versus when he meant to use a dictionary on your own.
0Comment| 28 people found this helpful. Was this review helpful to you?YesNoReport abuse
on January 21, 2016
This book is a fraud.. Not one time does the author explain or define any of the content. For example in other books an operator would be defined. Here he presents you with code and tells you, you should know what it means and if you don't, look it up. Yeah man that's great, you are a strong believer of the importance of being able to find documentation for a language online when working with it. Totally defeats the purpose for buying the book, I didn't buy a book just to be told to go find it online. I already knew that. I bought the book so I did not have to look online, I'd have the information right in front of me. This book is bulls*** and I strongly advise you not to waste your money on it, I can tell you right here: hey if you don't know what a piece of code means or does just google it.. Author is completely blinded by his belief he is doing anybody a solid by purchasing his book to research python online. When you could of just went straight to googling python code without buying the book.
0Comment| 7 people found this helpful. Was this review helpful to you?YesNoReport abuse
on August 24, 2014
I love the presentation, the only short fall is that the information about the book never tells you it is designed for Python 2.X. There doesn't appear to be a way to ask either the author or publisher why. I would like to know since I am trying to learn Python 3.X.
11 comment| 9 people found this helpful. Was this review helpful to you?YesNoReport abuse
on April 20, 2016
I just finished the free, on-line version of the book. I thought that it was excellent. I was surprised to see negative reviews here, so I thought I would add some weight to the positive reviews.

Why I thought it was good:

1) He strikes a good balance between helping you understand concepts, and forcing you to exercise your "answer your own questions" muscles. (He doesn't hold your hand too much.)
-- Some people in the reviews complained about this. You can learn everything he is teaching you on Google they point out. On the other hand, everything can be learned on-line nowadays, and still, people pay for schooling, for professional training, for tutoring, and for guidance. Working through this book gave me guidance, it gave me structure, it broke concepts down into digestible pieces.
-- Yes, sometimes he says "If you don't understand this, Google it." That helps prepare you for the real-world of coding after the book, I believe, when we have to look up answers for ourselves. That's a big part of being a good programmer (I suspect): being able to research and find the right information. It isn't easy parsing through twenty webpages all talking about Python concepts, trying to find the specific thing you need. And especially in the coding world, answers on StackOverflow (for example) are wildly and randomly different in how much expertise is required to understand a given answer.
-- It's hard, in other words, and he wouldn't be doing us any favors saying simply "Type x to do y."

2) He is honest, and has a good, lighthearted sense of humor.
-- Another thing I saw people complain about in the reviews is Zed's supposed condescension, that he talks down to you. I didn't experience this or feel this at all. I felt that he was extremely supportive of my undertaking to learn to code, and that he did a good job of explaining stuff to me in a way that was down-to-earth, funny, and which struck a good balance of explaining concepts while still giving me the benefit of the doubt that I am an intelligent person who can get the hang of this stuff. He makes acute jokes about the coding world, and gave a noob like me confidence to resist getting sucked into the pointless debates that people so easily get sucked into. It felt like having an older brother stand up for me and guide me away from distraction, and focus on learning things that are important.

3) He forces you to learn practical skills right off the bat.
-- Before this book I had done a handful of Codecademy courses, including the Python course. After those courses, I felt like I had a decent grasp on a given language's syntax, and that I could build some simple things. But I didn't know how to set up my local environment, how to use the command line, how to get a text editor to do things that I wanted it to do for coding, or even how to install Python.
-- In this book, you start off right away setting up your local environment, and by exercise 3(?) he has you using a simple command-line parser to get input from the user. By the end of the book he has us making project directories that store the core skeleton features of a project: bin/, tests/, etc. He teaches us how to write tests and use tests. I think that working through this book in its entirety is way better time spent than a Codecademy course.

At the start of the last exercise, he says, "We're coming to the end of the book, and in this exercise I'm going to really challenge you. When you're done, you'll be a reasonably competent Python beginner. You'll still need to go through a few more books and write a couple more projects, but you'll have the skills to complete them." I think that's accurate, and that's fair, and that's way more than I could say after weeks of Codecademy courses. I am a competent beginner now.

I had a great time working through this book. It was challenging, and fun, and I found his humor to be really fun along the way. I just purchased the book (after finishing it), because it's only $30, and because I have benefited so much from the work and time that he put into this, that he deserves my money.

If you're unsure about buying it, that's fair. But go do some of the book for free on-line, and give it a chance, see for yourself. Don't listen to the negative reviews. If you feel like it isn't right for you, that's also fair. Go find a book that is more to your taste. Zed would encourage you to do the same, because he knows that the only thing that is important is learning to code, and all the other debates are just distractions.
11 comment| 6 people found this helpful. Was this review helpful to you?YesNoReport abuse
on January 8, 2014
I have known of for some time, but never spent much time on the site. I have even blindly referred friends to the site, based solely on the notion that I have heard it was a pretty good resource for learning Python. I’m glad I finally sat down to check out a hardcopy of Learn Python the Hard Way (3rd Edition), which comes with a DVD containing over 5 hours of video instruction, though I didn’t bother check it out.

One of the first things to notice is the tag line on the cover, “A Very Simple Introduction to the Terrifyingly Beautiful World of Computers and Code.” Programming can be a very rewarding hobby and/or career, a creative outlet, and horribly frustrating at times — especially to those just starting their journey. In his book, Zed Shaw uses a technique called instruction. It seeks to teach the reader to learn programming, by actually doing things in Python. Some of these things may be quite difficult for a novice, or seem trivial to someone more advanced. I suspect there is some bit of learning for everyone, no matter where you lie in the spectrum. The presentation is matter-of-fact but not cavalier. Learning is the clear goal, but may not come without some frustration along the way.

The curriculum progresses quickly from fundamentals of using computers efficiently (like a programmer does, e.g. preferring the keyboard to cycle between open application windows) to building a web-based game. I found the chapter on packaging to be especially useful because the state of Python packaging is a bit turbulent right now. The migration from Python 2 to Python 3 is also pain-point in the community. The book is Python 2-based. While I would have liked to see more emphasis on Python 3 to help promote the migration, anyone who masters the material should have no problem experimenting with Python 3.

So, do I think it really is a good resource? Oh yes, of course! But without some tenacity, and a willingness to fail before succeeding, you might not enjoy this particular text because of it’s medicine without the sugar mentality. I would also like to note that I received a hardcopy of the book through my local Python interest group in exchange for a review.
0Comment| 10 people found this helpful. Was this review helpful to you?YesNoReport abuse
on November 22, 2013
As a programming language junky and former programming languages book author, I found this book to be very interesting and useful. The author teaches you programming in Python by using the divide and conquer approach. Each exercise cover a small part of the language, enabling you to easily digest learning Python. The videos on the companion DVD are very nice. I found the author's dislike of object-oriented programming terms a bit disappointing, but he is certainly entitled to his opinion. Nevertheless, I think this book is worth getting and I recommend it for readers who are beginner to medium level programmers. Advanced programmers will very quickly breeze through the book.
11 comment| 14 people found this helpful. Was this review helpful to you?YesNoReport abuse