Do Programming Languages Matter?
A lot of attention is given to programming languages. Many companies list positions such as “PHP Developer” or “Java Programmer”. Those interested in learning how to code often ask what language they should learn. Developers themselves argue over the merits of various languages.
Does it really matter what programming languages you know though?
There are a growing number of people, including myself, that don’t take known languages into account when hiring. When interviewing candidates, they are allowed to use any language they want (or even pseudo code). The idea is that we want to test whether a candidate has a good understanding of software development fundamentals. A developer with a strong understanding of the fundamentals will be able to pick up a new language fairly quickly. Someone who lacks those fundamentals will take a lot longer picking them up.
At first I thought that Golang was absurd and didn’t think the creators of it made good decisions. After trying it out though, I realized there were some really valid points being made. I easily applied the new perspective I gained into my work done in other programming languages. The fact that I don’t write that much code in Golang is irrelevant because the knowledge from learning it alone was valuable.
Programming languages are still software and we can build any software in any language. That means that the differences between languages lie mostly in personal preference with a few exceptions. Different languages make some things easier and some things harder. They all have their own trade offs.
What I think does matter is capitalizing on the different paradigms. There’s little perspective gained from learning C# if you already know Java. The languages are so similar except for a few pedantics points. And while PHP and Python have many apparent differences, folks tend to use the same patterns when writing code in both.
Languages that are wildly different from the ones you know are a treasure trove of knowledge though. Every new concept they introduce to you is another tool in your developer’s tool belt. Like all tools, they won’t be applicable for every problem. But having more tools will give you more options for any problem.
Learning Golang definitely added a few new tools to my tool belt. The perspective I gained from that language was an invaluable addition to all my experience in Java/PHP. It was certainly more useful to me than learning C# (which I did like though).
The next languages on my list are Haskell and Erlang. I’ve heard fantastic things about them and I look forward to seeing the paradigms used by them. Even if I never use those languages in the software I build everyday, the concepts those languages introduce to me will make me a better developer overall.