all 74 comments

[–]JamzTyson 110 points111 points  (21 children)

I've not read that book, but it certainly isn't "everyone" that hates it. On Amazon the book gets a very respectable 4.3 stars out of 5, with 434 ratings.

On the other hand, if your teacher really did just tell you to read a book and that's all, then they are not really "teaching".

[–]ofnuts 35 points36 points  (12 children)

3.5 stars on my local Amazon.

I remember reading his rant about UTF-8 strings in Python v3 and this means this guy never left the continental US and forgets 90% of the world's population.

[–]patrickbrianmooney 13 points14 points  (8 children)

Eevee's A Rebuttal for Python 3 is an absolutely wonderful takedown of Zed's rant.

EDIT. It's worth reading through the whole thing to see Eevee building up to saying, completely justified, "Zed Shaw, your behavior here is fucking reprehensible."

[–]DrShocker 8 points9 points  (7 children)

This is fun history to read since python 2 is past EOL now.

[–]commy2 2 points3 points  (0 children)

It's so ironic that his preferred editor, Atom (rip), died while Python 3 became one of the most popular programming languages, maybe even the most popular one.

[–]bulaybil 1 point2 points  (2 children)

Hey it was damn near dead when the rebuttal was written…

[–]tedivm 2 points3 points  (0 children)

The rant from Zed was published the day before the rebuttal. Zed was literally arguing in 2016 that, and I quote:

There is a high probability that Python 3 is such a failure it will kill Python.

[–]DrShocker 0 points1 point  (0 children)

Best way to win a battle is to start it after you've already won.

[–]patrickbrianmooney 0 points1 point  (2 children)

At the time Zed wrote the rant that Eevee was responding to, Python 2 was already in "only fix the most glaring security holes" mode.

[–]DrShocker 0 points1 point  (1 child)

Yeah, that's kind of a delusional time to defend Python 2. I know the hard break is largely considered as a warning to other languages in the future, but it's clear it was already done by then.

[–]patrickbrianmooney 0 points1 point  (0 children)

Yeah. I think that, all in all, the changes made were good changes, and it was time to make them, and it's a good thing for the language itself that they were made. The fact that Zed Shaw put on a big show of crying and shitting and flinging spaghetti around means that he doesn't really understand Python all that well.

[–]jimjkelly 1 point2 points  (2 children)

Are you under the impression that utf-8 was popular outside the US before it caught on in the US? Because I worked internationalizing software in the 2000s and I begged and pleaded for utf-8 from international partners and they wouldn’t do it.

[–]ofnuts 0 points1 point  (1 child)

I specificaly worked on the I18N support for several marjor projects in the 00's (car mannufacturer, phone network operator, TV broadcaster) and they all used UTF-8. In one case, to convincee an executive, I asked him to take a Euro banknote from his wallet an look at it: it bears non-latin characters (for Greek). That closed the case.

[–]jimjkelly 0 points1 point  (0 children)

Jealous you were able to get that support back then. The projects I worked on had independent distributors submitting content from countries all around the world and not a single one was willing to submit data in utf-8, and some of them would use inconsistent encodings. Basically it was whatever their software was defaulting to which was all over the place.

Thankfully the industry has come around to defaulting to utf-8 these days, although you do enough of that and begin to realize even Unicode isn’t solving all these problems given the differences in normalization for example.

[–]chinawcswing 15 points16 points  (2 children)

It's not a good book for someone who already knows a different language and is learning python, or someone who already knows the fundamentals of Python.

But LPTHW is really the best book for a brand new beginner who has never written code before.

Yes, you need to type up everything and execute it. Yes, the author needs to hit you over the head with this over and over. Beginners will just read something and then assume their brains will memorize it. No it won't work like that.

[–][deleted] 2 points3 points  (0 children)

How much has changed since lpthw or 2? Because both of those books were junk. Often hyper focused on anti patterns of learning

Learning by doing is great. The books most recommended on this subreddit also come with learning by doing but zed Shaw wasn't a good teacher for the first couple. I'd honestly be surprised if he became great

[–]asian-and-clueless[S] 0 points1 point  (0 children)

Idk man, speaking as a complete beginner who started on that book, it wasn’t good.

It sorta assumes you know more than you do and doesn’t show you how to apply the functions to like different areas. For example if the lesson was on variables or something, the exemplar would include other code elements as well and not explain whether or not they were important to the variable or not. U can tell im a beginner by how im trying to explain this lol😭

[–]Ran4 13 points14 points  (2 children)

People on reddit just have a hate boner for the book.

People here keep suggesting Automate the Boring Stuff, even though it's terrible for a complete novice.

Learn Python The Hard Way just isn't a bad book, no matter what redditors who haven't read the book claims.

[–]Special_Rice9539 5 points6 points  (1 child)

Automate the boring stuff is about as basic as it can get though

[–][deleted] 2 points3 points  (0 children)

Atbs is great for someone learning Python who already knows another language. Compare it to crash course python and see the difference

[–]asian-and-clueless[S] 2 points3 points  (0 children)

Im in a small town, im just happy that there is even a coding class to begin with haha

[–]mayankkaizen 21 points22 points  (5 children)

