Why Is There Animosity For Python Books/Courses?

Why is there animosity towards the Python books/courses (or am I only seeing a very loud/visible minority)? I’m sure there’s something I missed somewhere that explains why, but there’s so much noise to wade through.

Disclaimer: I really appreciate Zed’s teaching style. After stumbling through various python resources, I walked through LP3THW and part of the way through LMP3THW earlier this year. I fell into a rabbit hole with bash scripting after one of your explanations of popd/pushd opened a door that I haven’t come out of yet.

That’s easy, because I wrote this:

https://learnpythonthehardway.org/book/nopython3.html

Before I wrote that, they said my book was the greatest thing ever and “brilliantly written”. After I wrote that, they said I was unqualified to teach Python because I didn’t support Python 3.

I eventually ended up being right. Python 3 hasn’t added any new advantages over Python 2, and hasn’t kept up with any of the other mainstream languages. Hell, even C–a language older than Unix–has received better features than Python 3 has. Even C++ and Java have had big features added and a new focus on developer productivity. JavaScript has easily blown past Python 3 in terms of capability, performance, and language ease of use. Python 3 added (checks notes) the ability to assign to a variable in a loop. LOL.

The sad fact is, Python is an authoritarian project with a literal dictator for life. You can’t be intellectually honest and care about the average user when your entire development model depends on maintaining authority by squashing criticism as that restricts user feedback and prevents growth. When people see the reaction to criticism is retaliation then they just move on to another project that has things they need right now.

For example, name some things every beginner is enthusiastic to build. Games? Desktop applications? Websites? Now, go look at Python vs. JavaScript:

That’s just grabbing a few examples off the top of my head. All of those are backed by massive FAANG supporters, and they are all used to make real applications across all platforms that make billions and billions of dollars, not to mention they’re all just fun to work with an a daily basis.

You can possibly find analogs to the above in Python, but they’re always clunky antiquated crap that only has popularity because the authors are backed by the authoritarians running Python, not because of any technical excellence.

Long story short, I criticized Python 3, and now I sort of don’t care about Python 3. JavaScript is way more fun and productive than Python 3 will ever be for everything Python 3 does, and in the future I see people who want a modern Python using:

2 Likes

Interesting @zedshaw and also a little worrying. As you know, I’ve been studying Py3 and MorePy as an entry into programming as a serious hobbyist, but also creeping daily usage in my work.

In the goal of understanding some of the basics or programming and computing history in general, it has severed it purpose and I’ve really enjoyed the courses and little community here.

But I’d like to invest serious time into a language with longer term practical usage. This seems to be Java or C# as backend languages and JavaScript as a more dynamic front end language/tool in my professional domain.

So is it your view that the future of Python (and it’s current saving grace) is the volume of ‘scientific’ libraries and the ‘conda’ eco-system? Or is this being replaced by R anyway?

Thanks for the response, Zed. That was a gut check for sure.

I initially chose Python over Javascript because it looked more user-friendly and seemed to be used in interesting projects (completely ignoring JS). Nothing too in-depth, but I did dive into jupyter notebooks and exploring the Anaconda universe for some edx analytics courses. Not that I’ll stop learning/exploring Python, but it has lost a priority level.

I even tried to avoid vanilla JS again by looking into React. Everything keeps pointing back to JS. There’s no way around it: Learning JS is a necessity at this point. Specifically DOM / JSON / Fetch API / ES6.

If this is your first programming language it totally doesn’t matter. I don’t believe in language dominance or one language ruling all. I’m much more a “use what works” kind of person and that’s served me well over the years. Start with Python, once you get through switch to any other language you’re interested in, especially if it has a platform you love. The worst thing you can do is get sucked into propaganda and tribalism. It always happens that the leaders of a language end up being the first ones to jump ship to something better when it comes out, leaving the True Believers holding the pile of garbage the leaders made.

But, JS is incredibly productive and compelling now, and I was a massive javascript hater. I gave presentations all over the world about how terrible Node.js and JS were. What happened is the JS community grew up and realized that they need to stop catering to the FAANGs and start making JS easier to use for the regular developer. That’s why ES6 is such a significant improvement, and why you’re seeing bigger improvements coming. That’s also why TypeScript is so good. They’re focus is now entirely on making it easier for people rather than propping up the products of 4 companies.

