The Language Lock-in Game

Let's play the Language Lock-in Game.

The rules of this game are fairly simple.
You live in Seattle in 2015 and get to choose one or two popular programming languages to put on your resume.

Which would you choose that would give you the largest number of job offers?

I built the following tables from LinkedIn searches, got simple counts of advertised jobs posted in the last 30 days for the Seattle area. I chose "JOBS > Advanced Search" to do this query:

C++ OR C# OR Java OR Python OR Ruby OR PHP or Perl OR JavaScript

Total: 4427 jobs listed in the past month for the Seattle area, containing at least one of the languages listed. Strangely, changing this query to just a search for ads mentioning C++ yields almost 200 more hits than all languages OR'd, which indicates something awry with LinkedIn Searches. But let's consider it an anomoly since we won't use the OR keyword in the rest of the data.

The number is somewhere around 4000-5000 advertised openings.

Linkedin search counts are also clearly off for some terms. Seaches for C++ vs. C\+\+ give drastically different results, with the latter delivering about 1000 more hits on the same search. Still, given the character processing oddities and the search count problems, searches seem more reliable for other language names.

Many listings in these counts are also likely duplicates and reposts. Let's consider duplicate posts as not being consequential. Duplicates flatten the differences between languages, because languages in rarer, hard-to-fill positions will be advertised more often than languages associated with more common, easy-to-fill positons. But re-posts only inflate low numbers linearly and assumably have an upper limit, but shouldn't mask differences in magnitudes.

In other words, ads for a job involving Scala (a rare language) may be hard-to-fill, and therefore the ad may be reposted 4 times in a month. However, it shouldn't skew things too much when compared to Java jobs, which are common, easier-to-fill, and whose counts reach into the 1000's per month.

Also, I did not include C as a language because it is normally replaced by C++ as search term, and I don't trust the results for searching the letter 'C' on LinkedIn.

Additionally, some ads may list many languages, 5 or more. Knowing up to two of the five presumably wouldn't be enough to get an interview. But a job ad that requires too many languages lacks credibility, and is analagous to reading the resume of someone who claims to know too many languages. Let's regard these ads as uniformly-distributed noise, and ignore their effect on proportions.

Finally, many times languages mentions are treated as "you must know either x or y" in ads. However, when searching language pairs we use "you must know x and y". The searches I did do not distinguish between these two relations, making for false inflation of the specificity of generalized requirements. But since X OR Y is usually a pairing of languages of the same type, inflation of counts would be generally limited to comparisons of the same type of language.

So, with all that out of the way, and tongue-firmly-in-cheek, let's look at the most "in-demand" mainstream languages being asked for by LinkedIn HR posts over the past month (April 2015):

Language     | Count
-------------|-------
C++          |  4650
Java         |  2227
C#           |  1821
JavaScript   |  1226
Python       |  986
Ruby         |  700
Perl         |  685
Php          |  317

Clearly, almost EVERYONE wants a programmer to possess C++ skills. Even if the number is off by 1000 by LinkedIn search, listing C++ on your resume is roughly twice as likely to match a position's requirements than any other language, 4 times more likely than the median, and 12 times more likely than someone who can only list weakest language in demand (PHP) on their resume.

Does this sound reasonable? Honestly, I don't know. C++ is often used, but by my own experience, not as much as other languages as it is too expensive to develop with for most time-intensive projects. Largely, it is a language requested for interviewing. In practice, the language is less used due to expense. But let's assume you need it just to talk to people.

So what would you select as a second language? What effect does knowing a second language have on your marketability?

Ad mentions of strongly-typed languages paired with weakly-typed ones:

            C# | C++ | Java
---------------|-----|-------
Python     253 | 464 |    532
Perl       154 | 348 |    396
Ruby       167 | 288 |    429
JavaScript 474 | 418 |    556
PHP        68  | 92  |    142

In the table above, the numbers are more closely-knit, and are subsets of the single language counts (reflecting the AND relation of the search terms) Since the conventional practice among applicants and advertisers is to pair a weakly-typed language with a strongly-typed one when wording a skill profile, the table cross-counts both.

The maximum effect of learning a secondary weakly-typed language is approximately a 10%-20% improvement in number of jobs an applicant matches, with JavaScript generally being first choice, and Python following closely, depending on the strongly-typed language chosen.

C# favors being paired with JavaScript, while Java and C++ favor being paired with either JavaScript or Python equally. The difference between the counts isn't very remarkable.

JavaScript may be a special case, since it the defacto language of the web browser, but is also used outside the browser for server-side tasks. It is less used for disk and systems scripting, the class of coding Python, Ruby and Perl are usually employed to do.

But since we are considering weakly-typed languages why not compare their pairings too? Many programmers build careers on weakly-typed languages.

Mentions of Weakly-typed language pairings:

            Python | Perl | Ruby | JavaScript | PHP
-------------------|------|------|------------|----
Python      986    | 400  | 363  | 228        | 316
Perl        400    | 685  | 238  | 104        | 91
Ruby        363    | 238  | 700  | 240        | 118
JavaScript  228    | 104  | 240  | 1226       | 1223
PHP         316    | 91   | 118  | 1223       | 317

It is interesting to note that upgrading skills to a second weakly-typed language begins to exhibit diminishing returns in almost every case except with PHP and JavaScript. This outlier could be false, but makes sense.

PHP is the weakest language in demand, but when paired with JavaScript skills becomes the most sought-after pairing of all weakly-typed languages.

If you're a Perl programmer, it's best to graduate to Python rather than Ruby, but only marginally better.

Clearly, a PHP programmer who learns JavaScript will quadruple or quintuple their skill-matches while other language pairings will only improve job requirements matches by 50%-75%. A JavaScript programmer, however, will not gain any marketability by learning PHP. This stands to reason, due to the specialization of JavaScript and PHP with web programming.

How does this pairing stack up against learning two strongly-typed languages?

Mentions of strongly-typed language pairings:

            C#   |C++  | Java
-----------------|-----|-----
C#          1821 |2114 | 851
C++         1149 |4650 | 1354
Java        851  |1354 | 2227

Java and C# programmers do not benefit well by claiming cross-learning the other language, and because the two languages are similar.

However, gains can be made for C# programmers to learn C++, compared to Java programmers, despite the aforementioned LinkedIn search count anomaly.

C++ programmers who invest time in learning C# or Java probably stand more to profit than learning weakly-typed languages.