What are you thoughts as to why .NET hasn't taken off at startups?
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.
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.
Some 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.
Have you used this personally, and do you have any scale? As there's 'supported' and there's good.
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#
A corollary of this is that if a potential employer turns you down purely on the basis that your experience lies with a different tech stack - it’s quite likely that you’ve dodged a bullet (assuming we are comparing similar disciplines, e.g. they are looking for a backend developer and you have a lot of experience building backend services, just with a different stack)
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).
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.
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...
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.
I guess there's only really a place for one strongly typed language.
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.
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.
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 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.
Seriously? I guess the whole swath of .NET developers aren't good engineers...
Short list of awful engineers:
Jon Skeet, Marc Gravell, Darin Dimitrov, Gordon Linoff, Hans Passant, Schabse Laks, Nick Craver, Jared Par, Eric Lippert, Anders Hejlsberg, etc.
Good engineers also actively avoid using Stack Overflow - as it's based on Microsoft tech and good engineers want nothing to do with Microsoft.
Backwards education meant that messaging was forms and tables, constraint programming was forms and tables, state machines were forms and tables and people came up with very stupid ideas like polling tables instead of using event queues on top of which entire businesses ran.
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.
Update : forgot to mention. We use C# as the language.
Later on I worked for a few others that were also using .NET.
Might depend on the country but I know a lot of startups that use it because they learned it at school.
.NET and dev tools weren't available or production grade on non-Windows platforms.
Historically, I have an aversion to MS tech since MS Java 1.1.
Check out reddit and https://builtwithdot.net/
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.
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?
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.
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...