Getting a Plumber’s Crack

Before it became hip-hop fashion, it was uncommon to see someone walking around with their belts hanging down below their waists. And this is a good thing.

The only exception: the plumber. Weighted down with tools in his or her belt, the mental image of the plumber bent under the sink with their belts tugging down is inescapable (no matter how much you may want to scrub it from your brain). But when it comes to programming, it may not be a bad thing.

Virtually, that is. After all, the plumber’s belt is weighted down because of all the tools available. Shouldn’t the programmer be in the same situation?

Lots of programmers have a core comfort with a single language, or perhaps a couple of them. Outside of those, though, they may be more lost. But who needs ‘em, right? If you know one or two languages in depth that will do the job, why do you need more?

One reason goes to how we learn. When we learn new things, we attach it to a framework of whatever we already know. So the more we know about a topic, the easier it is for us to figure out how new information ‘fits in.’ If you already know how certain structures work in one functional programming language, you can probably figure out how they work in a different one. The difference, largely, is syntax. So adding more languages to the arsenal means the cost in adding another gets smaller.

Another reason for learning several languages is the hammer-nail problem: If all you have is a hammer, everything looks like a nail. If you are rock-solid in imperative languages like C or Pascal, you will tend to look at problems in a way that can be solved procedurally. But what if a problem can be solved more quickly using an object-oriented language like C++ or Java? It’s less likely you’ll be able to spot that (let alone do something about it).

Around here, we require our developers to be highly-proficient in at least two languages, and conversant in several more. We even have an internal programming competition, where each challenge is a different problem–in a different language. One time it might be C++; the next, it might be Python. It keeps everybody on their toes, learning and developing their skills and perspectives. A highly-recommended practice.

But we still out-source the sink repairs.