During September, I collected answers on a survey about programming languages from people who work in one of the many companies that make up the Schibsted family. The survey is neither requested, sanctioned, approved or even suggested by anyone in management, in any Schibsted company. It is entirely my own personal pet-project, because I’m interested in these things.
The survey opens with the following introduction:
In 2012, there was a discussion about technology choices, and
particulary programming languages to use in FINN. As always in such
discussions, claims like “It’s impossible to hire people who know
language X, so we need to always use Java” or “We can’t expect
programmers to learn a new language just because we think language Y
would be a better fit” were put forward.
Personally, I’ve never liked those arguments, because they contradict
what I think defines a “good programmer”, and I’m optimistically
hoping that we only hire “good programmers”. Also, instead of
opinions, beliefs, rumours and hearsay, let’s be data driven in these
discussions! So I decided I wanted to put it to the test, and created
a survey and posted it for all the company to see.
The results from that survey were blogged about here:
Now, almost three years later, a lot of changes are happening. FINN
is becoming more close with it’s Schibsted brethren, Schibsted itself
is turning towards a more technological outlook, and I felt it was
time to get an updated view, and why not involve all of Schibsted
while we’re at it.
So, “The great big Schibsted programming language survey 2015” was
created, and hopefully it will make the rounds in all of Schibsted
and gather some interesting, fun, surprising and (with a bit of luck)
About the responses
309 people responded to the survey, which is more than many of my co-workers thought would respond.
Over 50% of respondents are in their thirties, and if we look at the ages from 26 to 40, we cover over 75% of respondents. On gender, it’s even worse, with a whopping 93.5% of respondents admitting to being male. We also seem to shun inexperienced people, with 42% having 10 years of experience or more, and only 2.3% of respondents fresh from school.
It seems we have some work to do with regards to diversity.
According to Arena (The Schibsted-wide intranet), there are just under 125 companies in the Schibsted familiy. In those companies, 9355 people are employed.
That means somewhere between 20% and 30% response rate in the target group, which isn’t too bad.
Unfortunately, our results are not representative. FINN is by no means the largest company, but supplied the most answers with 80 respondents. The second largest group was the various incarnations of Schibsted Product & Technology (SPT), which supplied 53 responses if we combine them all. Those two supplied over a third of all responses. Third place belongs to Schibsted Tech Polska (16 responses), which beat Wilhaben (15), Le Bon Coin (13), Blocket (12) and Aftonbladet (10) to close out the top 7.
This probably means that the results are more a description of FINN and SPT than a description of Schibsted in general.
Those 309 people listed 103 different companies, which is about 20 less than the total number of companies. That sounds great! Except I’m fairly certain that’s not what I have. Trying to normalize the data entered here, fixing variations in spelling and other issues I’ll get back to in a minute, I reduced it to 45 companies, one of which was Schibsted itself.
Those issues are companies that don’t exist (atleast according to Arena)! I’ve tried my best to guess which company was really intended, but might have made mistakes here and there. In some cases, I had no idea which company to use instead, so I just left it as is, even if the company is not listed as part of Schibsted. Some examples: Schibsted Tech Madrid, SPT - Madrid, SCM Spain, SCM Central, Schibsted Norge Tech, Plan3 and Schibsted ATE. None of these were listed anywhere, but I’ve tried my best to place them some logical place.
Another problem was SPT aka Schibsted Products & Technology. SPT is techically four companies, SPT Norway, SPT Sweden, SPT Spain and SPT UK. Most people in SPT simply answered SPT, but they estimated as little as 20 people working in SPT, and as high as 250. I’ve disregarded their disagreement, and combined them all to just SPT.
Two people said they work in Schibsted, but they had wildly differing opinions about how many people work in Schibsted. One said 10000 total, 1500 technical, the other said 1000 total, 200 technical.
Disregarding the problems here, let’s look at the numbers entered. Using the averages for each company and summing up, we arrive at roughly 4500 people working in those 47 companies. For technical positions, the sum of averages is roughly 1600. Since we have responses from about half the companies, that fits nicely with the total being just under 10000.
Languages in regular use
What kind of developers are we?
The most popular self-description is “a backend developer” (124), followed closely by the “full stack developer” (82). There are slightly more devops people (29) than “frontend developers” (25). Of course, the most interesting fact about this question, is all the various roles I failed to think of. Over 40 other descriptions were entered in the “Other” box, some of them even by more than one person! Most notably the 10 or 11 data scientists (depending on how you interpret descriptions). Mobile developer or App developer is another one that should have been one of the choices.
The languages we know
PHP and Python follow, at 212 and 204 respectively. Personally I’m pleased to see so many knowing Python, and can only blame childhood mistakes for so many people knowing PHP. Dropping below 200 respondents we find R at 188 and C++ at 185. Ruby and Perl close out the top 10 languages, with 164 and 146. Hopefully all these people have learned Perl as a defence mechanism: Know thy enemy and all that…
Of the more hip languages on the JVM, Scala comes out on top, with 117 people claiming to know it, while Groovy at 94 and Clojure at 53 haven’t convinced quite as many people that they are useful to know. Clojure isn’t even in the top 20.
Outside the JVM, the top three contenders are all in the Microsoft family: C# (106), Basic (104) and Visual Basic (103). From far out in left field comes AWK at 98 respondents, while Pascal, the old favourite of so many, are known by only 86 people. Go has a sizeable following, at 81, narrowly beating Objective-C at 77. To close out the top 20, Haskell lays claim to the twentieth spot, with 61 people knowing what the heck Monads are.
Moving into the twenties, CoffeeScript ties with Clojure and Prolog at 53, while Common Lisp has managed to stick in the head of 47 people. Lua is known by 42, while Erlang and Scheme are tied at 31. Microsoft hasn’t quite managed to get their PowerShell into as many heads as Bash, but 30 people are willing to admit knowing it. Swift (29) and Tcl (27) close out the top 30.
Fortran (26) and PostScript (21) are starting to fall out of fashion, and we can point at 20 people working in various norwegian companies who probably got their education at the University of Oslo, starting with Simula as their first language. The story behind the single non-norwegian Simula-proficient person at Aftonbladet would be interesting to hear I imagine (or is it simply a norwegian who has moved to Sweden?).
Other notable mentions are 19 people who know Smalltalk, 11 people knows D, a whopping 10 people have managed to learn Brainfuck, while 9 people know Rust and F# (not the same 9 though). The tail is quite long, and old heroes like Forth (8), OCaml (8), Standard ML (4), Delphi (2), Modula2 (2) and Ada (1) are still hanging on. There’s even a handful of people who knows some dialect of assembler.
What can we use?
Let’s take a close look at which languages some of the larger companies (in terms of number of respondents) could and should use.
At FINN, some people would be surprised to see that we are better prepared for a switch to C or Ruby than we are prepared for a switch to Scala. With 48 people knowing Scala, and 42 knowing Groovy, any of those two would be doable. We’d be stuck quite quickly if we go for Go, with only 16 of 80 knowing anything about it, and Clojure isn’t doing much better, at 26 out of 80. Half the company already knows C++, Python or PHP, so we could use those, while Perl, Pascal and Basic requires training more than half the company. Last year we had both a Clojure course (again) and a Haskell course for those interested, and 26 and 24 people managed to pick those up enough to click the right boxes.
SQL and its many variations
When talking about databases, it’s easy to think SQL is just “one thing”, and if you know SQL, you can work with any database. And it’s somewhat true, but each database has it’s idiosyncrasies. This becomes especially clear when writing stored procedures, where basic SQL is lacking in control structures. So which database should we be using, really?
PL/pgSQL, the dialect used in PostgreSQL, is known by 193 respondents, so PostgreSQL seems like a good choice. SQL/PSM, which is used by MySQL and a few others, is known by 159 people, is a good second choice.
Of the large commercial databases, Oracle is clear out in front, known by 143 people, while runner up T-SQL used by both Microsoft SQL Server and Sybase is at 106. Any other contenders in the fight can just pack it in and go to bed. Fifth place goes to SQL PL, used by IBM DB2, known by only 32 respondents!
PSQL, used in Interbase and Firebird, makes a surprise showing at 18, while PL/PSM, the less used dialect supported by PostgreSQL has 17 users. Of the remainders only Watcom-SQL, used in some versions of Sybase, manages double digits, at 10 respondents.
So, how good are we at what we do?
The results here are somewhat skewed by the fact that people will naturally be more skilled in the languages they use regulary, and the companies with the most number of respondents use only a few of the languages regulary. As a result, there are more Java-experts than any other kind of experts. 102 respondents consider themselves Java-experts. Java is also the only language where there are more experts than any of the other “ranks”.
Languages we don’t really know are C#, Clojure, CoffeeScript, Go, Groovy, Objective-C, Scala and Swift. In fact, Clojure is also the only language where nobody considers them selves experts.
The numbers are perhaps more useful if we separate out the people who don’t use a language in their current work, and then look at the distribution of skills in each group.
I’ll pick a few interesting ones, graphs for all are available at the end.
Java is almost symetrical among the “amateurs”. Most amateurs are about average, but of the rest, less and more knowledge is more or less equally distributed. This is in sharp contrast to the “pros”, where a large majority consider themselves experts. While it’s easy to think that in the group of “pros”, it will always be many experts, Java, Objective-C and PHP are the only languages where the experts are the largest group.
When comparing pro and amateurs, Objective-C really stands out. Most of the pros are experts, but among the amateurs it’s virtually an unknown language.
In this kind of survey, there are always some smartypants. Five people avoided the question with variations of “I’m not able to conceive of a project where the language I like the most is the perfect choice, so I’ll say it depends on some hypotetical project specification that I have no say over”. Other clever answers are Fortran, Visual Fox, and T-SQL. Some people prefer the simple over the complicated, and would go with languages usually reserved for small utility-scripts like AWK and Bash.
73.6% of us will sit down and learn a new language just to learn something new. 65.1% will accept learning something new if they need it for work, while only 41.4% are willing to do the same for non-work.
If we are so easy to motivate, what holds us back?
It could be the number of languages we think is “neccessary” to know. Knowing more than 6 languages is not neccessary in most peoples view, only 9.9% of us thinks it’s worth knowing 7 or more languages. 29% of us think 5 languages is good enough, while 6.8% thinks knowing one language well enough is all you need to be a good programmer.
The majority seems to think between 3 and 5 languages should be our target. 70% think knowing 3, 4 or 5 languages defines a good programmer.
Nobody thinks you’re any good if you know 9 languages, so if that’s you, you should set out to learn atleast one more as soon as possible. Or just forget one. :-D
There’s probably more here
I initially said I would blog about the results a couple weeks after the end of the survey. That ended up being a couple months instead. For that reason I have skipped looking at a few questions that could be interesting, but time consuming to look at.
- How many languages do you know vs. How many languages does a good programmer know
- Which language currently not in use in a company, is most popular in the company?
- Does experience correlate with number of languages?
- What else does experience correlate with, if anything?
- Skill level in your favorite language
I’m sure there are a number of other interesting things to look at, so I’m hoping someone else wants to take a look at the results and see what they find. The link is below. The first sheet is the raw, unedited responses. The second sheet is where I have tried to manually clean up some of the answers to get more sense out of the results. And all the other sheets are various views and tables I’ve used to make this post.
Let me know if you blog about these results, and I’ll add a link here. Or just post in the comments below.