Back in 2004, Paul Graham wrote a great short article called “The Python Paradox”, in which he basically states that: if you look for python programmers you will end up with the best, smartest programmers in general. The logic behind this is as follows:
Python is an esoteric language that universities and schools don’t teach, so people that know python are self thought, they know that their python skills wouldn’t get them a better job, and they do it because they just care enough; Considering that learning a new programming language isn’t necessarily a trivial task, and that python knowledge wouldn’t rank you higher for hiring, we can infer that it takes a truly passionate person, a hacker, to learn and use python.
It was conceived 12 years ago, but now almost every single school and university not only teaches python, but use it as the primary language, oftentimes as the only language!. Nowadays even some non-technical schools teach programming as a way of introducing their students to computing and logical thinking, which is good, but they all use python precisely because of its simplicity; They even tend to over simplify an already simple language so that their less clever students can catch it with ease.
This leads us to the current situation: if you look for python programmers you will get quite a few good programmers, that’s for sure, but you will also get some of the very worst ones; Actually, most of them will be bad programmers. As the language gets more and more popular and this disproportion continues to grow, the paradox tends not only to completely fail but also to get reversed.
Nowadays, everyone knows python, and it’s also quite possibly the only language many folks know because is the only language they were forced to learn in school. For others, python is the language they use the most because it was the main language of choice in college.
Those excellent, passionate programmers and real hackers who learned python because of fun 10 or 15+ years ago are now a tiny minority, buried among tons of lame programmers mass-produced at Python Schools, which are now the new Java Shools.
I didn’t mean by this that Java programmers are dumb. I meant that Python programmers are smart.
And here I’m not saying that python programmers are dumb. There are a lot of excellent programmers out there that use python as their language of choice, but if you’re going to use python as the filter described in Graham’s essay in 2016+, be advised you’ll end up looking for a needle in a haystack.
Even though I think the Python Paradox does no longer work, I totally agree with Graham’s thoughts in a deeper way. The language of the original paradox (python) may no longer be a badge of great programmers, but because of the paradox’s time sensitivity it tends to shift towards other languages that may or may not be the newer ones.
These days, the C and C++ programming languages are very rarely used as teaching languages, and students will only get lots of Python and Java in the classrooms. I acknowledge that this might be geographic sensitive and that schools and universities in different parts of the world will take different approaches, but still, Python gets far more attention for teaching than C or C++ does. Lots of students will get a C/C++ semester or so (Over simplified C/C++ in most cases), but then forget about it and continue to write Python or Java only.
Now consider the fact that C/C++ are a fair amount harder to learn and use than python if it’s the first time you get in touch with computer programming, and that if you’re not doing operating systems programming you wouldn’t actually need to write C and can perfectly make a whole career using whatever language you like, without ever writing a single line of C/C++.
The Paradox might now point, but not be limited to languages like C/C++. Take a bunch of new generation programmers out of a Python or Java School, pick those who know and like to write C/C++, and chances are you’ll end up with passionate hackers.
Take into notice that the paradox points to different languages over time, but it does not point only forward to newer languages, it also does to older ones and can actually tend to move away from the trending languages. Take Perl, Lisp, Scheme, Haskell, Rust as (non-exhaustive) examples; What kind of people would like to learn by themselves a perhaps difficult, definitely unpopular language that is not used as much as Python or Java, and that will not necessarily make them more appealing for a job? — Real passionate hackers that enjoy it, and do it well, just as the paradox predicts.