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?
-
6Because C# is the language the (original) developers felt more comfortable with.– yannisCommented Jan 29, 2013 at 17:57
-
21Atwood argued hard for phpBB.– Anthony PegramCommented Jan 29, 2013 at 18:06
-
10IDE, framework, performance, syntax, etc etc. Come to the darkside.– user1228Commented Jan 29, 2013 at 18:08
-
For any responses I'd appreciate sources if available btw.– Mike GrafCommented Jan 29, 2013 at 18:14
-
5because it's awesome– Sam I am says Reinstate MonicaCommented Jan 29, 2013 at 18:18
-
6@AnthonyPegram: Sure he did.– user102937Commented Jan 29, 2013 at 18:25
-
6@RobertHarvey - I suspect Mr. Pegram was joking. At least I hope he was.– ChrisF ModCommented Jan 29, 2013 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.– user206222Commented Feb 5, 2014 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.– user206222Commented Feb 5, 2014 at 23:44
-
@AnthonyPegram, "argued hard for phpBB"... I don't get... What's the joke?– PacerierCommented Mar 10, 2015 at 19:18
4 Answers
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
-
2Jarrod would probably like his name being spelled right, updated the transcript!– Nick Craver ModCommented Jan 29, 2013 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 :) Commented Jan 29, 2013 at 19:59
-
1The podcasts have come a long way from Skype and a $20 recorder program. I think they even use professional microphones now.– user102937Commented Jan 29, 2013 at 23:23
-
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.
-
17Only a true programmer can refer to coding as "sexy". Commented Jan 29, 2013 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? Commented Jan 29, 2013 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 ModCommented Jan 29, 2013 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? Commented Jan 29, 2013 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 ModCommented Jan 29, 2013 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? Commented Jan 29, 2013 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 ModCommented Jan 29, 2013 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... Commented Jan 29, 2013 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 ModCommented Jan 29, 2013 at 19:40
-
3This 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?– user102937Commented Jan 29, 2013 at 23:02
-
3
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.