Anyway, hit the Python book for now. It’ll be good to learn both.

3 Likes

I’ll answer your question with a few of my own @gpkelsey:

  1. Go find out how you get to vote on Python’s future.
  2. Go look at the roadmaps for future features. Do you see anything related to data science?
  3. Go look at the standard library? See all that cruft? Would you say any of that is modern requirements or things that actually need to be included in Python?

That’ll tell you where Python is going. It’s my belief that the era of authoritarian open source is over. If a project isn’t either setup to make money by a corporation that needs to listen to users to servive; or a fully democratic project with no Dictator For Life; then it’s doomed.

1 Like

The language dominance/one ring to rule them all is a sentiment I’m not interested in getting involved with. If I’m even in the arena for those battles, I’d prefer to be in the audience.

I do think that I’m where I want to be with Python for now. From Python, I spent a few months banging setting up VScode, initiating and setting up remote servers and syncing settings, figuring out SSH config files, playing around with defining aliases and functions, understanding what you can/can’t do in bash (and recovering from worst case scenarios), understanding dotfiles, and generally figuring out what works best for me. I finally feel like I’m scripting in a familiar environment, and if something stops working, I either know how to get it working or have a solid idea how to figure it out. I think that I needed to …play(?) in a linux environment a bit before I got more serious with advancing my development education.

In a practical sense, I need to better understand JS for some freelance tasks that I’m a bit behind on. Because I’m dragging my feet not knowing where to start, it’s back to the basics: The book that got me where I wanted to be with Python. I was hoping you had something similar for JS - and you do! That’s where I am now.

Yes, the JS book in it’s current state will teach you modern ES6 version of JS, with a little bitt of the old style JS that you still need here and there. For example, Node versions until recently did imports differently, and it’s a mess, so I teach you both.

Bug me if you run into anything with the JS book so I can update it.

This was an interesting read.
I started programming a year ago with Python 3. I have never had any problems with strings or cryptic error messages. But I got pretty frustrated when I suddenly had to deal with unicode strings in a Python 2 fontforge script.

Anyway, thanks for expressing your opinion about ‘big talk’ in programming communities so clearly, here and in the other thread about functional programming/Haskell.

Maybe it’s time for me to move on, too. I was planning to do LMPTHW, but maybe I’ll skip that for now and take a look at Javascript.

Everywhere I look for metrics on what the most popular languages are I find that python is popular and only getting stronger. Maybe that doesn’t mean much? The reason I care is I too have started to invest a lot of time into trying to get a better grasp on python. I don’t want to be wasting my time with it if there is somewhere else that would be a better use of my time.

And

https://www.tiobe.com/tiobe-index

Full disclosure: I’m a massive over thinker and perhaps am reading way into this, and in the end it probably doesn’t matter that much?

TL;DR: You’re over-thinking it. Stick with Python :slight_smile:

Longer version:
Python is still incredibly useful - the purpose of my post wasn’t to question that. This shouldn’t affect your current lesson plans. Python isn’t going anywhere anytime soon. Concepts you learn with Python are similar across all languages. If you switch it up now, you’ll have to trudge through the fundamentals and syntax of another language just to get to where you currently are with your Python instruction.

I’m switching to JS because of what I’m currently doing - not because one language is better than another.

I posted my question because Zed deals with a LOT of flack in certain areas of the internet tubes for his Python instruction, and I couldn’t understand why.

