Ask HN: Is python still worth spending time learning and teaching?
8 comments
Python is extensively used in DevOps/ system-administration ... usually its the go to language but rarely mentioned because you're supposed the know it by default to perform those jobs.
"Rails" is not a programming language. You just can't compare it to PHP, Java, or Python. "Ruby" is a programming language. Rails is a web framework, in the same way Django is a web framework.
Python is used very extensively in scientific computing, it's used a bunch in data science, it's often used for build or shell scripts by sysadmins or SREs, and it's used extensively by entrepreneurs for prototyping software systems.
Web development is an interesting and very visible profession because the people who do it talk a lot about it on the web (naturally enough), and it's true that JS and Rails are somewhat more popular for it. But in terms of the breadth of what you can do with Python, it's a lot more.
Web development is an interesting and very visible profession because the people who do it talk a lot about it on the web (naturally enough), and it's true that JS and Rails are somewhat more popular for it. But in terms of the breadth of what you can do with Python, it's a lot more.
I agree re data science. If you're doing statistics or machine learning (one huge industry there is finance), Python is unrivaled. I do mostly Rails, and I'm very happy there, but I've thought about learning more Django just so it's easier to incorporate Python ML code, and also because a lot of the companies with interesting ML work are using Python for everything else too.
Who are your students?
What is their motivation in taking the course?
What are their short term goals?
What are their long term goals?
Why do you teach the course?
What is their motivation in taking the course?
What are their short term goals?
What are their long term goals?
Why do you teach the course?
Python, by all means, is a MODERN OO programming language.
I'd rather teach Ruby or Python to beginners than JS. I don't like comparing languages and frameworks but we all know that JS was designed and shipped really fast and this proved awful in many ways. Don't get me wrong, it's a half-miracle designing a language that fast, but still can not be directly compared to Ruby or Python.
How are you going to explain the difference between a class and a function using JS to a beginner which should wrap his mind around these new concepts?
As for the getting a job part, I reckon that JS is ubiquitous, but it's not that hard. You could add some JS on top of Python, once some very basic things about programming in general are clear.
I'd rather teach Ruby or Python to beginners than JS. I don't like comparing languages and frameworks but we all know that JS was designed and shipped really fast and this proved awful in many ways. Don't get me wrong, it's a half-miracle designing a language that fast, but still can not be directly compared to Ruby or Python.
How are you going to explain the difference between a class and a function using JS to a beginner which should wrap his mind around these new concepts?
As for the getting a job part, I reckon that JS is ubiquitous, but it's not that hard. You could add some JS on top of Python, once some very basic things about programming in general are clear.
Solely addressing the jobs question, there are more of those for Rails than Django overall, but based on general listings, the market in my city, and announcements at a (well-attended) local users group, if one had Django on his/her resume, one would be courted by a number of willing suitors.
Django/Python also seems to be disproportionately represented (relative to the general market) in HN job listings, so there is plenty of interest and opportunity here, too.
Django/Python also seems to be disproportionately represented (relative to the general market) in HN job listings, so there is plenty of interest and opportunity here, too.
It's not all Django, though. There are many web frameworks -- Flask and Pyramid, for example -- so I would count those jobs , too. Many Python jobs are in the Bay area, so you might not have many where you are from.
Definitely, and I've noticed that the Python community was much more receptive to the idea of using a micro-framework for APIs, while RubyLand has mostly been content to stay on the Rails (versus Sinatra, most notably).
Python is as relevant as any of the other languages you mentioned. It is actually superior IMO for some tasks so it is a good tool to have in your tool bag. I personally, wouldn't write an entire system in it, but many very successful companies have, so I think this is more a personal preference than a language capability issue.
As for teaching it. Frankly I think the entire college education around computer science at most schools is lacking. I see so often that they start people in the higher level languages that abstract students from the underpinnings of what they are doing. I seriously think students should still have to start with a low level language and go through the learning of building solid data structures, algorithms, etc. Of course, not all schools are bad about this, but I see most colleges in the US starting with Java or .NET and not really focusing on teaching fundamentals or how choices affect how the software runs on hardware. Not saying everyone has to be an expert embedded programmer, but knowing how the hardware processes what they are asking it to do would be really helpful. And damn it, they should be able to write basic data structures without using a 3rd party (or standard) library. Not because they will have to do it often, but it teaches them when to use what and why.
I would agree with you that students don't have as many employment options in Python as they will .NET, Javascript, PHP etc, but then again, hopefully they are learning more than just one language and having Python be one of those would still be a benefit IMO.
As for teaching it. Frankly I think the entire college education around computer science at most schools is lacking. I see so often that they start people in the higher level languages that abstract students from the underpinnings of what they are doing. I seriously think students should still have to start with a low level language and go through the learning of building solid data structures, algorithms, etc. Of course, not all schools are bad about this, but I see most colleges in the US starting with Java or .NET and not really focusing on teaching fundamentals or how choices affect how the software runs on hardware. Not saying everyone has to be an expert embedded programmer, but knowing how the hardware processes what they are asking it to do would be really helpful. And damn it, they should be able to write basic data structures without using a 3rd party (or standard) library. Not because they will have to do it often, but it teaches them when to use what and why.
I would agree with you that students don't have as many employment options in Python as they will .NET, Javascript, PHP etc, but then again, hopefully they are learning more than just one language and having Python be one of those would still be a benefit IMO.
Python seems to hold steady, it's neither the most popular language in the world or the least popular. It just is.
Actually take a look in the "Who's Hiring" thread running right now: https://news.ycombinator.com/item?id=9303396
I periodically glance through this as a way to gauge what skills I should be sharpening up on for the next few years.. Turns out a quick word search for "Javascript" had 67 results, "Ruby" had 36, and "Python" had 81 results. Looks on the surface that in the HN community at least Python is really surging in popularity right now
Actually take a look in the "Who's Hiring" thread running right now: https://news.ycombinator.com/item?id=9303396
I periodically glance through this as a way to gauge what skills I should be sharpening up on for the next few years.. Turns out a quick word search for "Javascript" had 67 results, "Ruby" had 36, and "Python" had 81 results. Looks on the surface that in the HN community at least Python is really surging in popularity right now
But I'm starting to question why I was teaching it, aside from it being a great first language to learn with.
Compared to PHP, Rails, and Java, the web jobs for Python are somewhat thin. You have to know Django, and even then there's far fewer jobs available than for the other stacks. Nor have I had much luck seeing jobs for python outside of web development.
I work as a JS engineer professionally, and jobs for that are abundant. I'm considering teaching JS instead because if someone's going to only have time to learn one thing (as is the case for many working individuals), it may as well be something they can keep working at and find work with, is my line of thinking.
I'm looking for other opinions. Is python growing or declining? Are there many professional opportunities for it? Would you recommend beginners bother learning it, as opposed to a more employable language like C++, Java, JavaScript, PHP, or C#?