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.<p>What are you thoughts as to why .NET hasn't taken off at startups?
We use .NET Core at Namely and we are generally super happy with it. About half of our new services are in C# with .NET core using protobufs/gRPC in Linux Docker containers on Kubernetes talking to Postgres, Redis, and Kafka; the other half are Go but otherwise same stack. That’s all free/open source stuff. .NET Core is super fast and has a generally pretty small memory footprint. It works great with our ELK stack monitoring tools, our perf analytics tools - all the same stuff our other apps running on Linux containers/k8s use - because it’s also running on Linux in Docker on k8s. Most of our .NET devs use Windows desktops because we support some legacy .NET apps too, but several of our .NET devs use Macs and either VS Code or vim to work on our .NET Core services; as far as I know, this works well for them. They certainly are fast with implementing stuff when asked.<p>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.<p>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.
Path dependency. .net may be open source and interoperable with all kinds of non-MSFT technologies today, but 5-10+ years ago it was only usable in places that went all in on Microsoft technologies. Those Microsoft shops tended to be older, large enterprises outside of pure technology.<p>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.<p>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.
In the past, it's been about budgets: Microsoft has an aura of money about it. The OS cost money, the good developer tools cost money, the database cost (a lot of) money. Startups are by definition cash-strapped.<p>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.)
As someone who has done a lot of work with .NET in a past life, I think the main reason that more startups aren't using it are for culture reasons. .NET's move into open source is fairly recent and I'd expect more startups to use it (if it fits) in the future.<p>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.
I would question to what extent your .NET experience is truly non-applicable to something like Java or Python.<p>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)
We use .NET at Submittable (YC12)! When our founders started the company, it's what they were proficient with from their previous jobs. They opted for building fast with what they knew so they could get a product to market quickly - and it worked.<p>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.<p>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).
1) As others have mentioned, .NET has a legacy of being expensive and closed, even if that isn't really true anymore.<p>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.<p>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.<p>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.
I believe it has a lot to do with history. You can pick a stack that costs money or a stack that is free. .NET might be great but is it so much better than the free alternatives? It’s a hard sell.<p>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].<p>Also I just love using Linux for my servers.<p>[1] <a href="https://en.wikipedia.org/wiki/Embrace,_extend,_and_extinguish" rel="nofollow">https://en.wikipedia.org/wiki/Embrace,_extend,_and_extinguis...</a>
I find c# a great language, much better (more argonomic, less verbose, less 'patchy') than Java.
I do believe that historically developing on .net didn't make sense for startups because of the huge licensing tax for the OS (servers and Dev stations) and developer tools.
Moreover the usual bodies that preferred paying licenses for stable vendor were large, slow enterprises. This made .net appear less sexy and fashionable.
We might see this turning around with the recent push for open source from Microsoft.
I also have a long history of .NET back to when it came out, although not currently using it. .NET was a solid enterprise answer to Java and was "safe" since it was from Microsoft. Only in the past say ~7 years has .NET really come to the point where running it outside of the Windows environment was even an reasonable option for anything other than prototypes or side projects. And not until the last few years has it been something I'd even contemplate to use outside of the Windows eco-system on a production product. Personally, while I don't use Java anymore as a primary language, Java won the "write once, run anywhere" paradigm even though we all know that there is not such thing as a complex app that is truly write once run anywhere. I think one of the key differences is that Java focused on <i>nix as first class citizen (never really worked as cleanly on Windows IMO), and Linux not having any licensing costs then won the hearts and minds of startups (rightfully IMO). </i>nix in general to me is more robust than Windows as well, and makes solving scaling issues much easier. When you are worrying about server licenses and the such deploying something like micro-services (or any distributed system) can quickly become a costly endeavor. Not to mention the extra time spent in IT managing the infrastructure and licensing etc. Also remember that enterprise licenses of SQL Server and Windows server were charged based on number of CPU's etc (not sure if this is still true been a while). But I remember at one company one of our SQL Server boxes was well into the 6 figures just on licenses for OS and SQL.<p>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.<p>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.<p>* edit - clarified a sentence.
Microsoft "tax". Even if you are willing to pay for a license, all the terms & how much are very confusing and not worth dealing with. Developers would rather solve technical problems than deal with even 5 minutes of potential licensing issues. If you start working on .NET, you almost immediately think "license debt" (similar to technical debt)
As far as I can tell as a programmer in the UK, with several startup clients, it's very popular in Europe, and generally replaces Java's equivalent position in the US market.<p>I guess there's only really a place for one strongly typed language.
I’ve worked in a .NET based startup before. While .NET itself is very nice, the ecosystem is not quite there so it’s a lot harder to get started and manage compared to other open source stacks. It’s harder to automate and script. A lot of tools you rely on aren’t made to run on Windows. Windows itself is hard to automate. For example, rebooting your EC2 instance might trigger a hour long Windows Update. You can’t really use tools like Chef, because installing .net and sql server might take 2 hrs. It’s better to have golden VMs with everything installed.<p>I don’t know how much the situation has improved with core running on Linux.
There has always been a dark horse OS within .NET its called F#. 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#?"<p>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.<p>But now that MSFT has turned things around, hopefully the F# community can get a bigger spotlight and bring a change about.
People have rightly mentioned the cost and vendor lock-in issues. The other problem is that - for whatever reason - good engineers simply want nothing to do with the Microsoft ecosystem. In this market, they have other options. So tying your infrastructure to .NET means limiting your hiring pool to mostly 9-to-5er enterprise developers who tend to fix problems by asking Microsoft to sell them the solution. Not exactly the attitude you want at a startup.
where I come from, .net actually hurt the startup scene because every college graduate thought that programming meant starting up VS, MSSQL and building some forms and tables.<p>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.
I'm a Linux guy - but have to say .net core has impressed me.<p>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.<p>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.
Anecdata:
I work in a healthcare startup where we need to interface our software with medical devices. We’ve found that nothing other than .NET works well with the device drivers. I’d wager that at least in some fields which require a lot of device integrations, you’ll find .NET<p>Update : forgot to mention. We use C# as the language.
It is a regional thing, the startup I was on back in the 2000's .COM wave adopted .NET still in beta phase as MSFT partner as replacement for our in-house Apache/IIS Tcl server module stack.<p>Later on I worked for a few others that were also using .NET.
Why do you think it is not used much by startups?<p>Might depend on the country but I know a lot of startups that use it because they learned it at school.
A practical reason:<p>.NET and dev tools weren't available or production grade on non-Windows platforms.<p>Historically, I have an aversion to MS tech since MS Java 1.1.
We use .NET at Degreed. I suspect a lot of startups use it, but not many compared to other startups. The problem is that's they're hard to find because they're not actively throwing it out there that they're using .NET.<p>Check out reddit and <a href="https://builtwithdot.net/" rel="nofollow">https://builtwithdot.net/</a>
Every .NET developer I've worked with had to be painfully dragged out of the Microsoft world into the real one. It's just not worth the effort to hire people who solve problems by asking Microsoft to sell them the answer. Better to pick a technology where the talent pool has legitimately competent engineers.
(Perceived) Licensing costs and misunderstandings around .NET being open source now. Also, Python is generally-easier to get started with (good for cash-strapped startups; labor is cheaper) and can go really far
<i>>What are you thoughts as to why .NET hasn't taken off at startups?</i><p>To echo what others said...<p>A lot of hot startups are founded by young college kids. They <i>don't have money</i> 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.<p>Microsoft charged money in <i>multiple areas</i> 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.<p>Microsoft later tried to reverse the loss of mindshare with promotional programs such as <i>DreamSpark</i> and <i>BizSpark</i>[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".<p>Yes, MS later radically changed strategy by making their tools open source and more compatible on Linux. However, it was too late because the <i>culture</i> 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.<p>[0] <a href="https://www.google.com/search?q=microsoft+dreamspark+bizspark" rel="nofollow">https://www.google.com/search?q=microsoft+dreamspark+bizspar...</a>
I've worked at two startups that used .NET.<p>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.
Paul Graham effectively invented startups as we know them. Back in about 2005 already, he just gave a piece of advice: everyone who tried to build using Microsoft technologies, failed. Maybe enough people listened?