It seems to be the one defining question for developers nowadays, at least from the outside. I have spent a lot of time at socializing events talking to all kinds of people about the Beschleuniger-concept lately. Usually when we’ve talked for a while and the person is interested this question gets asked. Often followed by “see, we currently do [ABC] and we are looking for someone with years of experience with that language and the field [XYZ]. So, what do you think about it?”
I always stumpled on that question. Could I tell a potential project partner that I think the programming language or technology they are using is bad match and doesn’t (quite) fit their needs? Would he even hear the message or just think that I am just another programmer defending his most favourite language by goofing on other languages? That is not the impression I want to give. So what to tell him¹? For the first few times I said something useless and switched the topic. But that was very unsatisfying, so I sat down and looked deeper into this topic a few weeks ago.
And than it hit me: It doesn’t matter. The language doesn’t matter.
No, seriously, if you have a good software developer, it really doesn’t. A good software developer is able to get into a new software language in a couple of weeks anyway. Every day longer is only adding experience helping him getting things done more quickly, while the amount he can learn decreases over time. As Jason Fried phrases it: “There’s surprisingly little difference between a candidate with six month of experience and one with six years.”²
I think this is especially true for good developers. A good programmer is able to read code, understand the conceptional idea and with that learn how to do things the best possible way in that language or framework. And for most languages and frameworks that only takes a couple of weeks. After he only needs to learn the “vocabulary”; the right method-calls, functions and places to look things up. But as soon as he understood the underlying concept it takes him very little time.
So, why is it that there is so much rambling around programming languages? Or even more precise why am I defendant for certain languages and like them much more than others? It is because of the community around it. Each language has a unique community surrounding it, giving it certain characteristics. If you look at the users of a language that is mostly used for science, for example, you’ll find that most people in the community will have an university degree.
This is only one obvious example, in reality every language and its public appearance is formed by the community around it. Every language attracts certain kind of people who are in some way or the other like-minded. **And it is them who **define how to do things within “the language” or framework. That goes from how they share code, collaborate and organize to they way people contribute, communicate and even how they develop, from their style to the methods (waterfall, agile, test-driven) used. This is how the community and with it the language or framework is shaped.
So even when I meet someone for the first time, if he is defendant for a certain language or framework it means he identifies himself with the surrounding community. And only by knowing that community I can expect him to have certain characteristics and ideals on how to do things, even more generally than just coding style. Within minutes I am able to tell you whether we would be a good team or not. This might sound like prejudice to you but if the person acts to be associated with that community, he wants to be part of the community and therefore very much likely likes to work the way the community does.
Of course I always question my picture of community and the people in it. That is why I don’t pick on languages: I don’t want put the other person in the role of defending what he is doing but rather try to get beyond that and figure out, whether he is actually a good programmer. But this works the other way round, too: if a company is looking for developer for XYZ, they associate themselves with that language, their community and its way to do things. Making you more attractive to some people while least attractive to others.
To put it in a nutshell: The language doesn’t matter that much, as long as the developer is good. Be aware of the fact that by using certain languages you also attract certain (kinds of) people. So don’t search for people you need but more for the community whose work style you want your company to work with. Or even better: drop the language and start looking for Great Developers instead.