Polyglot: a person who speaks, writes, or reads a number of languages.
Long before the Web and client-server programming, it was common for an entire application to be written in a single language on top of a single platform or system. A programmer could specialize, become successful in this one language, and remain employed for years with a great deal of job security.
Then we started to see specialized tools and languages designed for a specific purpose. With relational databases, came SQL. When GUI client development was all the rage, we got C and Pascal. When we wanted to write code with object-orientation, we got C++. Then the web become “the thing” and we got HTML, CSS, and JavaScript. As web development matured, we began regularly working with regular expressions and XML.
Programming languages are always changing, and in recent years, a large number of new languages have joined the landscape. Procedural languages like PowerShell, Python, and Ruby. Existing languages expanded to include new features, such as data querying with LINQ being added to C#.
Being a polygot programmer allows a developer to use the right language for the right job, or the ability to dive in to a new language leveraging what is known about existing language tools. Every developer has a specialty or a language they are best at, and nobody can be an expert at all of the languages out there. Often, learning a new language allows you to apply new ways of thinking to the code that you write most often.
I was tired of being called the “.NET guy”, and I didn’t want to switch to becoming a “Ruby guy”. I wanted the familiarity with many languages. I wanted to be “the right guy” for any job. I started with teaching myself Node, then taking a weekend crash course in Ruby. That led me to getting very comfy with a few different flavors of Linux. A fun project with friends lead me to PHP and MySQL. I love all these languages. I know when it is appropriate to use, and I can jump in to many other possible projects with ease. Absorbing the mindset of these new languages and platforms allowed me to return to my core of the .NET stack and to become passionate about diving deeper into what was already in the tool-sets and libraries I was using regularly.
Most of my peers snub their nose at languages outside their expertise. That’s just wrong. We should celebrate the diversity of software development. All developers should “just for fun” write some code in a new language. We should support and learn from all developers, regardless of the language they prefer, or the tools they choose to use. Discuss. Share. Teach. Ask. Learn. Participate.