Sunday 14 October 2018

Why hasn’t Go overtaken Python in popularity

May I introduce you to the Chicago train system (CTA)? Here is what a train looks like from 1982:
Here is what a train from 2001 looks like:
and here is a shiny brand new CTA train, made in the last 5 or so years:
Cities like New York have similar looking and functioning trains.
As it turns out, it’s highly affordable for Chicago’s CTA to stick to what’s already there. It reduces costs, and they can find engineers that can work on them! The lines themselves probably don’t permit much flexibility, either. Everything about these trains is known, so when they break, the maintenance time is minimal.
This approach allows the CTA to incrementally improve things without rebuilding too much. Trying something radically new is really, really expensive. Lots of legacy has to be supported. The train systems that go through massive overhauls have a TON of money flowing into them. The CTA is not one of those systems. Everything has to be rebuilt. That’s not cheap.
The system was originally opened in 1897.
Here is what a train looks like in a brand new subway system (Guiyang, China).
It’s shiny and it’s new. It’s a greenfield project where the engineers, builders and maintainers are able to try something new. They don’t have any legacy to work around.
It opened in 2017

The same concept applies to software.
The majority of demand for programmers comes from supporting existing systems, not new ones. As these systems grow, more engineers are needed to support it and develop it. That’s why you’re seeing an upward trend for Python, because those Python systems continue to grow, requiring more engineers. For every greenfield Go developer there are probably 100 Python developers. Go is a new, shiny language that has few experts.
Let’s not forget that Python itself is being improved and it’s rough edges are slowly being sanded away. Just like CTA trains, their guts look a bit different from 1981, but fundamentally still have to fit on the same tracks and still be supported by the same engineers.
In today’s world, new languages pick up steam in enthusiast circles, mostly in open source. It’s a perfect incubator for trying new things. Risk is fairly low. Go right now is all the rage in greenfield projects. But the largest chunk of the job market isn’t about greenfield, it’s about legacy. I think Go one day will take off, but not today. Python’s been on this journey since 1990! Go was only introduced in 2009.
So when you ask “Why hasn’t shiny new language X overtaken older language Y”, consider how much is already running on language Y, and how many engineers are needed to continue supporting what’s already there.

No comments:

Post a Comment