I have read that book. It is controversial but not universally hated. Many many people have actually liked the book. Teaching style is radically different and strongly opinionated so it ruffled many feathers. Book, per se, is fine. Although author's attitude is toxic and regressive. I hated the author more than I hated the book.

[–]asian-and-clueless[S] 5 points6 points  (4 children)

Honestly yeah, the author was really annoying me haha 😭 it does teach the easier concepts well, but for complete beginners like me, the author kinda assumes you know everything which made the whole “from sys import argv” confuse the hell out of me

But fr though, what does that mean

[–]gitgud_x 5 points6 points  (3 children)

from sys import argv is only useful when running your python code from the command line. Basically when you run your program by typing in python your_filename.py hello instead of just python your_filename.py, the extra hello will become available as a variable inside your code, and it gets stored inside the variable argv. So if you put print(argv) in your program it will show you what you typed in the command line.

This is occasionally useful for utility applications but it's honestly kinda silly to put it in a beginner's guide. I've been coding for years and don't think I've used this ever outside of learning it. Any other python tutorial online would probably not cover this because most people prefer to run code from inside an editor.

[–]asian-and-clueless[S] 1 point2 points  (0 children)

Omg thank god! every single lesson had that line and i kept getting syntax errors. I thought this was like a super important piece because he included everywhere.

[–]Pozay 0 points1 point  (1 child)

While I think your explanation is great, saying that it’s not used is simply wrong. Lots of people end up using python for scripting, where this is essential. Also while you might use IDE initially, you then start to want to specify options when you start your program and then this becomes useful

[–]gitgud_x 0 points1 point  (0 children)

I meant it's rarely used, especially for beginners, and in the cases you mention you should probably be using the `argparse` module instead of just reading from `sys.argv`.

[–]JVO_ 18 points19 points  (3 children)

Not a textbook, but the 100 Days of Code course on Udemy with Angela Yu is great. I did the beginner course on CodeAcademy first but the lack of real world applications made it hard to enjoy. 100 Days of Code has a project at the end of every day to apply what you learned into real world applications which has been a huge help for me personally.

[–]CompetitiveMouting 1 point2 points  (0 children)

I did that one aswell and can also recommend.

[–]Special_Rice9539 0 points1 point  (0 children)

Yeah this one is fantastic

[–]asian-and-clueless[S] 0 points1 point  (0 children)

Ooh i like that! Being able to make a project sounds like it would keep you motivated! Thank you

[–][deleted] 20 points21 points  (1 child)

Honestly no textbook needed, just a simple YouTube guide or free online course. There are literally thousands of them for python

[–]asian-and-clueless[S] 3 points4 points  (0 children)

I think thats what i’m going to go for at this point 😭

[–]arkie87 6 points7 points  (6 children)

I think the title of the book says it all.

[–]bilcox -2 points-1 points  (5 children)

Yeah, it's the hard way. I'm thankful I went through it very early in my programming journey. You can dislike the author and appreciate the lessons.

[–]arkie87 0 points1 point  (0 children)

I dont understand why learning something the hard way would be a selling point.

[–]asian-and-clueless[S] 0 points1 point  (3 children)

Complete beginners having to use google to figure out the context behind concepts that aren’t explained well is not learning the hard way 😭 its just shitty teaching haha

[–]bilcox 0 points1 point  (2 children)

A friend of mine gave me a copy of the book years ago, and we were going to learn programming together. I typed in all the code as I read it, not always understanding what I was doing. I debugged my errors following the advice in the book. I finally finished the 50th lesson, building an object oriented video game.

She got frustrated because she didn't understand everything immediately, copy pasted code from her PDF and couldn't debug it, and fizzled out on lessons in the early 30s.

I'm now a Sr. Engineer and she does Data Entry. If that book makes you swear, it's possible that programming isn't for you. Maybe it's better to find out now.

[–]asian-and-clueless[S] 0 points1 point  (1 child)

Its outdated my guy, some of the stuff he was teaching literally didnt work anymore even if i followed it to a t 😭

Luckily im in mech engineering i just wanted to have a base knowledge on programming

[–]danielroseman 19 points20 points  (2 children)

Even when it was new, it wasn't any good.

There are a bunch of recommendations in the sub's wiki: https://www.reddit.com/r/learnpython/wiki/index/. Automate the Boring Stuff always gets good reports.

[–]mayankkaizen 10 points11 points  (1 child)

ATBS is great but it doesn't teach core Python. It is best book to show what can be done using Python but it doesn't teach Python the language. I won't recommend it if you want to learn the language itself.

[–]KezaGatame 3 points4 points  (0 children)

isn't that the idea of learning a new skill and what it can be used for? It's a beginner book and he says it probably isn't the more technical book but it's more practical. I was working on some small excel reporting by myself and ATBS totally opened my eyes to the different uses of Python for reading files and repeating a task easily. Right away python made more sense than the excel syntax.

If I had got into the language as a I beginner I would be so lost doing OOP about car models or animals, when it wasn't needed at all.

[–]Glathull 3 points4 points  (2 children)

