August 2004In a recent talk I said something that upset a lot ofpeople: that you could get smarter programmers to work ona Python project than you could to work on a Java project.I didn't mean by this that Java programmers are dumb. Imeant that Python programmers are smart. It's a lot ofwork to learn a new programming language. And people don'tlearn Python because it will get them a job; they learn itbecause they genuinely like to program and aren't satisfied with the languages theyalready know.Which makes them exactly the kind of programmerscompanies should want to hire. Hence what, for lack of a bettername, I'll call the Python paradox: if a company chooses to writeits software in a comparatively esoteric language, they'll be able to hire better programmers, because they'll attract only thosewho cared enough to learn it. And for programmers the paradox is even more pronounced: the languageto learn, if you want to get a good job, is a language thatpeople 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 wouldmost 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 languagesuses Python for most of his projects. He says the main reasonis that he likes the way source code looks. That may seema 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 doesblobs of clay. So a language that makes source code ugly ismaddening to an exacting programmer, as clay full of lumpswould be to a sculptor.At the mention of ugly source code, people will of course thinkof Perl. But the superficial ugliness of Perl is not the sortI mean. Real ugliness is not harsh-lookingsyntax, but having to build programs out of the wrongconcepts. 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 theyshare, along with Ruby (and Icon, and Joy, and J, and Lisp,and Smalltalk) the fact thatthey're created by, and used by, people who really care aboutprogramming. And those tend to be the ones who do it well.