This may be hard for the community to answer, but I am wondering for what reasons did the Stack Exchange team choose to use the Microsoft stack?

  • 6
    Because C# is the language the (original) developers felt more comfortable with. – yannis Jan 29 '13 at 17:57
  • 21
    Atwood argued hard for phpBB. – Anthony Pegram Jan 29 '13 at 18:06
  • 10
    IDE, framework, performance, syntax, etc etc. Come to the darkside. – user1228 Jan 29 '13 at 18:08
  • For any responses I'd appreciate sources if available btw. – Mike Graf Jan 29 '13 at 18:14
  • 5
    because it's awesome – Sam I am says Reinstate Monica Jan 29 '13 at 18:18
  • 6
    @AnthonyPegram: Sure he did. – user102937 Jan 29 '13 at 18:25
  • 6
    @RobertHarvey - I suspect Mr. Pegram was joking. At least I hope he was. – ChrisF Jan 29 '13 at 19:06
  • I think you have a legitimate and potentially interesting question, but there's a lot of content here which can be trimmed out of it. I'm going to take a pass at cutting out some of the canonically unnecessary text, but you should make one yourself as well. – user206222 Feb 5 '14 at 23:41
  • Alright, I've made some pretty heavy edits to cut out most of the not-as-relevant content. Please let me know if I've cut out anything of significant value to you - feel free to edit anything back in, as well. – user206222 Feb 5 '14 at 23:44
  • @AnthonyPegram, "argued hard for phpBB"... I don't get... What's the joke? – Pacerier Mar 10 '15 at 19:18

From the transcript of episode three of the stackoverflow podcast

Atwood: We are not personally going to be language agnostic, because we need to actually build the site. And in terms of people actually working on it, Joel's in an advisory role, I'm gonna be writing code, and then a friend of mine, Jarrod, I'll be working very closely with. So it's sort of like 1.5 developers, so I need to actually get things done. In order to do that, I'm gonna fall back on what I know, and what I know is essentially ASP.NET. So ASP.NET is gonna be the platform

  • 2
    Jarrod would probably like his name being spelled right, updated the transcript! – Nick Craver Jan 29 '13 at 18:47
  • @NickCraver I guess someone could go ahead and update these other transcripts. I'd do it but this just gives me a blank page :) – Some Helpful Commenter Jan 29 '13 at 19:59
  • 1
    The podcasts have come a long way from Skype and a $20 recorder program. I think they even use professional microphones now. – user102937 Jan 29 '13 at 23:23
  • no wonder its so buggy – Bounder and a cad Aug 26 '14 at 17:13

Because it's sexy. Everything else being relatively equal: go with what you know, it's a huge time saver. Also, we've found the .Net platform to scale very well.

  • 16
    Only a true programmer can refer to coding as "sexy". – animuson Jan 29 '13 at 18:23
  • Correct me if I'm wrong, and this isn't at all a contradiction to your answer, but didn't you guys also find .NET's Entity Framework to not scale well at all? Isn't that why you guys went with a micro orm? – Adam Rackis Jan 29 '13 at 18:25
  • 6
    @AdamRackis - we never used EF, we did use Linq2SQL (still exists in many places) and did find major performance problems (internal locks, etc.). Where we find a problem with L2S, we write raw SQL with Dapper. When we find C# too slow, we go to IL...whatever tool is needed and makes sense we'll go with, but in general I'd say 95% or more of our code is C#. – Nick Craver Jan 29 '13 at 18:34
  • @Nick - pragmatism at its finest. Out of curiosity, did anyone have a Friday afternoon free and test to see if EF suffered from the same problems as L2S? – Adam Rackis Jan 29 '13 at 18:36
  • 5
    @AdamRackis - oh yes, it's really slow (more so than L2S), check out the comparison tests in the dapper repo: code.google.com/p/dapper-dot-net – Nick Craver Jan 29 '13 at 18:37
  • @Nick - wow. So in your opinion would you agree things line L2S and EF are more for internal corporate apps, where scaling isn't really important? – Adam Rackis Jan 29 '13 at 18:42
  • 3
    @AdamRackis - I'm not sure of the answer to that...I think most people just don't care as much about performance, and the productivity increase they offer in some scenarios is just worth it. It's hard to be objective because we're absolutely anal about performance here. If the web tier or SQL is doing over 20% CPU I'm investigating why, same goes if the render time on a question page is over 40ms. – Nick Craver Jan 29 '13 at 18:44
  • 1
    " If the web tier or SQL is doing over 20% CPU I'm investigating why". That is one of the most depressing things I've read in a while. I get told when my boxes are using less than 100% CPU as it usually means something's wrong... – ben is uǝq backwards Jan 29 '13 at 19:39
  • 6
    @benisuǝqbackwards - our SQL server is at 50% CPU right now due to a bad query pushed...if you have no headroom you can't survive that :) with the headroom, I have time to push a fix – Nick Craver Jan 29 '13 at 19:40
  • 3
    This is the first I've heard anyone actually writing IL in the wild, and having it run faster than the JITted code. Is this kind of optimization extremely rare, or is it more common than I think it is? – user102937 Jan 29 '13 at 23:02
  • 3
    Where have you found hand-coding IL faster than C#? – jjxtra Mar 18 '13 at 15:24

This question comes up over and over again and the truth of it is that the people who were here at the very beginning were simply the most familiar with the Microsoft stack. So they went with what they knew.

We use many different tools and technologies. Some are Microsoft-based. Some aren't. Don't read too much into it; we simply pick what makes the most sense to use at the time.

If you're interested, one of our recently hired developers, Jon Chan, wrote up a blog post on getting up to speed with working at Stack Overflow having come from a non-MS background.


.Net has a very familiar tool stack that the developers were already familiar with as other answers have pointed out.

It's also true that since the .Net Core rewrite .Net has been getting progressively faster. For instance this article points out that the default server (Kestrel) that is used to serve most .Net (Core and, now, 5) is wicked fast. That's super important for a site like Stack Exchange where they are processing literally millions of requests a minute.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .