
Ask HN: If you're “ridiculously in love with Python”, do you even know it well? - cakoose
I noticed the following requirement on a job posting:<p>&quot;You&#x27;re ridiculously in love with Python.&quot;<p>I realize they&#x27;re probably using exaggerated language to make the job posting stand out, but my initial reaction was that anyone &quot;ridiculously in love&quot; with Python (or any language) probably doesn&#x27;t know it well.  And I&#x27;d be a little worried about working with the person who wrote that requirement.<p>More broadly, who is that phrase supposed to appeal to?  Are they intentionally trying to get people who are still in the honeymoon phase with Python?  Maybe those people are generally less jaded and would fit in better?<p>Or maybe they&#x27;re trying to select for people who don&#x27;t complain about their tools, people who &quot;just get the job done&quot;?  This seems to risk also selecting people who aren&#x27;t discerning, but maybe the tradeoff is worth it?<p>Did anyone else react the same way I did?
======
nickysielicki
No, python is the programming language that everyone thinks Java is.

Is Java slow? Nope. Does everyone think it is? Yes. Is python? Yes.

Does Java have the best libraries? Hell no. Does everyone think it does? Yep.
Is python really the language with the best libraries? Yep.

Python is easy to write, and to write well. Python makes it easy to crank
something out in half an hour that isn't messy.

I am ridiciulously in love with python, although lately I have been placing
more value on runtime speed than development speed, so I find myself using it
less than in years prior. It is still my favorite programming language,
however.

~~~
europa
What language/languages you prefer for runtime speed?

~~~
nickysielicki
Depends what you're doing obviously but I have been writing Go, Java, and Rust
lately.

I cannot wait to see what becomes of Julia. I feel as if it has all the
prototypical traits of python, though far more speed.

~~~
nolite
Re: Julia

What about library integration?

~~~
shele
You can in general write julia libraries in julia, wheres you often need to
resort to C if writing Python libraries, e.g. [https://github.com/python-
pillow/Pillow](https://github.com/python-pillow/Pillow) . Therefore the native
ecosystem is growing rather fast. On the other hand, Julia has great c and
python interaction so making existing work accessible is not so difficult
either.

------
famousactress
Okay, I'll go against the grain here and sign up for scrutiny:

I probably regularly profess my love for python, and I'm prone to hyperbole
(plus I love the word 'ridiculous') so I could totally see myself making that
statement.

So now, do I know it well? I dunno, not _that_ well I guess. I've been doing
it full time for four or five years now (after a decade-plus of other
languages), I imagine I'd rank pretty competent in an average shop and "lots
to learn" over at say, Dropbox. I have definitely worked with it enough to be
exposed to loads of it's shortcomings and flaws though. I still love it. Just
like with people, love is a decision I re-make on a continual basis. I sign up
for the less ideal bits because the good bits make me really delighted and
"just fit".

So anyways, yeah.. I know it's popular to be the "I don't care, anything
works, best tool for the job" person, but I'd prefer not to write any more
Java code anytime soon if I can avoid it. I guess I'm not that kind of
awesome-flexible.

Now as for employers, even I might take this as a negative signal. I love
python, but hiring in one's own image on that vector seems a little strange...
unless there's a really good reason a passion for python is important (like, I
dunno.. Maybe the position is for the python team at NewRelic? Anywhere the
company's future is pretty latched onto the language specifically).

~~~
LnxPrgr3
For personal projects, my default is C++. It's a deeply flawed language, but I
love it anyway. Besides, I've never met a perfect language, but I've met
plenty of languages that let me get work done, some more pleasantly than
others.

(Why would I call C++ pleasant? It's probably thanks to more than a decade of
working with it warping my mind until it seems to make sense.)

------
Iftheshoefits
I find myself reacting more and more negatively to "language-specific-
experience-required" statements in a job posting for a full-time employee.
It's fine for a contractor or consultant needed to solve a specific problem or
set of them on a time-limited basis. For a full-time employee however such
language is, in my opinion, an indicator that at least one of the following
apply:

a) the company is looking for junior level talent with specific language
experience so they don't have to train them

b) the company is looking for senior level talent but thinks it can't afford
them using _any_ time to pick up the syntax or quirks of the language

c) the company is looking for senior level talent but doesn't think it's even
possible a competent senior developer with mostly X experience and no Y
experience can pick up Y in an "acceptable" amount of time

d) the company is so invested in their "stack" that (even considering)
deviation from it will introduce a net negative (to the process, culture,
whatever)

These all have a common theme: the labor that provides the bulk of the value
they are able to trade and profit off of is seen as a commodity, as fungible
as the brand of paper used in the printers. The company wants a developer who
works "out-of-the-box" without any investment and can be discarded/upgraded at
any time for any reason. They probably also want the human line-item to
display a near-maniacal enthusiasm for the work and loyalty in return.

It's not that they want people who aren't discerning: they probably don't
care, as long as the people they hire can fake it.

