{"id":693,"date":"2008-10-24T12:39:50","date_gmt":"2008-10-24T02:39:50","guid":{"rendered":"http:\/\/www.somethinkodd.com\/oddthinking\/?p=693"},"modified":"2010-05-17T00:18:04","modified_gmt":"2010-05-16T14:18:04","slug":"age-membership-length-and-reputation-distribution-on-stackoverflow","status":"publish","type":"post","link":"https:\/\/www.somethinkodd.com\/oddthinking\/2008\/10\/24\/age-membership-length-and-reputation-distribution-on-stackoverflow\/","title":{"rendered":"Age, Membership Length and Reputation Distribution on StackOverflow"},"content":{"rendered":"<h2>Introduction<\/h2>\n<p>If you are a programmer, and haven&#8217;t heard of the Q&#038;A site, <a href=\"http:\/\/stackoverflow.com\">StackOverflow<\/a>, remedy that immediately.<\/p>\n<p>Inspired by a <a href=\"http:\/\/stackoverflow.com\/questions\/50094\/age-distribution-of-stackoverflow-users\">post<\/a> there, I wrote a simple web-crawler that looked at the age, membership length and reputation of the users of StackOverflow.<\/p>\n<p>I describe the method below, for people who like hearing about software. I graph the results below for people who like looking at colourful graphs. At the bottom, I have a quick conclusion for people who just want the summary.<\/p>\n<h2>Method<\/h2>\n<p>I wrote a simple Python script that fetched each user&#8217;s profile page, and snipped out the user&#8217;s age (if present), their reputation and the numbers of days they had been a member of StackOverflow. (Code and data available upon <a   rel=\"nofollow\" id=\"sto_emailShroud0\" href=\"http:\/\/www.somethinkodd.com\/emailshroud\/emailaddress.php?encryptedAddress=moc%40%40edoCehTevaHIyaM.ddoknihtemos&amp;ver=2.2.1\">request<\/a>.)<\/p>\n<p>The script ran for around 18 hours around October 23-24, 2008.<\/p>\n<p>Deleted users (having missing user pages) were ignored leaving 57,144 users.<\/p>\n<p>Using feedback from the original post, I treated all ages 8 and below, and also the  maximum permissible age of 88 as missing. This removed several outliers. People&#8217;s ages are self-reported, and may be wrong or biased. Just over 30,000 users had valid ages.<\/p>\n<p>I grouped reputations into several buckets. The range of the buckets were sized on a logarithmic scale. A reputation score of 1 was put in its own bucket, as it represents the default reputation. Probably, the majority of these users are not active.<\/p>\n<p>I then hastily constructed some Excel charts. I am using the default appearance for Excel charts; sorry for any perceived unprofessionalism, but this was a hasty, and unprofessional, excercise.<\/p>\n<h2>Results<\/h2>\n<p>Here are the results, presented as charts.<\/p>\n<h3>Number of Users By Age<\/h3>\n<p>The first graph reproduces the original post. It shows the age of the users.<\/p>\n<p><a href=\"http:\/\/www.somethinkodd.com\/oddthinking\/wp-content\/uploads\/2008\/10\/number-of-users-by-age.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.somethinkodd.com\/oddthinking\/wp-content\/uploads\/2008\/10\/number-of-users-by-age-300x184.png\" alt=\"\" title=\"number-of-users-by-age\" width=\"300\" height=\"184\" class=\"alignnone size-medium wp-image-698\" srcset=\"https:\/\/www.somethinkodd.com\/oddthinking\/wp-content\/uploads\/2008\/10\/number-of-users-by-age-300x184.png 300w, https:\/\/www.somethinkodd.com\/oddthinking\/wp-content\/uploads\/2008\/10\/number-of-users-by-age.png 733w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<h3>Number of Users By Reputation<\/h3>\n<p>This graph shows over half of the users are sitting on a reputation score of 1.<\/p>\n<p><a href=\"http:\/\/www.somethinkodd.com\/oddthinking\/wp-content\/uploads\/2008\/10\/user-count-by-reputation.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.somethinkodd.com\/oddthinking\/wp-content\/uploads\/2008\/10\/user-count-by-reputation-256x300.png\" alt=\"\" title=\"user-count-by-reputation\" width=\"256\" height=\"300\" class=\"alignnone size-medium wp-image-701\" srcset=\"https:\/\/www.somethinkodd.com\/oddthinking\/wp-content\/uploads\/2008\/10\/user-count-by-reputation-256x300.png 256w, https:\/\/www.somethinkodd.com\/oddthinking\/wp-content\/uploads\/2008\/10\/user-count-by-reputation.png 386w\" sizes=\"auto, (max-width: 256px) 100vw, 256px\" \/><\/a><\/p>\n<h3>Membership Growth<\/h3>\n<p>This graph shows how StackOverflow has grown in terms of members. The sharp spike almost certainly represents the growth after the site moved from Private Beta to Public Beta. You may have heard Jeff Atwood and Joel Spolsky discussing this curve on their StackOverflow podcast.<\/p>\n<p><a href=\"http:\/\/www.somethinkodd.com\/oddthinking\/wp-content\/uploads\/2008\/10\/membership-growth.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.somethinkodd.com\/oddthinking\/wp-content\/uploads\/2008\/10\/membership-growth-300x184.png\" alt=\"\" title=\"membership-growth\" width=\"300\" height=\"184\" class=\"alignnone size-medium wp-image-697\" srcset=\"https:\/\/www.somethinkodd.com\/oddthinking\/wp-content\/uploads\/2008\/10\/membership-growth-300x184.png 300w, https:\/\/www.somethinkodd.com\/oddthinking\/wp-content\/uploads\/2008\/10\/membership-growth.png 733w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<h3>Reputation by Membership Length<\/h3>\n<p>This chart is a little more complex. It shows how people&#8217;s reputations are associated with the time they have been on the site.<\/p>\n<p><a href=\"http:\/\/www.somethinkodd.com\/oddthinking\/wp-content\/uploads\/2008\/10\/reputation-profile-by-membership-length.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.somethinkodd.com\/oddthinking\/wp-content\/uploads\/2008\/10\/reputation-profile-by-membership-length-300x184.png\" alt=\"\" title=\"reputation-profile-by-membership-length\" width=\"300\" height=\"184\" class=\"alignnone size-medium wp-image-700\" srcset=\"https:\/\/www.somethinkodd.com\/oddthinking\/wp-content\/uploads\/2008\/10\/reputation-profile-by-membership-length-300x184.png 300w, https:\/\/www.somethinkodd.com\/oddthinking\/wp-content\/uploads\/2008\/10\/reputation-profile-by-membership-length.png 936w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>The left part of the graph represents recent joiners. The right part of the graph represents the old-timers.<\/p>\n<p>The gentle slope down to the right represents the obvious fact that, the longer you have been a member, the more likely you are to have a higher reputation.<\/p>\n<p>The sudden drop downwards in the middle represents the date of the public beta starting. Data to the right of the spike represent beta testers.<\/p>\n<p>One way to use it is to find out how long you have been a member along the bottom, and rule a line straight up. The different coloured sections show what percentage of people have what reputation, so you can see your very rough percentile position compared to others.<\/p>\n<h3>Reputation by Age<\/h3>\n<p>This is the result which originally inspired this project. It shows the relationship (or the lack of it) between age and reputation.<\/p>\n<p>For this chart, I removed all ages which had less than 10 data points to ensure the data is meaningful. (Why 10? I used the sophisticated statistically modelling technique called &#8220;Feels about right&#8221;.)<\/p>\n<p><a href=\"http:\/\/www.somethinkodd.com\/oddthinking\/wp-content\/uploads\/2008\/10\/reputation-profile-by-age.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.somethinkodd.com\/oddthinking\/wp-content\/uploads\/2008\/10\/reputation-profile-by-age-300x184.png\" alt=\"\" title=\"reputation-profile-by-age\" width=\"300\" height=\"184\" class=\"alignnone size-medium wp-image-699\" srcset=\"https:\/\/www.somethinkodd.com\/oddthinking\/wp-content\/uploads\/2008\/10\/reputation-profile-by-age-300x184.png 300w, https:\/\/www.somethinkodd.com\/oddthinking\/wp-content\/uploads\/2008\/10\/reputation-profile-by-age.png 733w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>The result seems to me to be pretty flat, within the margins of error. There doesn&#8217;t seem to be a strong correlation. (No rigourous statistical measures were harmed in the making of this assessment.)<\/p>\n<p>Don&#8217;t be fooled by the dips around 16 and 54. That is just Excel&#8217;s graphing tool treating missing values as 0.<\/p>\n<h3>Summary\/Conclusion<\/h3>\n<p>Users of StackOverflow who aren&#8217;t reticent to share their age are mainly in their late-twenties to mid-thirties, with a moderately long tail towards retirement age.<\/p>\n<p>About half have a reputation of 1. Another quarter have a moderate reputation between 20-199. The top 1% have reputations above 2,000.<\/p>\n<p>The longer you are on StackOverflow, the more likely you are to have a higher reputation. Duh! Beta testers were more likely to be active users (reputation-wise) than the general public. Double duh!<\/p>\n<p>Age (within the typical ranges) doesn&#8217;t have a big influence on reputation. Outside the typical ranges, there was insufficient data to be sure.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Inspired by a <a href=\"http:\/\/stackoverflow.com\/questions\/50094\/age-distribution-of-stackoverflow-users\">post<\/a> there, I wrote a simple web-crawler that looked at the age, membership length and reputation of the users of StackOverflow.<\/p>\n<p>I describe the method below, for people who like hearing about software. I graph the results below for people who like looking at colourful graphs. At the bottom, I have a quick conclusion for people who just want the summary.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_s2mail":"","footnotes":""},"categories":[28,21],"tags":[289,308,100],"class_list":["post-693","post","type-post","status-publish","format-standard","hentry","category-doubleplus-geek","category-observation","tag-graphs","tag-stackoverflow","tag-statistics"],"_links":{"self":[{"href":"https:\/\/www.somethinkodd.com\/oddthinking\/wp-json\/wp\/v2\/posts\/693","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.somethinkodd.com\/oddthinking\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.somethinkodd.com\/oddthinking\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.somethinkodd.com\/oddthinking\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.somethinkodd.com\/oddthinking\/wp-json\/wp\/v2\/comments?post=693"}],"version-history":[{"count":9,"href":"https:\/\/www.somethinkodd.com\/oddthinking\/wp-json\/wp\/v2\/posts\/693\/revisions"}],"predecessor-version":[{"id":1232,"href":"https:\/\/www.somethinkodd.com\/oddthinking\/wp-json\/wp\/v2\/posts\/693\/revisions\/1232"}],"wp:attachment":[{"href":"https:\/\/www.somethinkodd.com\/oddthinking\/wp-json\/wp\/v2\/media?parent=693"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.somethinkodd.com\/oddthinking\/wp-json\/wp\/v2\/categories?post=693"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.somethinkodd.com\/oddthinking\/wp-json\/wp\/v2\/tags?post=693"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}