In a recent talk 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.
The original article on the Python paradox can be found here. I came across the Python paradox from Rob Conery. The rest of the article is included at the bottom of this post.
The Python paradox seems really obvious to me, because I have taken the time to really learn new languages. (Tip: JavaScript should not be a copy/paste language. It’s actually really interesting.) But does it really come as any surprise that a develop who spends personal time and energy learning a language with no perceived payoff might be a slightly different breed than just everyone else in the field?
I have tried to teach myself Ruby in the last year. I love writing in Ruby and talking about Ruby. I tackle problems differently because I know Ruby. I write C# differently because I know Ruby. I’m much less afraid of anonymous types and the dynamic namespace. Learning how Ruby treats blocks has removed any doubt I may have had when using anonymous delegates and their ilk in .NET. Learning a newer language has increased my understanding of an older language.
Real learning is all about those top 3 tiers of Bloom’s Taxonomy: analysis, synthesis, and evaluation. How do you break down what you’re learning? How do you integrate what you’ve learned to your set of existing skills? How do you make high-level, functional decisions based on this knowledge?