The similarities between spoken or written language and computer code are amazing. Someone writing code can range from a terrible amateur to a polished professional. When speaking someone can range from barely comprehensible to giving speeches like an art form. Both an author and a software developer are artists in their own right, if they choose to be.
The term “Polyglot” originated with spoken language to describe someone who is fluent in many languages. Surely few need convincing of the benefits of this: they enable greater travel opportunities and communication with a wider range of people with each language you know.
So why are developers so averse to working with multiple programming languages and technologies? I for one, am not.
Windows vs Linux vs Mac
This is without a doubt the greatest divider of geeks everywhere: their favorite operating system. We’ll have peace on earth before we get these folks to happily share a data center. But is that the best thing moving forward?
I am writing this post on a Windows/.Net centric blog yet I’m doing it with my trusty PowerBook G4 that I put Ubuntu Linux on. Seem strange? The reason is because I prefer this machine when I’m writing. It’s very fast, simple and has no frills. It’s been very solid for many years and I know that no matter what, I can turn it on and write. Plus it doesn’t have much installed on it that might distract me from clean writing.
Oh, did I mention it only cost $200? It should be pretty easy to understand now, I’m simply using an effective tool for a simple job. I just want to write, and I’ve found this machine is excellent for that purpose.
This is exactly how we need to start thinking about Operating Systems and platforms. Instead of getting married to just one technology or language, maybe we should explore others to see if they can do the job better. It’s a simple concept, yet very unpopular in tech. It’s not about the operating system you’re using it’s what you’re doing with it that really matters.
Does the language really matter?
If we’re talking about programming languages, of course it does. Choosing the wrong language to develop a project with can have disastrous consequences. If you have a team of developers highly skilled in a certain language, it’s absurd to make them learn and use a language they aren’t familiar with just for kicks. But should you really have a team that’s locked in to just one language or platform?
Another similarity found between the written word and programming is the fact that once someone learns a few languages, they start to pick up new ones even faster. There is a significant overlap in the structure, vocabulary and other nuances and many languages are based off others. A Polyglot starts to develop a solid foundation of underlying knowledge of language itself and learn considerably faster. Programming languages are the same way.
The language itself isn’t nearly as important as how you use it. You can write bad code in any language, and a good solid knowledge of programming concepts will help you pick up and learn new languages fast, and develop good code, no matter which one you choose.
Be a problem solver, not just a programmer.
One thing Polyglots tend to focus on is solving a problem, rather than writing cool code. I’ll readily admit that I’ve spent countless hours polishing some piece of code that does some small thing but does it beautifully, and I love it. But when I’m building software for my day job, I’m more focused on building something that solves the problem at hand, and does it well. When I cut a complex function into just a few lines and some jQuery calls in a couple hours I won’t be impressing my hardcore coding buddies much, but my boss is sure happy about it.
Use the best tool for the job
Speaking of work, today we had a problem to solve. I can’t tell you the details, but my choice came down to building an .aspx control or a PHP script. I’m the lead developer, so it’s my call to make. I opted for the PHP route, and was able to get the functionality I needed in a little over an hour. Since this isn’t a mission critical item it really didn’t justify a ton of work on it.
I could have just as easily built this into an .aspx control. I could have built it in C#, and created an enterprise class version of this worthy of resale. It would have been faster, more stable and harder to exploit. But it would have taken me far longer than an hour, and integrating it may have been a challenge as well.
Also this site is on a Windows server, but it’s built in PHP, by a PHP team. So writing in my favorite language (C#) would have been fun, but this solution makes a lot more sense for business.
It’s all about using the best tool for the job. As my boss says, PHP is a Honda Civic, and the .Net framework is a space shuttle. You wouldn’t want to take a Honda Civic to the moon, but if you just want to run to the grocery store you won’t take the shuttle either. The disparity between the languages may not be that dramatic, but the point still stands.
Polyglot is about keeping your mind open.
I’ve been a software developer professionally for over a decade now. I was an amatuer before that. To say things have changed would be a silly understatement. Not only has programming changed in that time, the world has changed and how we use technology is nothing like it was in years past.
The scene is exploding with new stuff. We have languages, platforms, even paradigms being created constantly. The way you view things now will not be the same next year. Just as you really start to master something another shiny technology comes by and leaves it in the dust. This is exactly what drives older programmers to the sidelines, but for me it’s what keeps my interest and passion going. I get bored way too easy and this rapid changing tech makes me feel like I did when I was a kid trying to code away on a 386.
You have to embrace this stuff and keep your mind wide open for anything new that might make your life better. Your job is to solve problems in an efficient manner. Your boss doesn’t care about curly braces or whitespace delimiting they care about results. If you focus on the results and remain open to efficient ways to solving problems you’ll be able to accomplish more, and you’ll be indispensable.
Become a polyglot. Don’t get stuck in a rut. Find a new language and learn it. Are you a LAMP programmer? Go download Web Developer Express and learn some ASP. Are you a .Net coder? Go learn some Python or Ruby. You’ll be amazed at what these languages are doing. Now that you know what a Polyglot programmer is, go become one.