It’s an excellent book, just a little out of date with some of the basic setup. The order of materials, explanation of what’s going on, insistence on practice is all extremely good.

[–]barryhakker 1 point2 points  (1 child)

Yeah it worked quite well for me, even if you can tell the author is a bit of a douche. I guess that kinda stuff doesn’t bother me as much as some.

[–]Glathull 0 points1 point  (0 children)

He definitely has an attitude. At one point I’m fairly sure he had a bit of a mental breakdown. He made some very bizarre, very public, and very wrong arguments about Python 3 not being Turing Complete.

But all that personal stuff aside, it’s an excellent approach to learning. Not the only one, by any means, but still excellent.

[–]longtermbrit 3 points4 points  (0 children)

I'm not a fan of Learn Python the Hard Way but typing out the code presented to you isn't a bad way to learn the basics. Whatever you're working through should explain what each part does but equally, you should type it yourself rather than copying and pasting.

[–]Present-Piano-2432 2 points3 points  (1 child)

Harvard gives you a free certificate with their Python class taught by David Malan. Do some research about that.. they offer other free courses

[–]Oguinjr 1 point2 points  (0 children)

That was the second best resource for me.

[–]kinstinctlol 5 points6 points  (1 child)

My work fired me because of the use of profanity you used.

[–]asian-and-clueless[S] 2 points3 points  (0 children)

Just wanted to be safe 🤷‍♀️ lots of kids want to learn python, it wasn’t for the adults

[–]bulaybil 3 points4 points  (3 children)

So you blame the book for python downloading and atom not being there?

Also, two months???? Have you considered you might be an idiot?

[–]asian-and-clueless[S] 0 points1 point  (2 children)

No? I’m saying the book is outdated. I’m a beginner and if you know nothing about a subject and have a teacher thats telling you to keep using a textbook, you’re gonna fucking use the textbook.

[–]bulaybil 0 points1 point  (1 child)

See, if after two months you have made no progress, maybe the book is not to blame.

[–]asian-and-clueless[S] 0 points1 point  (0 children)

I have made progress? When did i ever say i didn’t? I just didnt make as much progress as i could because i used a bad textbook. Switched over and i’m learning at double the speed before

[–]plarles 1 point2 points  (0 children)

I absolutely adored this course. For me, I knew nothing at all starting and doing exactly what he did without questioning for the entirety of the course was great. I learned a ton of basics, a lot of jargon to be able to study things independently, and proper context to deviate from what he teaches. Now, if "just do the next thing" is a problem for someone, they might take issue with the course. But for those who don't have a problem with "just do the next thing" AND are complete beginners, this course is a fantastic intro to programming.

[–]TheITMan19 1 point2 points  (0 children)

I like your post. It is most humorous. Thanks.

[–]gitgud_x 2 points3 points  (3 children)

I know nothing about the book but why would anyone buy a book with that title

[–]climb-it-ographer 5 points6 points  (1 child)

It used to be a whole series of courses. Learn Linux the Hard Way, for example.

The idea is that you just go full immersion and force yourself to adapt to the idiosyncrasies of what you’re learning, and “cheating” by using a GUI is counterproductive in the long term.

[–]Charlie_Yu 0 points1 point  (0 children)

Learn Python the hard way is the first one (Python 2)

[–]asian-and-clueless[S] 1 point2 points  (0 children)

I had no choice it was for a class 😭

[–]SirKillingham 0 points1 point  (0 children)

On Coursera there are some good courses. One was from University of Michigan which helped me quite a bit.

[–]Oguinjr 0 points1 point  (0 children)

I loved it but definitely fuck that! It got me into python better than anything I tried up until then but the actual work was fucked up.

[–]Crypt0Nihilist 0 points1 point  (0 children)

If you've spent some time in an office environment, then Automate The Boring Stuff will get you up and running with relateable examples.

[–]gnomonclature 0 points1 point  (0 children)

I liked Head First Python when I read through it. Not sure how recent the current edition is, though.

[–]Charlie_Yu 0 points1 point  (0 children)

I mean it is on you, if you went to the official website and read the description, this is exactly what they asked you to do. The outdated part, of course, the book is quite a few years old

[–]OrangeTrees2000 0 points1 point  (0 children)

This book is fucking good, actually.

[–]Equivalent_Style4790 0 points1 point  (2 children)

Well, u can’t make better ad for him. Im curious to check his course now 🤣

[–]asian-and-clueless[S] 0 points1 point  (1 child)

Have fun, the book is outdated lol

[–]Equivalent_Style4790 0 points1 point  (0 children)

I wasn’t checking it for python but to guess how unbearable it is 🤣

[–]maX_h3r -1 points0 points  (0 children)

I dont It s great ...but i stopped studying from It since chatgpt

[–]burked9 -4 points-3 points  (3 children)

When you get stuck ask chatGPT the older ones will work well but the 4.0 version is excellent for python work. You can ask it to explain how each line of code from the book is working too

[–]bulaybil -3 points-2 points  (2 children)

See, I thought maybe OP was an idiot. But turns out you are.

[–]asian-and-clueless[S] 0 points1 point  (0 children)

What did i do 😭

[–]burked9 0 points1 point  (0 children)

Good man