We agree, we subscribe to the philosophy "languages never die". There are new languages added to the mix so things become more complex. It's part of the problem we're trying to solve and help dev #gofaster
This quote is from ActiveState on Twitter. It got me thinking especially because I am -- seemingly forever -- grappling with the idea of which programming language will help my career in the future.
Let me take you back to the year 2006. I was an undergrad student coding school projects in C, Java, and Perl. I thought I wanted to be a developer. Life, as always, is full of surprises. In 2007 I was not a software developer; I was, instead, a data developer. I was working with PL/SQL in my day job. I heard of Python and checked it out. It was an easy language to get started with and I picked it up quickly. As time passed and the more I used it at work or for personal projects, the more I fell in love with it.
I am still not a traditional software developer. But I do write automation of all sorts, almost all of it directly in Python or in frameworks or tools written in Python. In these years Python has not remained stagnant either. In fact, it has had fantastic growth in many different domains. Web development, data analysis, microservices, robotics, IoT; you name it and Python is a popular choice for it.
If I stuck with Python for the near future I would not be without opportunities. Python is a popular choice in the tech industry and more and more teams are writing more and more things in it. Python is not going away anytime soon.
When I think of my career more than a decade ago, I feel satisfied to have picked a winner (so to speak) in Python. I still have a long career ahead of me and I have to think about what would help it. A programming language is a tool that will become even more important in the next wave of computing, what with serverless and ML/AI, etc. What is the next "winner"?
In just the last decade more programming language choices have emerged than ever before. Ruby, D, Julia, R, Rust, Go, and Elixir are just some of them. Given this amazing track record, do practitioners like me need to worry about the popularity or longevity of a single language? If not this, then that, right?
Learning a new programming language is one thing, becoming proficient in it is another. I am no Python expert but I am very proficient in it. I have a good grasp of its ecosystem and I keep up with developments in the community. I have been fortunate to have worked in teams that use and appreciate Python. Do I still need to diversify my skill set to prepare for a future where Python has gone out of fashion and something else has replaced it?
That's the crux of my dilemma: how much should I invest my time now in betting on a language other than Python? Is it worth it, especially if languages never really die? As my friend Dmitry Tokarev said to me,
i'd just ride that Python wave all the way until next wave comes and then we will try to master it
Go, with the phenomenal rise in usage, is a good candidate to replace Python. Already we're witnessing the meteoric rise of new projects being written in Go rather than Ruby or Python as was the case even five years ago. Is this that next wave? Or will Python not just survive but thrive in the ever more challenging atmosphere of competing languages? Its track record so far suggests that it has a very healthy and active community behind it. Python, by all accounts, will do well for a long time.
Don't forget, too, that code written in Python today -- especially in the enterprise -- will not be easily replaced with something else. Just like COBOL someone will need engineers with Python skills for a long time to come. The gravy train will not end anytime soon.
The rise of cloud computing is a monkey wrench in this debate. Compute cost in the cloud is variable and software running on it will need to be more efficient to realize economic benefits. As cloud and then serverless becomes even more pervasive, will another generation of languages emerge to solve economic challenges posed by it? Or will the current popular languages adapt to these changing conditions? Python already has projects like PyPy on its side to meet future challenges.
Going back to the quote by ActiveState, that programming languages never die, it is realistic to believe that Python skills acquired today will not become obsolete overnight. As Dmitry believes, even if it becomes obsolete, the time to worry about it is not now.
I'll quote Randal L. Schwartz,
There's more happening in Perl today than in the 90s. Just a smaller piece of a bigger pie. And worldwide SHORTAGE of Perl hackers.
For all the claims of Perl being dead -- or at least losing popularity -- its users claim otherwise. Just like users of BSDs claim that their respective projects are livelier and healthier than ever before. Erlang has never been the darling of enterprise software but its community has increased manifold by the introduction of Elixir. Just because something newer and shinier comes out, it does not render everything before it dead.
The basics of compute, network, and storage have essentially remained the same. Over the last three decades or so, engineers have built more and more abstractions. The processor hasn't gone away, neither has Assembly, C, operating systems, compilers, etc. A virtual machine (VM) runs on the same stack as a web server. A Docker container is just a process, equivalent to a mail server. Kubernetes runs on one or more VMs. We have these layers of abstractions and each engineer, each vendor, each open source project decides to specialize in one of these layers. The layers don't just disappear.
Finally, we, the engineers, make the future. If we continue to make our communities healthy and grow them, we don't need to give up the technologies we love. We just need to adapt and learn from each other. Technology is no longer a zero sum game, especially with the rise and wide acceptance of open source. All programming languages have a space in these conversations. If it was true before, it is truer today: programming languages don't die.