"This article written by Paul Graham in 2004 discusses the difference between users of Python and Java programming languages. He points out that those who learn Python do so not for finding a job, but because they genuinely enjoy programming. This does not mean that programmers who use Python are more qualified, but it suggests that companies would want to hire such programmers. He refers to this situation as the 'Python Paradox', explaining that companies developing software in a lesser-known language will attract more talented programmers who are willing to learn the language.
---
# The Python Paradox (The Python Paradox: The Secret to Hiring Superior Programmers)
August 2004
In a recent [talk](http://paulgraham.com/gh.html) 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 already know.
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](http://paulgraham.com/icad.html) where it surpasses Python conceptually.
So far, anyway. Both languages are of course [moving](http://paulgraham.com/hundred.html) 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.
---
Relevant Keywords: Python paradox, Python vs Java, learning Python, Python programmers, esoteric programming languages, Python in Google, Python and Perl comparison, importance of source code aesthetics, programming language choice, Python and job opportunities, Python and programming passion."