Sunday, March 21, 2010

Polyglot Programmers

Do you have a favorite programming language? Most developers do. Sometimes it's the first language they learned. Sometimes it's the first one they became proficient in. In many cases programmers who have a favorite language may end up favoring it and in time they end up only writing code/applications in that given language. Other times a developer may just get in a rut or habit and continue down a path with a language because it is comfortable and they feel confident working with it.

There is a problem with this approach to development.

This situation leads to a myopic view of coding and design that can limit your options when building. It is a familiar scenario mostly commonly expressed as "When all you have is a hammer everything looks like a nail." You look at every problem as a Java problem. Or a C/C++ problem. Or Ruby.............

You can see where this leads. A programming language is a tool. Nothing more. Ask a carpenter what the best tool in the toolbelt is and they will ask what you are trying to do before they answer. It's an obvious question to ask - you can't say the best tool is a file when you need to screw a doorknob to a door.

But ask a bunch of developers what the best language is and they will nearly all have an answer. Even without asking what you are trying to do. That is a problem that many developers miss.

Every programming language has it's good and bad. There are things that some languages do quite well where others struggle and vice-versa. I will refrain from stating these pros and cons to avoid the common arguments that arise as it is beside the point.

Good developers know that it is important to have many tools in the box to address the different problems they are going to have to solve and they will work at getting and staying proficient with the tools available so they can recognize when one tool fits the problem at hand better than another.

I try to keep abreast of the cool languages out there. There are always new ones to look at, old ones to refresh on, and off-the-wall ones that are just neat to play with. Some you may never use, others will get broken in daily but it is important that you have as many tools at your disposal as possible so you can build your solutions to the best of your abilities.

Another reason to learn lots of languages (as well as IDEs, compilers, platforms) is because exposure to different programming languages exposes you to different viewpoints and approaches to solve problems that you would not have were you not experimenting.

I aim to be a skilled craftsman and every skilled craftsman knows what is really important with tools. Keep them clean, keep them sharp and keep them within reach for when you need to pull them out.

No comments:

Post a Comment