Also, being "ridiculously in love" with a language doesn't mean one doesn't
know it well. For me, it's the opposite: I'm "ridiculously in love" with C++
because I know it as well as I do (which isn't to say I'm an expert). That
doesn't mean I'm going to turn down non-C++ jobs or view them as being less
interesting, etc.

------
falcolas
Over my career, I've gone from loving Python, to having been bitten enough by
it to evaluate and use other languages.

Most of the time, it's "fast enough" for the job. But when it isn't, it really
isn't.

Most of the time the standard libraries suffice for a job. But when they
don't, you're suddenly in pip/easy_install hell. [1]

Most of the time you can get by with Python 3. But when you need to broadly
distribute code with a dependency on a compiled binary, may the heavens help
you. [2]

Most of the time, the syntax and "magic" won't bite you. But when it does, it
does so _hard_. [3]

Most of the time, pylint/pychecker/etc. will find the same errors a compiler
would...

You get the picture.

I still program with Python frequently, but I've increased the size of my
programming language toolbox to compensate for its weaknesses.

[1] Or was that virtualenv, or setup.py, or apt/yum/nix, or...

[2] Broadly distribute means putting it on boxes where a C compiler is not
available. This means you typically get to pre-compile those libraries and
create either wheels or native packages. Not impossible, but for a "batteries
included" high level language it's a lot of specialized low level grunt work.

[3] The infamous `def a(b=[]):` "feature" for one, anything involving
metaclasses for another.

~~~
mpthrapp
As someone who is currently "In Love With Python", I'm curious what other
languages you recommend? I'm always looking to learn new stuff.

~~~
falcolas
Depends on what you want to do.

Go is a fairly strong candidate for a straight up replacement for Python, but
there will be a lot of newer things to learn with regards to using a compiled
language without a repl, and the lack of traditional polymorphism.

Another good one is any kind of functional language, be it Haskell, Clojure,
or OCaml. Learning how to think functionally will help your Python code quite
a bit.

At some point in the future, Rust would be a good one to put on your list, but
I don't believe that it is in a great place right now. It's getting better,
but I don't feel that it's ready yet for production development. I think
Mozilla can get away with it because they own the minds who are developing the
language, and as such can hit the moving target which Rust currently is.

~~~
mpthrapp
I'm not quite sure what I want to do, other than I don't want to do front-end
development.

The other language I have any experience in is Delphi, which is a compiled
language.

I have heard a lot of good things about Go, maybe I'll give that a shot.

I'd love to learn a functional language. I've looked at Haskell, and ouch. As
someone with no formalized CS training, a lot of the type theory stuff goes
right over my head. Is there a less crazy functional language you would
recommend?

Yeah, I've looked a little at Rust, and it looks like it'll be interesting in
a couple years.

~~~
falcolas
> Is there a less crazy functional language you would recommend?

Clojure. It's a well supported and documented dialect of Lisp, which is a
fundamentally functional language (though not purely functional), implemented
on a platform that just about everyone has access to: the JVM.

The more you can minimize your use of the dot operator (which implicitly means
minimizing your dependence on Java libraries), the more you'll learn about
functional programming.

~~~
mpthrapp
Alright, thanks. I'll give Clojure a shot at some point. I've played around
with lisp a tiny bit in the context of reading SCIP, but that's about it.

------
sedeki
It's just common job ad speak. You shouldn't take it too seriously...

~~~
codingdave
You shouldn't take it too lightly either. The hiring process is a two-way
selection. And the words they use to describe the position say something about
their culture. If part of the job description raises red flags with you, it
might be an initial sign there there is not a cultural fit.

------
csixty4
You're on the right track toward the end. It means they built their MVP in
Python, and they've built more & more features on it in Python. Now they're
looking for someone who will happily work on their existing codebase. They
want it to be the best Python it can be. They want someone who knows the
language inside & out; someone who goes to Python conventions and follows all
the big Pythonistas on Twitter to get all the latest tips & tricks. And, they
don't want daily requests to rewrite the whole thing in some developer's
favorite language.

It wasn't that long ago people were clamoring for all the PHP in the world to
be rewritten in Python. Ten years ago, I was part of one of thousands of
efforts across the globe to rewrite a legacy codebase in hot new J2EE
awesomeness. Around the turn of the century, it was a push to replace ancient
COBOL with hip, modern C++. There's always a hot new language that makes the
old hotness look ridiculous in comparison. This industry is like the fashion
industry in more ways than we're willing to admit. But it's totally possible
to run a successful business on a language with warts. Yes, even PHP.

If you ask them, they'll probably tell you they really do want someone
discerning, someone passionate about programming languages. But right now
they've prioritized their business needs over a rewrite for the sake of a
rewrite.

------
jokoon
You don't really need to know a lot of python to know it well. For example,
you might need to know a lot of C++ to know C++ well.

Python is great because it does a lot, while being easy to understand, and it
only does what matters the most.

