Note: this was originally written on August 28, 2006
Programming languages have been the topic of endless discussions for years now, and a lot of people take these things very seriously. Well, a lot of developers take these things very seriously. Normal people don't care, and boy are they right. Some developers will stick with a certain language purely for syntactical reasons. And some will dislike a language because of its syntax even though the language itself might be extremely powerful. Other developers prefer languages which mainly provide improved productivity, even though the syntax might not be as elegant or even cool. And let's not forget the developers who choose a language based solely on how many jobs are available for that language.
I've only been working as a software developer for 4 years, but i've been writing code for the last 10 years. During those years i've written code in C, C++, Visual Basic, C# and Java. I've played around with other languages as well, but not enough to actually count them among the languages i've done anything more than trivial stuff in. One of the most important things i've learned is that the language simply doesn't matter. A language can make some things easy, and some things hard. But in the end, the language is just a tool to help you write your code. The way you design and write your code should be done independently of the language you use.
I've always said that coding is like talking. Once you've learned to talk, you can learn any language to express your thoughts and feelings. It's the same thing with coding. At least, it should be. Once you've learned to code, you should be able to write code in any language they throw at you. It's just a matter of learning the syntax. The tricky part is that some languages will try to push you into certain directions that may or may not be the right path for you to take. Visual Basic is a prime example of this. Visual Basic tries to persuade you to take certain shortcuts. Shortcuts that lead to sloppy, ugly and even unmaintainable code. But it will be easy to write. At least, that's what they (and i'm pointing at Microsoft here) want you to think. In reality this easy code will be your worst nightmare once you have to maintain the code over a long period of time. But does that mean that Visual Basic is an inferiour language? A language so bad it's impossible to write good code in? No. A good developer will write good code in Visual Basic. Because a good developer knows how to write code 'into' a language, instead of 'in' a language.
Programming into your language, instead of in it is a concept that is explained in the classic software development book Code Complete by Steve McConnell. It basically means that as a developer, you should think of what you need to do, and how you want to do it, and then assess how to do that in the language you are using. If that's how you approach writing code, you are programming into your language. But most developers let their language and environment dictate the way they write their code. These developers are programming in their language. And they're gonna have a hard time when they're forced to move to a new language. Do yourself a favor and stay away from these developers. If you're hiring people, skip these developers. They may even be highly proficient in their current language but if they can't think about code outside of their language, they will be a burden on your team once you switch languages in your company.
Knowing the ins and outs of your programming language is very helpful, but i'd never judge a developer based on his/her knowledge of obscure language features. There's a reason why these things are obscure. Instead, focus on concepts, good programming practices and depending on the ambition of the developer, design patterns. These are the things that make a difference between a good developer, and a not so good developer.