Our endless bickering over the merits of different languages and paradigms isn’t all that productive, nor is it very interesting. You’re not a Ruby/C#/Java/Elixir developer, you’re a goddamn problem solver. Remove the programming language from your LinkedIn/Twitter bio, that’s not who you are.
All the things that make other languages and platforms more or less sexy are 90 % community and culture. All the loudmouths in the developer community hype things that aren’t “enterprise”. So only 10 % of the sexiness is the actual language*. And the goods news are that we humans can change culture, that’s what we do best when we really want to.
* except for Ruby of course, it is so beautiful. But I digress…
The time is right
Easier to find developers, easier to find a job
When the language barrier is removed, you can choose look for the things that matter in potential recruits and employers. Like cultural fits/misfits and interesting problem domains. You know, the hard stuff. It’s not automatically good just because it mentions “Scala”, “F#” or “Objective C” (or “agile”, “XP” or “kanban” for that matter).
It’s a pretty good language
“The downsides?” you ask
Sure, there are no silver bullets, just a bunch of trade-offs. Here are a few:
You can’t easily talk about every problem in one language
Whenever I try to explain the small cultural differences between Australia and Sweden, like the concepts of “lagom”, “fika” and “allemansrätten”, I struggle with coming up with English words that do them justice. But most of us don’t need to understand those tiny concepts, they only affect 9 million out of the 7 billion people of this world.
Much in the same way, most developers I meet to aren’t solving very exotic technical problems. They’re solving business problems, like:
- understanding what is the most important next step for you
- figuring what your customers might need
- deciding on what you need to say no to in order to survive as a business
What about multi-core? Parallelism? Concurrency?
I don’t know yet, we’re still not sure how to approach this problem. Some people use Clojure, Java or Erlang to run all cores at full utilisation. Some just throw a bunch of cloud servers at it. Some find that all the latency comes from the database calls anyway.
As always, the pendulum keeps swinging
Like so many other things, fads in IT go in 10-20-30 year cycles. In the 90′s we all hoped for Java, then the polyglot/NoSQL movement came along. We might be ready for another round of badmouthing the language and platform fragmentation. I just hope that we get together and solve the hard problems instead of declaring our geeky love for things that don’t really matter.