pgstrata
The Python Paradox
2

August 2004

3

In a recent talk [blocked] 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.

4

I didn't mean by this that Java programmers are dumb.

5

I meant that Python programmers are smart.

6

It's a lot of work to learn a new programming language.

7

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.

3–7

In a recent talk I upset people by claiming you could get smarter programmers for a Python project than a Java one. Java programmers aren't dumb; Python programmers are smart. People learn it not for a job but because they genuinely like to program.

2–7

You can get smarter programmers for a Python project than a Java one — not because Java programmers are dumb, but because people learn Python out of love for programming, not for a job.

9

Which makes them exactly the kind of programmers companies should want to hire.

10

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.

11

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.

12

Only a few companies have been smart enough to realize this so far.

13

But there is a kind of selection going on here too: they're exactly the companies programmers would most like to work for.

14

Google, for example.

15

When they advertise Java programming jobs, they also want Python experience.

9–11

Hence the Python paradox: choose an esoteric language and you attract only those who cared enough to learn it. For programmers, sharper still: the language to learn for a good job is one people don't learn merely to get one.

12–15

Few companies realize this, and they're the ones programmers most want to work for. Google wants Python experience even for Java jobs.

9–15

The Python paradox: choose an esoteric language and you hire better programmers, because only those who cared enough to learn it apply. The few companies smart enough to see this are the ones programmers most want to work for.

17

A friend of mine who knows nearly all the widely used languages uses Python for most of his projects.

18

He says the main reason is that he likes the way source code looks.

19

That may seem a frivolous reason to choose one language over another.

20

But it is not so frivolous as it sounds: when you program, you spend more time reading code than writing it.

21

You push blobs of source code around the way a sculptor does blobs of clay.

22

So a language that makes source code ugly is maddening to an exacting programmer, as clay full of lumps would be to a sculptor.

17–19

A friend who knows nearly every language uses Python because he likes how source code looks — seemingly frivolous.

20–22

But it's not: 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 an ugly language maddens an exacting programmer.

17–22

A friend who knows nearly every language uses Python because he likes how the source looks. Not frivolous: you read code more than you write it, pushing it around like a sculptor's clay.

24

At the mention of ugly source code, people will of course think of Perl.

25

But the superficial ugliness of Perl is not the sort I mean.

26

Real ugliness is not harsh-looking syntax, but having to build programs out of the wrong concepts.

27

Perl may look like a cartoon character swearing, but there are cases [blocked] where it surpasses Python conceptually.

28

So far, anyway.

29

Both languages are of course moving [blocked] targets.

30

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.

31

And those tend to be the ones who do it well.

24–27

Real ugliness isn't Perl's superficial sort but the wrong concepts. Perl may look like a cartoon character swearing, yet sometimes surpasses Python conceptually.

28–31

Both are moving targets, but they share, with Ruby and others, being made by people who care about programming.

24–31

Perl's superficial ugliness isn't what I mean. Real ugliness is building programs out of the wrong concepts — and Perl sometimes beats Python there. Both are made by people who care about programming, who tend to do it well.