Yeah I’m in a similar boat and as I’ve not studied Computer Science, getting a grasp on simplistic syntax whilst learning the basics with Python and programming in general has helped. I can focus on what concepts I’m learning rather than they syntax. (I first tried learning Java and C# and found the declaring of types totally confusing (like ‘House house = House()’ fried my brain but it’s much more simple now).

I was planning to move onto another language (like JS as well as Java that I really need to know). But I’m going to study LMPTHW again now as I think the algorithm aspect is missing in my understanding and this application is also very helpful in other languages.

Interestingly, my currently client is looking to standardise all Ops using Python ecosystem.

I think I’ve been stuck on a Python topic for so long that I’ve forgotten that I’ve been stuck on it.

…and I think that I’ve discovered the answer as I was typing up a new thread and posted it.

Amazing! How did you manage it to be so good at it* just one year into programming? Every tip is appreciated.

* your help here in that forum is just amazing, I thought you have years of experience as a programmer :grimacing:

Ha! Believe me, whenever I open LCTHW or my Haskell books I feel like a total beginner! :sweat_smile:

I’m glad I can help a little here. It’s fun!

And that’s probably the only tip I have: Programming is just so much fun for me. I went through LPTHW and then dived into a few ridiculously ambitious projects. They mostly ended in disaster, but I learned a lot.

Ah, and I’m lucky to have a very keen eye for details. I think that helps a lot.

I guess it’s also important to have a good balance between mind work and… other things. I’m really blessed, I can make a living as a musician, which is very much a physical, ‘flowing’ thing. Thinking is the perfect hobby for me! :slight_smile:

2 Likes

Thank you @florian for your insights. Thazs all really cool :+1: love it!

What @heymajor says is spot on, and I think the flaw in your thinking @zberwaldt is highlighted by your use of the word “investment”.

Learning to code isn’t like investing in a stock, or building a house, or buying a car. There isn’t a direct tangible return on your investment, and once your done you aren’t going to be able to continue making that money from your “investment” forever. In fact, the only people I see burn out and get flushed out of the industry are the people who think they just need to invest in barely learning one programming language to have a career for 30 years.

The reason this doesn’t work is the programming world is a fashion industry that is easily influenced by terrible ideas. All it takes is for one narcissist to declare his language defeats some enemy created by other languages and tons of programmers come flocking to it like flies to turds. Take Node.js as an example: Events over threads. The only reason it was popular was entirely because they marketed it as defeating the enemy that is threads…which is just asinine, but it worked. Now it’s one of the most popular platforms in the world.

So, you’ll invest in Python and then one day, all the Python programmers leave for whatever reason, and you’re left with absolutely nothing for your investment. In a way that makes it a lot more like a stock investment, but a very risky stock investment.

The other flaw in the “investment” mindset is that if you pick wrong you somehow lose everything. You pick some obscure language, invest hours and hours learning it, and then you can’t find a job so it was all for nothing! You got nothing! But, that’s also not true at all, for a specific reason:

Your brain is not static or fixed, and learning a programming language doesn’t mean you cannot learn any other languages. In fact, the inverse is true: The more programming languages you learn the better you get at both programming and learning programming concepts. Every programming language you learn is an investment in being a better programmer, and it makes it easier to learn when you get your first job. Why is that important?

Every place I’ve learned does not write Python. They write a special brand of weird as hell Python only they understand. By getting better at learning programming languages you train yourself to be able to pick up the strange weird way any company uses their programming language, and that makes you more productive and competitive. As a side benefit, when all the Python programmers decide to walk away from it, and companies are hiring, you can sit down for a week and pick up the new hotness and continue with your career.

The best attitude to have with regard to learning to code is one of a vacation. You don’t figure out where you want to visit on vacation by how much return on your investment you’ll get. You pick a place to go that you find interesting or that you’ve dreamed of visiting. Once you’re done with your vacation you don’t lose the experience, you benefit from the experience and have memories you keep for a while. Even if the vacation is terrible you don’t lose anything but the time for that trip, and honestly, you still learn something. Finally, once you’ve done a ton of traveling it’s easier for you to do more traveling, or even move and improve your life in another country.

So, don’t think of “investing” your time in Python as the same as investing in learning to code. If you want to really learn the fundamentals of programming then learning 3-4 programming languages is the key, and learning more than one programming language makes you more viable and a hiring prospect than less viable. In fact, I believe that spending time learning basic coding in 4 programming languages will make you a stronger programmer quicker than if you spend the same time learning the platforms of one language.

So, stick with Python, but understand it’s not going to last forever, and you’ll be better off looking at it as a temporary vacation than an investment.

4 Likes

So essentially, I need to switch mindsets. I shouldn’t be focused on trying to learning Python itself. Because in the end Python is just another pencil. Every pencil (programming language in this case) will have it’s own quirks and feel. But they all can be leveraged to build the same things, in the end. Focus more on how to build things.

I know personally that what you say about burning out is true, because I have “burned out” quite a few times since I’ve started coding.

I will try to shift my mindset in this area. Thank you for the reply.

1 Like