Ask HN: Why is .NET not popular with startups?
As someone with a decade or more experience in the .NET Framework and now with .NET Core, and a healthy interest in startups, I find it frustrating I cannot apply my experience more widely.
What are you thoughts as to why .NET hasn't taken off at startups?
98 comments
[ 3.3 ms ] story [ 152 ms ] threadSome of that is changing - the developer tooling is getting free/cheap - but the rest of the stack (OS, hosting, database) still isn't free. (I know, the MS folks are going to say SQL Server Express Edition is free, but you rarely run a startup on that.)
.Net has historically cost money while providing somewhat similar features as open source competitors. Its why MS was forced into open sourcing it. They could not compete anymore.
The Community edition is pretty full-featured, it's only missing some TFS integration stuff, some test suite stuff and advanced profiling. I'd compare it to IntelliJ's free/pro model.
Have you used this personally, and do you have any scale? As there's 'supported' and there's good.
HN used to as well, every 2 or 3 years since it was started you'd have half the comments in a language discussion swearing blind that everyone was just about to switch to Lisp, then it was Erlang, then Haskell, then Scala.
That's the problem with most .NET developers. They were fed straight from the MS spoon with blinders on, and never wondered what is out there. But to label oneself as a "I'm a .NET dev", and yet you don't know that there is another language besides VB/C# it's just sad.
But now that MSFT has turned things around, hopefully the F# community can get a bigger spotlight and bring a change about.
As someone well versed in C#/VB please ELI5 why F# is so superior to it's OO cousins?
Seems to me like it's actually more difficult to get to the same results with functional languages especially when C# has a lot of "functional" paradigms included?
I'm not making any assertions about OOP vs FP. Though some claims would be that with FP it is easier to maintain an application, functions are mapped to a singular result given a specific input, and with F# its got a strong type system.
I mean, do you really expect people to know all the CLI languages? Would you expect them to know about Boo, Nemerle or the other handful of languages that target the CLI? Microsoft has also done a pretty poor job marketing F# to developers.
F# isn't an OS. And it hasn't always been around, it's much newer than .NET.
> But what is sad about the state of the average C# dev is that when I ask them about their opinions on F#, they always respond with a "whats F#?"
And, so what? F# isn't C#. Why should a “C# dev” be expected to know F#.
> That's the problem with most .NET developers. They were fed straight from the MS spoon with blinders on, and never wondered what is out there.
F# is from MS and it's not exactly hidden by them. But why should a “.NET dev” be anything other than someone who has sufficient knowledge and proficiency with programming with the .NET framework, irrespective of whether it's all in VB.Net or whether they are a ployglot?
I guess there's only really a place for one strongly typed language.
Most startups are trying to build products with a low budget overhead and previously that was a lot harder to do in the .NET ecosystem.
Windows
IIS (Internet Information Services)
SQL Server
C#
Update : forgot to mention. We use C# as the language.
But, yeah, as other posters have mentioned, it comes down to budget. In the past .NET was expensive to use and created a lot of vendor lock-in. That's currently changing and I imagine you'll see more startups using .NET in the future.
Source: Worked for a decade on the .NET stack and for the past few years I've been working on a series of large codebases using Java/Golang/Ruby/Python/the_usual_startup_things. Got my taste of both, still miss C# as a language. I would call Java the most 'stagnant'.
https://devblogs.microsoft.com/dotnet/performance-improvemen...
Going back to the question - certainly in the UK it is massively popular. The company i'm at now is mainly .net, but moving to .net core, probably a majority of jobs in my area are using some flavour.
To some extent I think old school .net is holding it back. Core however will get a lot of traction, nobody wants to pay the Windows tax when they don't need to.
2) .NET isn't really taught in college classes, and a lot of startup devs come more or less right out of college, using whatever stuff they learned as a basis.
3) .NET isn't sexy in a cultural sense. It doesn't have a shiny new flavor of the week framework, compiler, library, or whatever for everyone to trot out every 6 months and brag about on their resume.
4) .NET has the perception of being a "big business" framework, rather than something you use to bang out a scrappy MVP. Scrappy MVP is where a lot of startups... start, so the impetus is to use whatever tool flavor of the day will get you to customer #1 the fastest.
There are startups that use .NET though, one that comes to mind that has been very successful is fanatics out of Jacksonville, FL. They went with SQL Server and .NET for their startup early on because there was tons of enterprise talent around and Microsoft was giving great incentives for startups to use their tech. I am not sure what they are on today, but I know they still advertise for Microsoft and .NET people a lot.
C# is a pretty damn awesome language and you can be super productive in it but not lose feel like you are hand tied. I am sure there are also those people that just shit on .NET/C# etc cause it is Microsoft, but honestly I'd use it if the opportunity was there and it made sense for the startup.
* edit - clarified a sentence.
Now fast forward 5-10+ years back to the present, are people that choose to start their career in older, large enterprises outside of pure technology more or less likely to be a technical co-founder or first technical hire at a start up than people that choose to start their career in startups or pure technology companies? For consumer focused startups I'd probably say the latter.
I don't know for sure, but I'd guess that startups trying to sell to exactly those older, large enterprises outside of pure technology are where you are more likely to find technical co-founders/first technical hires with experience at those companies they are trying to sell to. So I'd look there for .net stacks.
I don’t know how much the situation has improved with core running on Linux.
IMO Core runs extremely well on Linux:
When I make a standalone (or rather a folder full of everything it needs to run without installing the whole .Net framework) it actually runs way quicker on a linux vm than it runs directly on Windows directly on the same metal.
This surprised me a bit, but so far the results has been consistent.
To echo what others said...
A lot of hot startups are founded by young college kids. They don't have money for expensive Visual Studio licenses to program in C# and .NET world. In contrast, the alternative dev tools like Java, Ruby, PHP were free. In college classes, they would have played around with free software instead of Microsoft.
Microsoft charged money in multiple areas of the stack: the compiler (VS) cost money, the database (MS SQL Server) cost money, and the operating system (Windows licenses) cost money. In contrast, PHP+MySql+Linux was $0.
Microsoft later tried to reverse the loss of mindshare with promotional programs such as DreamSpark and BizSpark[0]. That's where a small business could get Microsoft dev tools for free for a limited time. However, those enticements really didn't change a lot of minds because founders knew that once the startup had revenue a year later, they'd have to pay a "Microsoft tax".
Yes, MS later radically changed strategy by making their tools open source and more compatible on Linux. However, it was too late because the culture of startups avoiding MS technology was already deeply ingrained. The StackOverflow site would be one of the few high-profile startups that bought into the Microsoft tech stack.
[0] https://www.google.com/search?q=microsoft+dreamspark+bizspar...
I don't agree. When I was a student, Microsoft was pushing their MSDN for students very hard, as well as their other programs (like Microsoft Student Partner). As a student, Microsoft's tools have always been free and very easy to obtain. On top of that, they were the only ones that provided me with free cloud credits to host my stuff. I never gotten any from competitive cloud vendors. This is in Europe though, I feel Microsoft has a much stronger foothold here than in the US.
Your post doesn't do that. Most other posts name other reasons (potentially legitimate ones), your "it is expensive" justification is inaccurate and doesn't echo most posts here.
> Microsoft charged money in multiple areas of the stack: the compiler (VS) cost money, the database (MS SQL Server) cost money, and the operating system (Windows licenses) cost money.
The C# compiler is free and OSS. You don't need Visual Studio to use it. In fact many use it with VSCode, VIM, or Notepad++ for $0. You can also pay less money and use Jetbrains' Rider, or 5x commercial users can use Visual Studio Community Edition if you want a fancy IDE.
MS Sql is non-free. But not at all part of .Net Framework. So it is off-topic. You can use MySQL, PostgreSql, SQLite, most Cloud database solutions (Azure, AWS, Google Cloud), or whatever you want. Drivers are readily available.
You also don't need Windows. .Net Core is available for Linux and MacOS. So if C#/.Net Core + VIM + Linux + MySql is your thing? You can. For $0. Today.
This type of misinformation is why people don't look to .Net Core though unfortunately.
with the focus on today. A significant amount of infrastructure you just named is merely a few years old, and understandably hasn't made it into most companies.
So in the good spirit of acknowledging others who posted similar comments before me, I get nitpicked?!?
- hours before me... look for word "money": https://news.ycombinator.com/item?id=20256086
- hour before me... look for word "budget":: https://news.ycombinator.com/item?id=20256682
- 9 minutes before me... look for word "expensive": https://news.ycombinator.com/item?id=20256765
- 5 minutes before me... look for word "costs": https://news.ycombinator.com/item?id=20256788
>For $0. Today.
Yes I also mentioned that tools are free today. My comment was about how the past has a ripple effect on culture of startups avoiding the Microsoft tech stack. This is still in effect today. I would guess than 90+% of YC startups in 2019 are still not choosing the Microsoft stack. It doesn't matter to those founders that .NET Core and VSCode are free today.
> The C# compiler is free and OSS.
Has this always been the case?
> .Net Core is available for Linux and MacOS.
A quick wikipedia search shows that .Net core was first released in June 2016, that only supports the view that microsoft has been very late to the game when it comes to open source languages and frameworks.
The original comment that you disagreed with says "Yes, MS later radically changed strategy by making their tools open source and more compatible on Linux.", but despite your hostility nothing in your post actually disagrees with that comment does it?
Being snarky and name calling against site guidelines. It is the first line:
https://news.ycombinator.com/newsguidelines.html
> Has this always been the case?
Has this always been the case with Java? With C? With C++? It has been open standard since 2001 and the current compiler open source since 2014. So five or more years. Ten or more with Mono (part of .Net Core today).
> A quick wikipedia search shows that .Net core was first released in June 2016, that only supports the view that microsoft has been very late to the game when it comes to open source languages and frameworks.
.Net Core isn't the first version to be open sourced nor free.
Ha, OK.
> Has this always been the case with Java? With C? With C++?
Its funny to see all the logical fallacies being used to try and counter a perfectly valid argument! What does this have to do with Java, C or C++? But since you asked, there were always open source compilers for C and C++ (GCC and G++ for example). Java - I don't know, I suspect not, but is Java popular with startups anyway? Why mention it?
> It has been open standard since 2001 and the current compiler open source since 2014.
Not sure exactly what Open standard entails?
Essentially, the original argument said that the software ecosystem for .NET has mostly been non-free and non-opensource until very recently (2014 - 2016 as you mentioned), which has meant that for at least a decade startups have avoided it in favour of open source frameworks, so even though it is NOW open source, the damage has already been done. None of these counter-examples actually contradict that original statement. By 2016 open source frameworks like Django, Rails, Symfony had been around for more than a decade and were no longer the "shiny new toy" but generally accepted as mature, stable frameworks on which to build applications. So I think its fair to say that Microsoft's approach to open source has been too little and far far too late.
Later on I worked for a few others that were also using .NET.
As others have noted, it sounds like it might truly be free now, however Microsoft has always made me nervous with “embrace extend extinguish”[1].
Also I just love using Linux for my servers.
[1] https://en.wikipedia.org/wiki/Embrace,_extend,_and_extinguis...
Our legacy web app uses ASP.NET MVC which is a bit of a pain from a DevOps perspective since it has to run on Windows servers. We also use SQL Server which end up costing 2X what MySQL or PostgreSQL would on RDS. However, our newer code is .NET Core, and we run it on AWS Lambda. We decided to stick with C# since our dev team knows it, and it's a great language. I also really like the direction MS is headed right now with their focus on developers. We have decided to switch to PostgreSQL with our newer services for the cost savings, advanced monitoring, and scaling offered on Aurora. I'd still recommend SQL Server though. It's simple and easy to use in general.
We're a bit of an atypical startup. We are based in Missoula, MT. If you are into .NET, we're hiring - send me an email (it's in my profile).
Might depend on the country but I know a lot of startups that use it because they learned it at school.
Why isn’t it more popular if it’s super fast and works great on Linux? Well, I think it is true that there are some memories of startups wanting to avoid Microsoft tech; I think that cousins TypeScript and VS Code are in the vanguard here. But the fact is that there are still a handful of lego pieces that are still not around yet that would really help; for example, Kafka streams only works with JVM languages. MS just released an open source Spark client for .NET which had a JVM bridge layer. It would be really interesting if that were extended to allow arbitrary interoperability with the JVM.
Other than that, I think it’s getting there and it might take a few more years for things to sink in to common knowledge. .NET has only been fully open source and running on Linux for a very short time, relatively speaking, and I find it’s still common for people to be surprised when they hear it.