I'm sure there is such a correlation, because

  • experience and skill leads good programmers to picking languages that are better for them, in which they're more productive, and
  • working in a language forms how programmers think and influences their methods and skills.

Is there any research or some statistical data of this phenomenon?

Perhaps this is not a purely academic question. For example, if someone is starting a new project, it could be worth considering a language (among other criteria of course) for which there is a higher chance of finding or attracting experienced programmers.

Update: Please don't fixate on the last paragraph. It's not my intention to choose a language based on this criterion, and I know there are other far more important ones. My interested is mostly academic. It comes from the (subjective) observation and I wonder if someone has researched it a bit. Also, I'm talking about a correlation, not about a rule. Sure there are both great and terrible programmers in every language. Just that in general it seems to me there is a correlation.

  • 3
    If we could ever find a way to measure programmers, we could then identify which languages they use. – JeffO Nov 12 '12 at 1:11
  • 2
    Programmers who learn languages/technologies/whatever else just for fun, not driven by any "pragmatic" considerations, tend to be better programmers in general. No matter what languages do they learn exactly. – SK-logic Nov 12 '12 at 9:26
  • 1
    PHP community demanded a GOTO operator and they got it. You go figure. – Tulains Córdova Nov 12 '12 at 13:30
  • I think harder languages are likely to have better programmers, YMMV on which languages are harder though. – rlms Jul 7 '14 at 10:59

At a guess, I would say there is a correlation, but only a vague one, not worth putting any real weight on.

A programmer may end up using or gaining experience in a certain language for many reasons. Off the top of my head:

  • $COMPANY has many projects in $LANGUAGE so I had to learn it
  • Jobs using $LANGUAGE pay really well
  • everyone says $LANGUAGE is the one to learn, either generally or for some application space
  • $LANGUAGE is better supported (open to interpretation as well)
  • $LANGUAGE has a bigger collection of libraries
  • I learned $LANGUAGE at $EDUCATIONAL_COURSE and that's what I stuck with.
  • $LANGUAGE is fun!

Google might give you some sites that show a correlation between langauage and wage, but that's differerent to expertise.

If you are starting a new project and want to choose a language that will get you good programmers, consider:

  • Good programmers generally cost more and/or are harder to get into your project
  • The best programmers know multiple languages, and can start using a new language with relative ease
| improve this answer | |
  • $LANGUAGE looks interesting and $PROGRAMMER loves learning new, interesting things, even if not directly useful for $COMPANY. – Andres F. Nov 12 '12 at 1:46
  • Answer amended :) – Michael Slade Nov 13 '12 at 0:43

There are languages that demand extra skill (assembly being a prime example), but in the vast majority of cases the programmer doesn't choose what language to work in.

Most of us spend our time either doing maintenance or adding features to an existing project, not starting new projects. And even when starting a new project, there are many factors that go into choosing a language(s) -- mainly unrelated to what makes a language good or not. The leading example for that, is that if you project includes a web presence, you're almost certainly going to be using javascript.

Basically, I think your hypothesis is incorrect.

| improve this answer | |

There is no simple way to answer a question like this, I am unaware in any statistic information around this but I can speak about my own experance as a programmer and the companies and projects i have have worked on.

The choice of picking a programming Lagrange is around a few things like what your trying to make, how fast you are trying to make it, and if there are any other requerments like number of users and so on pretty much they way the call scale these days.

An example of this is, if your making the front-end of a web page your choices are things like, html, css, javascript, flash/action script. Now while making the web page you want to add an extra region to the page you cant really do it with javascript unless your using html with it and css can really only edit the look of it so your truly left with html and flash, now what ends up happening is the world is moving away from flash so writing a website in flash may hurt you because you may end up having to remake that feature again, people on some mobile devices like phones and tablets wont be able to see your work.

Now when it comes to back-end code it gets a little tricker, but its pretty safe to say you don't want to make your entire website in bash scripts if you plan on handling any number of users, and choices like java is popular but may be more overhead than you need to make your birthday investigation page. In the end its a lot to do with trade offs and experiences. For example i am working on a project right now and I am writing lots of the back-end clean up and data pulling in python but the user facing site in php. I suspect that I will need to change the python stuff to java in the feature but for now i just want to get the project up and will come back to something like java later.

Lastly don't be afraid to learn new things and push your limits, and question why is something done like this, that little extra knowledge can go a long way.

| improve this answer | |

A language is a tool, and different tools are better suited for different jobs. It is true that some languages require more skill than others, but that should not be the main criterion for choosing a language for a project. Look at your project, find out which languages are typically used for this type of project on whatever platform you plan to use, and then decide among them based on your chances of finding or attracting experienced programmers.

Also, it is not so much the language that forms how programmers think, but the programming paradigm(s) that it supports, i. e. imperative vs. functional vs. object oriented etc. Java and C# programmers think in pretty much the same way. C++ programmers may think in a variety of different ways, depending on which subset of the paradigms supported by C++ they actually use.

The skill of a programmer is not in knowing any particular language but in knowing several languages that support different paradigms, and knowing them well. That gives you the flexibility to quickly pick up whatever the current language du jour happens to be.

| improve this answer | |

LinkedIn tracks some interesting statistics about a wide range of skills including programming languages.





On these pages, you can see the name of the skill, a short description, links to related skills, a year on year trend (C++ went down 8%). You can display a bar graph that shows relative growth vs. some technologies they pick for you, size of the pool of people using the language (913k for C++), or the age break down for people using the language (31% for 18-24, 45% 25-35, and 17% 35-45). Java has about one million, and has a profile that is surprisingly similar. C# has been trending -3% y/y, has a smaller base 617k, 18-24 23%, 25-34 50%, and 35-44 20%.

For a skill like x86 assembler, there is a pool on only about 12K users, and surprisingly, 25-34 year olds are 41%, 18-24 year olds are 29%.

Use of these numbers from LinkedIn has all kinds of complications because the population of software developers is not even among age groups (18-24 9%, 25-34 47%, 35-44 31%, 45-54 17% for the term Software Development), and some of counts may relate to who uses LinkedIn (it may under represent college students not yet looking for work and older professionals who are established and not looking for work or who use person-to-person networking more than online).

http://www.eweek.com/c/a/Application-Development/Java-Drops-From-Top-Programming-Language-Spot-C-Rules-626622/ talks about language popularity, but doesn't give any characterization with regard to developer preference vs. age.

| improve this answer | |

My interested is mostly academic. It comes from the (subjective) observation and I wonder if someone has researched it a bit. Also, I'm talking about a correlation, not about a rule.

Firstly, no I am not aware of any such research.

The problem is that it is would be hard to conduct this kind of (objective) research in a scientifically meaningful way.

  • How do you objectively measure an individual programmer's "experience" and "skill"? Self reporting is obviously going to give you unreliable answers, so you have to (somehow) test these things.

  • How do you do it in a way that doesn't conflate these two measures with the other variables - specifically, the number of languages known and/or used?

  • How do you do this in a way that involves real experienced programmers? (You can't use the typical undergraduate CS student test cohort ... who are typically not experienced in any meaningful way.)

If you were a serious academic, you may be able to figure out a way to do this kind of thing. But you would first need to justify the expense of conducting the research to a funding body. And they would probably ask "What is the value of knowing the answer?". And that is a hard question to answer ... IMO.

| improve this answer | |

Not the answer you're looking for? Browse other questions tagged or ask your own question.