People are aware, but not that bothered...

©2010 Zuriel Barron

 

Peace through Polyglotism

C. Scott Andreas writes on learning multiple programming languages:

Over time, I found that my preferences evolved. Rather than bending a single language to meet my every need, it became apparent that some flexibility is essential to becoming a programmer who is able to address a variety of problems quickly, efficiently, and reliably.  Coming from a dynamic language background, I began exploring statically typed languages like Java, Scala, and C#. While type declarations may stand out as “noise” to the dynamic programmer, it became clear that these empower compilers (and well-equipped IDEs) to intelligently analyze programs in great detail, enabling them to comprehend the deep structure of the code and immediately point out problems, warnings, and suggestions.

I relate to this because my own career path has been one of moving from statically typed languages (Java, C#) to one of more dynamic environments (Coldfusion, Ruby, Javascript). I have and always will be a proponent of the philosophy of “learn as many languages as you can”, not only will it increase your “toolbox” and ability to come up with solutions to problems, but it will make you a better programmer by giving you the opportunity to reflect back on the languages that you are familiar with and understand their strengths and weaknesses better. 

I like to think of programming languages as tools. Very sophisticated tools, but tools nonetheless. When you go to the garage, open your toolbox and choose a tool to fix a problem with your house, do you always go for the screwdriver? I would venture to say the answer is no, otherwise you would be a very lousy repair man. Why is it then that when it comes to solving technical problems we always want to reach for the tool that we are most familiar with and force it into a problem area that may or may not be the best fit for it? Thats poor craftsmanship if I dare to say so.

Interestingly enough I have found throughout my career that people like me are normally looked down upon by other developers. “Oh, you have jumped back and forth between Java, C# and Coldfusion?… well I have 12 years of C# experience… I’m an expert…” As if doing the same thing for 12 years (has C# even been around that long?!!!) has really challenged that person as a developer and a craftsman. 

I think it’s time we recognize as a community that we need to do a better job of looking outside our comfort zones and really start trying hard to educate ourselves better on the ins and outs of the rich diversity of languages that exist out there. Those who take on the challenge will only make themselves more and more valuable in a world that continues to shrink and pit developers across the world against each other. Those who take the time to refine their craft and become better will always be at an advantage.