Ask HN: Is python still worth spending time learning and teaching?
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#?
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'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.
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.
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
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.
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?