
Ask HN: Why is .NET not popular with startups? - deadA1ias
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&#x27;t taken off at startups?
======
nycdotnet
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.

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.

~~~
je42
I am curious: Why is your other half of your services in Go ? If you are happy
with .Net ?

~~~
nycdotnet
I think a big part of it is existing dev/team familiarity, and it’s a stongly-
typed language that is also super fast and is first-class with gRPC. Our Go
and .NET services interact really well, so the diversity has been a net
positive, I think.

------
bradleyjg
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.

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.

------
BrentOzar
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.

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.)

~~~
TobbenTM
But it is free though! With .Net Core being Cross platform, I've actually yet
to run it on anything else than Linux in production environments! Hosting is
the same as any other technology, you just need a host to either run
containers or the .Net artifacts directly. Lastly, I think it's unfair to
throw SQL server into this comparison, as MySQL and PostgreSQL are perfectly
supported with entity framework.

~~~
pryelluw
It has only been open source for a relative short amount of time when compared
with other technologies like Node, RoR, etc.

.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.

~~~
DarkStar851
.NET itself has always been "free" (as in beer), it's just VS they made people
pay for. They've had a community edition since VS2012 at least, possibly
earlier but that's as far back as my brain goes.

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.

~~~
dogma1138
Before CE it was Visual Studio Express which was also pretty much the same.

------
navd
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.

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.

~~~
jrs235
I think it's because the standard/native database backend is SQL Server which
costs money. Yes, you can easily develop against other RDBMS but most .NET
shops stick with a pure Microsoft WISC stack.

Windows

IIS (Internet Information Services)

SQL Server

C#

------
ch_123
I would question to what extent your .NET experience is truly non-applicable
to something like Java or Python.

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)

------
lancefisher
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.

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).

------
mdorazio
1) As others have mentioned, .NET has a legacy of being expensive and closed,
even if that isn't really true anymore.

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.

~~~
mruts
F# seems pretty sexy to me.

~~~
lostmsu
Even C# does at the moment. Most languages are still playing catch-up on
either async or generics.

------
todd3834
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.

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...](https://en.wikipedia.org/wiki/Embrace,_extend,_and_extinguish)

------
mola
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.

~~~
cm2187
Free, community editions of visual studio have been around for a long time now
and are nearly as good as the more expensive pro version. I don't think the
dev station side is still true. But on the server side, Windows Server and SQL
Server still cost a fortune and I believe they raised their prices recently.

~~~
fj39dkf
For students and researchers. If you're operating a business you still have to
pay for VS licenses, or violate the free license and hope you get big enough
fast enough that it's not a problem.

~~~
cm2187
No I believe a company can use it up to 5 developpers. Which should cover the
vast majority of start ups. Then you can buy a pro license for $500 which
isn't that expensive if you have the financing for more than 5 devs.

------
davismwfl
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 _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)._ 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.

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.

------
chrisgoman
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)

------
marsrover
I've worked at two startups that used .NET.

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.

------
mattmanser
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.

I guess there's only really a place for one strongly typed language.

------
jinushaun
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.

I don’t know how much the situation has improved with core running on Linux.

~~~
eitland
> 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.

------
whb07
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#?"

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.

~~~
erikpt-work
Not intending to start a flame war, just to expand my knowledge.

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?

~~~
whb07
My general point was essentially that the "average" C# dev has no clue/idea
about tech so much so that they don't even know F# exists.

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.

------
sofaofthedamned
I'm a Linux guy - but have to say .net core has impressed me.

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.

~~~
nextos
Same here. I think F# in particular is really appealing now that support in
Linux is first class.

~~~
sofaofthedamned
Yeah. I look at my company and their AWS bill which is huge - deploying .net
core on Linux will save them so much money. I'd prefer golang but the
difference is in the realms of noise.

------
vmurthy
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

Update : forgot to mention. We use C# as the language.

------
pjmlp
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.

Later on I worked for a few others that were also using .NET.

------
fj39dkf
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.

~~~
dmarlow
"good engineers simply want nothing to do with the Microsoft ecosystem"

Seriously? I guess the whole swath of .NET developers aren't good engineers...

~~~
whycombagator
I thought it was universal knowledge that everyone involved/working with the
Microsoft ecosystem was automatically a bad engineer?

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.

~~~
jetti
Not to mention all those devs who are putting a ton of effort into the .NET
Core runtime and optimizations. They are just truly awful devs

------
nurettin
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.

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.

------
huis
Why do you think it is not used much by startups?

Might depend on the country but I know a lot of startups that use it because
they learned it at school.

------
karmakaze
A practical reason:

.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.

------
dmarlow
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.

Check out reddit and [https://builtwithdot.net/](https://builtwithdot.net/)

------
fj39dkf
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.

------
tanin
My belief might be outdated. But don't we need to pay for Windows server
license per machine?

~~~
evo_9
You can easily containerize dotnet core apps using Docker and host them
anywhere; it's trivially easy to do so (a checkbox on your project setup
page).

------
nunez
(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

------
sahin-boydas
Microsoft should really change the name .net core to something else.

~~~
sahin-boydas
Too much history

~~~
potta_coffee
That's the problem. I thought I'd give .NET core a try but when I look for
information about how to get started, I can't differentiate between versions
easily. I tried for a couple of hours before saying "forget it."

------
jasode
_> What are you thoughts as to why .NET hasn't taken off at startups?_

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...](https://www.google.com/search?q=microsoft+dreamspark+bizspark)

~~~
Someone1234
> To echo what others said...

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.

~~~
world32
You are clearly very bitter about this.

> 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?

~~~
Someone1234
> You are clearly very bitter about this.

Being snarky and name calling against site guidelines. It is the first line:

[https://news.ycombinator.com/newsguidelines.html](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.

~~~
world32
> Being snarky and name calling against site guidelines.

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.

------
strayamaaate
I find it strange that this Ask HN was ranked #23, then I refresh after a
minute and it's #190...

------
bobosha
Unrelated question - can one build thick client apps in .net core for linux or
mac? (cf. Electron)

------
ExDeveloper
Free (as in beer) tools from Microsoft like .NET Core and Visual Studio Code
are too little, too late.

------
ykevinator
It's slow and closed source. Not being pedantic, it is just super stagnant
compared to open source platforms.

~~~
decebalus1
Don't want to start a flame war, but there's nothing factual correct about
what you just said - except for the open source activity around .NET (if
that's what you meant by 'stagnant')

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'.

~~~
vips7L
I think the biggest problem with Java is the reluctance for anyone to move
beyond jdk 8.

------
anovikov
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?

~~~
discreteevent
He had even stronger opinions about Java despite Amazon and Google (not to
mention many others) being built in it. I could never figure that out because
he's quite insightful about a lot of other things.

~~~
goto11
I think it is hard for us language geeks to accept that language choice just
doesn't matter _that_ much.

~~~
mattmanser
pg's always had a touch of functional fever.

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.

