Monday, February 20, 2006

Linguist Wanted. Apply Within

I've been programming computers since the early 90's. I don't know whether or not that qualifies me as being any kind of veteran but I think it gives me some insight and qualifies me to hold an opinion or two.

I'm browsing through the career sections of my Sunday newspapers (because you're never sure when you'll find your true calling) and I'm amazed, amused and slightly puzzled by the makeup of the want ads they had for Programmers and Systems Analysts.

They ask for proficiency in so many languages that you'd think they were looking for a UN translator.

ASP (.Net), PHP, Java, VB (.Net) all for one company? No wonder they're looking for a Programmer, the last one must have had a nervous breakdown. It's not programming houses that are looking for these skill sets, there's no Cobol or RPG in the mix so it's unlikely there are legacy applications that need maintenance. These are companies who actually roll out new, personalized software built on all these different platforms on a very regular basis. It begs the question; Why?

I'm guessing the argument could be made that it's a case of the right tool for the right job, but I would make the counter-argument that very few of the tools we use nowadays are single function. They're more like swiss army knives than single serve instruments. It's my opinion that when a company actively develops on multiple platforms it shows one of two things:

1) A lack of knowledge as it relates to the capabilities of one architecture over another.

2) People allowing themselves to be seduced by the technology instead of relying on their own fact finding.

Having a system landscape such as that will eventually prove to be extremely counter productive. If connectivity eventually becomes one of your goals, you're just asking for headaches. It's not that it can't be achieved once a set of protocols are agreed upon, but why do it 3 - 4 times in 3 - 4 different ways? It makes no sense. You're increasing the R&D, testing and implementation times on even the smallest of changes.

This is more common place than it should be and it's my hope that with time companies will realize the productivity boost to be gained by simply building around a single architecture where programmers can spend time delivering solutions on a platform their familiar with. This seems like a more practical approach than spreading the skills of their programmers as thin as they currently do.