

Ask HN: Is python still worth spending time learning and teaching? - aerovistae

Python was my first language, and I am a major, major fan of it. I love it. I even taught a class on it last year.<p>But I&#x27;m starting to question why I was teaching it, aside from it being a great first language to learn with.<p>Compared to PHP, Rails, and Java, the web jobs for Python are somewhat thin. You have to know Django, and even then there&#x27;s far fewer jobs available than for the other stacks. Nor have I had much luck seeing jobs for python outside of web development.<p>I work as a JS engineer professionally, and jobs for that are abundant. I&#x27;m considering teaching JS instead because if someone&#x27;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.<p>I&#x27;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#?
======
nostrademons
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.

~~~
pjungwir
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.

------
atmosx
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.

------
davismwfl
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.

------
rwhitman
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](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

------
percept
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.

~~~
hacym
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.

~~~
percept
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).

------
dev-ious
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.

------
brudgers
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?

------
ryannevius
"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.

