In a recent talk I said something that upset a lot of
people: that you could get smarter programmers to work on
a Python project than you could to work on a Java project.
I didn't mean by this that Java programmers are dumb. I
meant that Python programmers are smart. It's a lot of
work to learn a new programming language. And people don't
learn Python because it will get them a job; they learn it
because they genuinely like to program and aren't satisfied with the languages they
Which makes them exactly the kind of programmers
companies should want to hire. Hence what, for lack of a better
name, I'll call the Python paradox: if a company chooses to write
its software in a comparatively esoteric language, they'll be able
to hire better programmers, because they'll attract only those
who cared enough to learn it. And for
programmers the paradox is even more pronounced: the language
to learn, if you want to get a good job, is a language that
people don't learn merely to get a job.
Only a few companies have been smart enough to realize this
so far. But there is a kind of selection going on here too: they're
exactly the companies programmers would
most like to work for. Google, for example. When they
advertise Java programming jobs, they also want Python experience.
A friend of mine who knows nearly all the widely used languages
uses Python for most of his projects. He says the main reason
is that he likes the way source code looks. That may seem
a frivolous reason to choose one language over another.
But it is not so frivolous as it sounds: when you program,
you spend more time reading code than writing it.
You push blobs of source code around the way a sculptor does
blobs of clay. So a language that makes source code ugly is
maddening to an exacting programmer, as clay full of lumps
would be to a sculptor.
At the mention of ugly source code, people will of course think
of Perl. But the superficial ugliness of Perl is not the sort
I mean. Real ugliness is not harsh-looking
syntax, but having to build programs out of the wrong
concepts. Perl may look like a cartoon character swearing,
but there are
cases where it surpasses Python conceptually.
So far, anyway. Both languages are of course
moving targets. But they
share, along with Ruby (and Icon, and Joy, and J, and Lisp,
and Smalltalk) the fact that
they're created by, and used by, people who really care about
programming. And those tend to be the ones who do it well.