> More broadly, who is that phrase supposed to appeal to?

I guess it tries to appeal to programmers who cares about using a technology
they're comfortable with, but also that encourages good enough programming
practices, design choices and programming philosophy.

Python is really a great choice for many things, and apart for the particular
indenting style, I really don't think there are many users who dislikes
python. It's also very unix friendly, has the good parts of C, has native
tuples and hashmap, etc. I don't see many bad things about python.

Of course, python has never been designed for speed, but every programmer
should know that the language will not be the source of sluggishness, the code
and software design will be. I don't think there are many projects out there
who will need high performance vectored data processing, and if there is,
either use cython or optimize the parts you need, or even use OpenCL. Making a
large video game projects is another subject, as most of them often use C++
anyways.

~~~
nickysielicki
while ( i --> 0 ){ printf ("%d\n", i); }

------
porter
Sounds like they are targeting a jr programmer who learned java/c++ in school
but absolutely loves python in comparison, which is easy to love coming from
java or c++. Nothing wrong with that, just sounds like you are not their
target for this job.

------
ctdean
Job posts are marketing ads, so don't take it seriously. All this posting is
hoping to do is to attract people who like Python and get them to apply.

This won't get 100% of the applicants you want but it will get some of then,
and that's the whole point.

------
spacemanmatt
"ridiculously in love" with a programming language?

Ok, I'll describe my condition when I experienced that. I was coding in C
under MS-DOS and PIC assembler at the time. C++ was starting to become a
thing, and I was just starting to sniff at Linux. I needed a change of venue
in several major ways.

About this time, I started picking up a little python and perl. Interpretive
languages had just opened up to me, and I was IN LOVE. The things I could do
without writing a framework to support it impressed me a lot.

I was so very naive that new-to-me language features were a _huge_ deal.

Hope that helps.

------
lojack
I'm ridiculously in love with python. For what I do, there are lots of high
quality, actively maintained libraries. I understand its shortcomings, both as
a language and as a community. I also understand that given a slightly
different path, I would be equally in love with other language choices.

Does this mean I probably don't know the language well? Maybe. Honestly, none
of this really matters to me as long as I can quickly understand code other
people wrote, and I can efficiently write maintainable code.

------
jacksayswatt
I don't subscribe to the practice of being in love with a language,being a
ninja or a wizard– I find these are callings for those who will work for less
than they are worth. You are speaking to their hubris and not their confidence
of skill set.

------
damon_c
It's a good point. With many domains... the more deeply you know something,
the more you know about the grimy details, and the likelihood of unfettered
love for that thing is reduced.

~~~
vkjv
I'd argue the opposite. I'd say it's impossible to love something if you don't
know the ugly details. It's about being enamored with a language despite it's
shortcomings. You know, just like loving people.

------
oliwarner
I don't look at the statement and think of all the loopholes, no.

If they're asking for this, it's clearly because they're committed to Python
and they want a developer equally fanatical about Python. I doubt this is the
only condition for getting the job, experience will account for something.

In answer to "who this will appeal to", many people love Python, know Python
and would like to use Python more. Sticking this in your advert clearly marks
this as a company who you will align well with.

------
bsdpython
Translation: they want a Python expert who can come in on day 1 and fix all of
their buggy code and churn out massive amounts of Python code. Since you love
Python so much you won't care if the product is boring, you won't care if you
are being underpaid, you won't ask to work on other development domains and
you certainly won't ask for a promotion.

------
bitwize
Recruiter: I get the feeling that you're not really passionate about these
languages and technologies.

Me: A language is a language. I'm passionate about working in a sane
environment with good practices, delivering software that doesn't suck.

------
svisser
Sorry, but you seem unable to see why people like Python (or a different
language X). Until you see that, you won't understand why job postings are
written like that.

This is not to say Python (or X) is a perfect language or that you have to
agree with those that like it - it's just not your language.

~~~
afandian
I don't agree. I've been ridiculously in love with a few languages over the
years, but it's a passing phase. The more you get to know something the more
design compromises etc you see.

No language is perfect, but Clojure is the best designed I think I've come
across. I really like it, more than any other (including a few years of Python
which I 'liked' at the time). It has strengths and weaknesses though, and
that's expected of anything.

"Ridiculously in love with" is recruitment fluff, but I think does have the
side-effect of appealing to that temporary experience, or to people prone to
hyperbole.

See also Dunning-Kruger.

~~~
svisser
Ah, but that's fine regarding the recruitment fluff.

The question above carries the assumption that one can't be "ridiculously in
love" with a programming language because "if only they knew better" they'd
realise the flaws of the language (whether that's specifically Python or a
different language).

But that's inherent to any programming language - it'll be good for some
things and bad for others - using the phrase "ridiculously in love" just means
they're looking for someone who likes working in that language.

~~~
afandian
I suppose it must be cultural. The term 'in love' and intensifier
'ridiculously' just don't mean 'like'. Otherwise 'like' would do.

