Most programmers will agree! Polyglot programmers are the ones who are actually in-demand.
The term polyglot programmer refers to someone who is capable of programming in multiple languages. Programmers who know multiple programming languages generally pick the right programming language for the job, rather than just using the single one that they know.
When polyglot programmers face problems for which their current programming language isn’t a good fit, they’ll choose and learn how to use a new one. And no programmer can argue that “using the right tool for the job” isn’t a good idea.
Programming languages themselves are actually remarkably easy to learn. What’s more difficult is achieving the mindset of a programmer: understanding how to deconstruct problems into sequences of steps that can be done by a computer.
The first programming language you pick up will be the most challenging. Next languages will be a lot easier – and most programming languages share concepts. Nearly all programming languages have support for:
- If statements
and a ton of other concepts. Although the specific letters and symbols are different, the ideas and concepts remain the same.
This is why it’s incredibly common to hire a programmer with zero experience programming in the language the company uses. This means the potential job market for polyglot programmers = all programming jobs, regardless of the language or framework.
Programmers who refuse to learn anything besides one language have a much narrower segment of the job market to work with.
So learn, dabble, and work with many different programming languages. Zed Shaw, an important open-source programmer and experienced code educator suggests everyone work with at least 4. Going in with the mindset, “I’m only going to learn one and I refuse to try anything else,” will only set you up for failure.
All programming languages contain a lot of mechanisms that work together to break down and solve complex problems. Each language has certain strengths and certain weaknesses that lend themselves to being useful for tackling certain types of problems.
In general, once you understand all the components of a programming language and master each nuance, you’ll have a rich toolbox and elegant solution at your disposal.
With most programming languages, the more of the language you learn, the better the code you’ll be able to write.
Even good developers who appreciate the nuances of the language will avoid them, because when other people read their code, it will be pretty unclear whether they chose these nuances out of appreciation, or out of ignorance of the actual implications of their code.
- Was written by a super good developer writing code in the best and concise way, or
- Has major problems that are not obvious.
This makes it an incredibly hard language to master the craft of programming with. If you’re a good developer with a different programming language, you’ll be able to wrap your head around the nuances a lot better, because you’ll already understand the big picture concepts.
Why does a programming language with so many flaws exist?
Let’s take a look at how long it took to ship the first versions of different programming languages:
- Ruby: 3 years
- Python: 2 years
- Lisp: 2 years
Here’s a graph showing how many days programming language creators put into crafting a good programming language before launching it to the world:
Since the programming language initially only ran inside web browsers, different browsers (think: Internet Explorer, Netscape, Firefox, Safari) initially all had slightly different implementations of the language and quirks to them.
“This is the only programming language people feel like they don’t need to learn before they start using it.”
The language took everything that was learned over the past 20 years of use of the old version, kept the good parts of the language, and removed the bad parts.
Did this article make you think of someone who refuses to learn more than one language? Share this with them!
What would be a good choice for a first language to learn and why?
Thanks – this is very insightful.. What would you consider a good first language for someone learning on their own?
Hi Ajay –
Some good languages to start with are any of these:
* C# (.NET)
Good luck on the coding journey!
This is a really great blog! Its use of pictures makes it a lot more entertaining and easier to read.
Thank you for the delightful article. My first program was in wires for an IBM 402 in 76. I have never stopped learning new languages.
You have listed Ruby of which I’m a huge fan. I’d love to see your chart expanded by the entire Babel tower .
I’m a longtime fan of Smalltalk and would suggest that it be counted as the 8 years from Smalltalk-72 to release as Smalltalk-80 it lived 10 years in Apple with Allen and Dan and emerged as Squeak so perhaps 18 years and still evolving.
Objective-C I do not know the history — gotta study.
C++ was Bjorne’s poor man Smalltalk cause ATT refused to pay the $ to Xerox.
I never heard that about the origin of C++ as a “poor man’s Smalltalk”. Crazy how sometimes the most unexpected things become a major part of programming culture!
I have been writing computer programs for a living for over 50 years, and I have used a lot of programming languages.
Most programming languages evolved to solve some programming specific problems, like Fortran (good for floating point calculations and matrix operations, but little else). In the early days, that was expected: Scientific programmers used Fortran, business programmers used Cobol, students used Basic, and non-programmers used AutoCoder or RPG. There was a certain Tower-of-Babel aspect, and groups like the ACM employed algorithmic languages like Algol to have a common language in which to document algorithms, which then got hand translated into Fortran or Cobol.
With the advent of PL/I, IBM tried to fuse these disparate subsets together, and failed spectacularly. Later, ADA, developed by DOD, was the Next Big Thing, and it had success similar to PL./I.
While the idea of having One Universal Programming Language is a nice thing to chat about, it isn’t very realistic.
Any up-and-coming programmer should be ready to learn and develop apps in a suite of languages. At this point in time, I use Ruby (on Rails) for server code, CoffeeScript for browser-based JS (with jQuery and Backbone frameworks), Haml for html markup, SASS for CSS style-sheets, and any number of data representation languages, like XML, JSON, SQL, …
My point to all of this is that you have to use the tools at hand. Like they say in NASCAR, “You run what you brung”.
Thanks for the awesome perspective, Ken. It’s appreciated!
I disagree, I think that people should learn to code to scratch an itch.
I would say that programming languages are a means to an end, and just like world languages, if you have something great to say then you should say it. If what you’ve said is significant it will warrant being translated into many other languages.
Learning many languages doesn’t give you the depth you need to do most of them any justice. It’s like recommending people to learn lots of real world languages in that respect also.
You fail to see that just because the piece that you can see was created in time x it took years of research and years of trial and error, years of practice before both are able to create their art in the short time that they do.
If you watch the interview with Eich you will see that although he MADE it in 10 days it was years in the making!
Very interesting and refreshing read! 🙂
Thank you, Francis!