I know and use several programming languages in my software and firmware development
projects. There is a core set that I use most often, because they happen to be the right tools for
the job. Early on, I learned several languages which I almost never use, because they aren’t as
good a fit for the kinds of projects I’m working on.
I personally have nothing against the Go language specifically. In fact, I have nothing against any
programming language (except for a few issues I have with JavaScript, which is poorly-designed and leads to bad habits).
These days, my time is increasingly valuable. To learn a new language thoroughly, there needs to
be a compelling reason to do so. The fact that a language is new and bright and shiny and has a
lot of vocal supporters doesn’t mean that we all should drop everything and switch to it, or even
necessarily take the time to evaluate it. I learn new things (including new languages) all the time
– it’s just a fact of life in this business, the learning never stops. But I have to carefully choose
what I spend time learning, because at the end of the day, I need to be productive. My employers
and clients need actual results. I learn a new programming language as the need arises, when
there is a compelling reason for it.
Programming languages are chosen for projects for a variety of reasons: availability of
development tools for the target platform, integration with an existing code base, existing
knowledge of the development team, portability requirements, performance requirements,
available skills in the new-hire talent pool, tradition, management directive, customer directive,
available libraries and frameworks, design paradigm support in the language, etc.
There are always new languages popping
up here and there. Some will forever
remain niche, some will catch on, and
some may alter the landscape of the
software development world forever.
Have a look at this programming
language influences network, and when
you get to that page, zoom in to see more
and more languages. Then consider the
time it would have taken to thoroughly
learn each of these languages soon after
they appeared, and extrapolate that into
the future – because new languages will
continue to be added. Even if you learned them all thoroughly, you would end up using only a
small subset of them for real-world, non-trivial projects.