Paul Graham wrote a great short article back in 2004 called The Python Paradox where he states that if you look for python programmers you will end up with the best ones. The logic behind this is as follows:
Python is an esoteric language that universities and schools don’t teach, so people that knows python are self thought, they know that their python skills wouldn’t get them a better job so they do it for fun only; Considering that learning a new programming language isn’t a trivial task, and that python knowledge wouldn’t rank you higher for hiring, we can infer that it takes a really passionate person, a hacker, to learn and use python.
That was very true 12 years ago, but now almost every single school and university not only teaches python, but use it as the primary language, and even as the only language!. Nowadays even some non technical schools teach programming as a form of introducing their students to computers-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 their less clever students can catch it with ease.
This leads 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 this disproportion continues to grow in a way that the paradox tends not only to completely fail but also to get reversed.
Nowadays, everyone knows python and maybe is the only language they 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 an infinite reduced minority buried among tons of lame programmers mass produced at Phython Schools which is now kind of the new Joel’s Java Shools.
Mr. Graham said:
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 prepared to end up looking for a needle in a haystack.
Even though I think the Python Paradox does not 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 another languages that may or may not be the newer ones.
These days C and C++ programming languages are very rarely used as teaching languages and students will only get lots of Python and Java in the class rooms. I acknowledge that this might be very geographical 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 by 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 imperatively to write C and can perfectly make a whole career using whatever language you like without ever write a line of C/C++.
The Paradox might now point, but not be limited to 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 account that the Paradox points to different languages over time, but it does not point only forward to newer languages but also to older ones, and that this pointer can actually tend to move away from the trending languages. Take Perl, Lisp, Scheme, Haskell, Rust, Go as examples; What kind of people would like to learn by themselves a difficult/complex/unpopular language that is not used as much as Python or Java and that will not make you more appealing for a job? - Real passionate hackers that enjoy it, and do it well, just as the paradox predicts.