StackOverflow, a popular (and the best) site for programming queries, has published its annual developer survey. Respondents included:
26,086 people from 157 countries participated in our 45-question survey. 6,800 identified as full-stack developers, 1,900 as mobile developers, 1,200 as front-end developers, 2 as farmers, and 12,000 as something else.
That is a decent sample size, though not necessarily representative of the entire developer community.
What is notable? Here are a few things that stood out for me:
Developers are young. The largest group is 25-29 and the average age 28.9 years old.
92.1% of respondents are male. Ouch.
Software is still a good bet for a career even if you have no qualifications. 41.8% declared themselves self-taught. That said, it is not clear to me what proportion of respondents do programming as their main job. Presumably not the two farmers?
If you look at the “Most popular technologies”, there is a striking decline in C# over the last three years:
2013: 44.7%
2014: 37.6%
2015: 31.6%
That’s a shame because C# is an excellent language. The reason? It’s speculation, but probably means less Windows development, whether server or desktop.
Swift is top of the “most loved” list, meaning a language that developers intend to continue with. Salesforce tops the “most dreaded”, meaning a platform that developers cannot wait to abandon, followed by Visual Basic.
What OS do developers use on the desktop? Here, Windows remains the biggest, but is declining:
2013: 60.4%
2014: 57.9%
2015: 54.5%
Windows XP has declined dramatically, down from 10.8% in 2013 to 1.0% today.
Where have developers gone, if they no longer use Windows? Mac is up over the period, but only by 2.8% share. 3.5% are using “Other”, interesting (Chromebook?).
I’ll stop there; I don’t want to spoil the survey.
Conclusions? This puts some data (albeit imperfect) on the theory that Microsoft is losing its grip on the developer community – though note that Microsoft’s technology in general remains popular, just less so than before.
Postscript: Several on Twitter have observed that most languages have declined over the period, not just C#. Here’s the difference in share from 2013 to 2015 for some of them:
JavaScript: –2.2%
SQL: –11.6%
Java: –5.1%
C#: –13.1%
PHP: –5.1%
In other words, all of the top 5 have declined, though C# has declined the most.
What does this mean? Since the numbers sum to more than 100%, it might imply more specialisation. Or it might just say something about how the StackOverflow community has evolved, since that is the source of the data. Still, it seems to me that you cannot spin this as good news for Microsoft, though it might be less bad than it first appears.
Why ouch on the percentage male?
The best for the job are being hired and are responding. That’s exactly what you want. It isn’t like there are laws banning women from working in computers, nor is there any institutional directive preventing women from becoming programmers.
THEY CHOOSE NOT TO. And if you try and create an artificial balance, all you’ll get is bad programmers don’t a job that they’re not equipped to do. It’s just complete leftist BS that makes people think that somehow there’s something wrong with the vast majority of programmers being male as if somehow the world is missing out as a result or women are being oppressed.
If and when women want to get into computer science, they can and will. Nothing is stopping them other than their own decision making so let’s all stop pretending and accept that like Fire Fighting or construction or strippers or any number of other jobs it’s OK to have a very large skew in the demographics of a job.
I agree that the drop in C# is interesting, and is largely caused by MS but I think you’ll see a flattening or a reversal next year as Windows 10 and Visual studio 2015 comes out with native tools for Android and iOS development come along. C# will be the language of choice for native apps across all platforms. If this doesn’t happen, then Windows is dead, because Windows became what it is because of developers. (i.e. the hated Visual Basic 6)
It is worth pointing out that the StackOverflow team, unlike the previous commenter, does see the gender imbalance in programmers as a cause for concern. To quote from the SO developer survey:
Software development has a gender balance problem. Our internal stats suggest the imbalance isn’t quite as severe as the survey results would make it seem, but there’s no doubt everyone who codes needs to be more proactive welcoming women into the field.
This is pretty obvious to anyone who is involved in recruiting devlopers. We need to encourage women to into programming, and just as importantly, remove any barriers to retaining them in the field. Inane comments like ‘it’s just complete leftist BS‘ does nothing to help, and sounds like something from a #GamerGate nutcase rather than someone who actually works as a programmer.
I have heard something similar. Don’t take this too serious but a certain unwillingness to go beyond what started with EFW has been experienced. That’s one observation here but a very qualified one. That’s neither representative nor does this observation represent more than an opinion. The good things are here but fairly used.
C# is ASP.net. Java as well as .net allowed to go beyond what web technology related programming did offer when operating system functionality came into play. C# and .net are very powerful when a big bunch of functionality has to be put into ‘one’ solution. When architecture starts to dominate as it’s vital. C# is a shovel.
The Microsoft approach is a very American one.
Windows. Big ice cubes melt slowly, but they do. Imo @James Hancock a Visual Studio 2015 will not turn around anything. The same thinking that made C# spread is the reason that what has been provided by ‘the’ vendor will be used anywhere else too. The success of .net has to do with ASP.net and ADO.net. Wonder what application implemented over 10 years now or longer is not already in maintenance more or less.
I don’t read the numbers as a sign of distrust. After 20 years a platform should offer a solution for almost everything and Windows does. The Wintel dominance was a special very unique period. The application is a Wintel child and C/S too. Both origin from earlier time but found the perfect environment and condition to spread together with Windows.
Linux for the developer is a very attractive alternative. Maybe not for the user but that does not matter. Don’t underestimate the infrastructure vs. application approach. Many ready made easy customizable solutions do exist that are maybe not perfect but versatile and easy to adopt. C# and .net have undergone massive gold plating.
Mr. Swift 🙂 The man who freed the ARPANET. (2πR)
People don’t use environments forever. After 10 years .net people are looking for something different. Architecture can and obviously did lead to reuse and code that’s easy to maintain or budgets that relied on that promise.
A PC using open source stuff is not very dependent on a special operating system in general. This will very likely hurt Windows a lot more in the case of developers as other alternatives grow stronger. One minus on Windows is a plus anywhere else, even if it’s not the same developer. Young developers do not benefit from what Windows offered to us. The are not aware of the same pain we did deserve in the 90s. They grew up in a world that worked and improved tendentiously. Before the paradigm shifts things come to an end, because going beyond leads the various ways to address the same issue over and over again. That happened more and more over the last years. You will not get such a big rewrite of almost all software solutions so soon as the opportunity to consolidate was a great one. The time was right, the technologies have been in place and the money too as well as a momentum left from Y2K and the Webhype. Even if that’s long ago it helped.
Not sure why others do not use Windows anymore, but here are my reasons:
– a lack of a basic toolbox, which with Linux/Mac out of the box. bash, ssh, scp, rsync, grep – those are the tools I need on a daily basis and the Windows equivalents just do not cut it. Everything I do nowadays involves the network (I’m doing webdevelopment as well as embedded Linux development) and the unixoids allow me to work more efficiently.
– performance issues: Visual Studio feels incredibly slow to me nowadays. To a point where I hate just opening that darn thing. It used to be that VS was fast and Java IDEs like Eclipse were slow. Now Eclipse feels snappy when compared to VS (Eclipse still sucks for other reasons). Just creating a project seems to take forever, what the hell is the thing doing in background? Creating a few files cannot possibly take that long.
– the inconsistent UI: forcing Metro on Desktop users was a huge mistake. Win10 gives me performance issues that I blame on the unholy mess of Win32 mixed with WinRT.
– the constant nagging about signing up with my online account. I do not want to give them any personal information, why are they constantly bugging me about it?
I’m doing all my development on Xubuntu (tried the Mac also). I’m not a hundred percent satisfied with Linux either and I wish Microsoft would come up with a great Desktop OS for the working developer again (WinNT was their masterpiece in my opinion).
And in 2010 there were more than 50% of C#-aware developers on StackOverflow: https://www.surveymonkey.com/sr.aspx?sm=QpfonhAfJ6Q_2b96IzwzwYHG8rRP95fT_2fNNAWjvnLWTzw_3d. So I’d say that doesn’t reflect C#/.NET share dynamic in the whole world as much as SO specific user base. And SO transitioning from a small .NET-centric site running on two Windows servers to a Top-50 site with a much broader audience.