Friday, November 30, 2012

O Brother, Where Art Thou? BrainLeg: Geographical Java Developers Distribution

In this post I will present some statistics of geographical java developers distribution based on the usage of - Structural Java Exception Search Engine. Exception troubleshooting is one of the most frequent tasks every java developer faces and so BrainLeg website visits should be roughly representative of the overall java development activities on the planet.

Do you ever wonder, of all the countries in the world, which country uses java the most? What are the major java city-hubs?

As of Nov  2012, BrainLeg has about 240,000 java exceptions in its database coming from various sources - StackOverflow, various mail lists, tons of java-related forums etc. One point must be discussed before we jump to the statistics - selection bias - coverage of java technologies indexed. If a certain technology is not indexed google wouldn’t drive traffic for its exceptions to BrainLeg, and these java developers would be missing from the stats.

Having spent a lot of time on finding sources of java exceptions, I can confidently say that StackOverflow is slowly taking over the world in terms of amount of exceptions posted there as well as the breadth of topics covered. The daily average for most java-related forums is 1-3 posted exceptions, whereas StackOverflow manages to post 10 exceptions on any given Sunday, doubling and tripling that number on a weekday. And since SO is present in the dataset it should provide at least some guarantee that a variety of java technologists are included in the statistics.

And, one last note: the numbers below should be taken with some threshold, especially when comparing one to another. I tend to think that at least 30% margin should be applied when comparing any two numbers or percentages given below, to account for various sampling errors.

Ok, let’s take a look at the numbers. All statistics below cover time period Sep 1-Nov 24

Figure 1. Distribution of java developers by country:

 Note: Germany has an inflated number (by about 50%) because it includes website monitoring hits from a monitoring service location in Germany. Unfortunately it was too problematic to exclude them because over time they change agent identification as well as monitoring location IPs.

So US is leading in java developers, followed by India, and Germany/China having about the same number of java developers.

Figure 2. Distribution of java developers by US state:

As you can see, in the US the most active java state is California followed by New York state and then Texas.

Let’s take a look at java City-hubs:

Figure 3. Distribution of java developers by Cities:

A completely different picture emerges. 4 out of top 5 java hubs are located in India. And only one US city is included in the top 25 - New York City (And for some reason below Paris! But being a New Yorker I am certainly going to refer back to my note about 30% margin of error and dismiss it)

Wait, where is California?

In Figure 2, compared to New York state, California has more than two times number of java developers looking for exceptions, where are they city-wise? Drilling down into California we see the following stats which explains why none of the California cities is in the top 25 java city-hubs - most of them are quite close to each other but are spread out geographically.


I don’t think a city-level comparison should be taken too seriously - as demonstrated by previous table it is more about clustering than specific cities. However, I was shocked to discover just how dense India’s java development is (Bangalore having about the same number of java developers as the whole California and two times more than New York City). Someone will undoubtedly soon comment about quality of java developers, and yes this is something that does matter a lot and yet I believe that people do get better, and today’s junior developer is tomorrow’s senior developer.

Country-wise US is still leading but it is great to see other countries all over the world very actively using java! It would be really interesting to compare java to other languages but at the moment handles only java exceptions, so I can’t speculate about Ruby for example.

Thank you for reading, appreciate any comments and feedback!

No comments:

Post a Comment