Why isn't dotnet core popular among startups?
old.reddit.com
old.reddit.com
In .NET culture, few developers share, fork, or communally develop code, and you sit around waiting for great Microsoft mother to deliver features. There is no ecosystem; there is one provider, and provider is beholden to a couple of guys and, beyond them, investment fund shareholders.
The biggest issue I’ve had is that some of these less popular libraries (both by Microsoft and not) have some truly tasteless APIs, I think mostly stemming from older versions of C#, and for some reason the lowest quality stack overflow answers are much lower for C# than in python — there appears to be much more cruft and outdated information in blogs, stack overflow in C#-land than python. Really in general I feel like python/rust has a higher floor for taste than C#, but at ceiling it’s competitive.
I’m pretty sure though that startup language choice has nothing to do with practical considerations — it’s largely a popularity contest based on hype cycles, and C# is well past its hype-prime.
This kind of reply reeks of when Phil Haack tried to convince people that (the old) .NET Framework was "open-source friendly" because NuGet existed.
Regarding ASP.NET, you're right. There are some alternatives, but not used very often from my experience.
* MoreLinq
* Newtonsoft.JSON
* CommandLineParser
* log4net
* UnitsNet
* OsmSharp
* NodaTime
* GMap.Net
* ImageSharp
* Hangfire
* Quartz.NET
* NHibernate
* AutoMapper
* StackExchange.Redis
* the Castle project
* xUnit
* NUnit
* Serilog
* SimpleInjector
These are all very popular long maintained open source libraries I've seen used in many projects.
* MassTransit
* AutoFac
* MediatR
* Elsa
* BenchmarkDotNet
C# still lives under the specter of Microsoft. EEE is recent in many of our memories. And the last time I looked at C# (considered using it with Godot), compiling still required some silly setup stuff and the tooling was also subpar compared to Java (though all languages are subpar at tooling vs java. IntelliJ alone is a reason to use Java imo.)
Library support is pretty great too. Honestly they are pretty much interchangable and I'd choose based on my team's proficiency.
OmniSharp barely works at all outside of VSCode.
The state of things have probably improved with Microsoft’s investment in Linux. But I’d assume that the primary ecosystem users will make implicit assumptions about the operating system.
C# is only “kind of nice” (a better Java, before Java also became a better Java), but with JVM I can use both Clojure and/or Scala.
So I cannot imagine the average dotnet programmer is very good.
I am sure there are startups out there using it and reasonably sized real tech companies, but I do a C# search on LinkedIn and I just see a bunch of crappy non tech firms.
Thank you. I very much appreciate you self-selecting yourself out of the pool of people I'm ever likely to have to work with.
C# is beautiful and there are others (F#) if you prefer on the same platform. There are some great modern and well supported libraries to use for almost every use case. You can get into the nitty gritty if you want with easy interop and control over memory layout.
If you need your product to scale eventually there are good bindings/integrations for all cloud platforms with good support. The core is incredibly fast and getting better every release. The tooling is great too. (rider et al, and dotnet cli is good too)
I've worked with python, go, java and c# and nowadays I much prefer the dotnet ecosystem.
I think one thing that's very underrated in dotnet is the new analyser functionality. It basically allows to to upgrade an migrate your whole codebase to new versions/preferred idioms in a zero cost way. Of course you can stick with the existing code as generally compatibility is good, but the analysers are fantastic things I haven't seen too much in other languages.
There is then the point where a startup may need to "step up" to a more large-scale language, for example when Twitter started incorporating Scala. But succeeding enough to reach this point is a small subset of startups, many probably not even called startup anymore, so any language at this stage may not "feel popular" when limiting to startups.
.NET has a talent pool which has somewhat peaked. Most of the .NET folks are settled in very cushy Enterprise jobs, building that Enterprise product that nobody has ever heard of but just delivers value to those businesses. These developers have gone through many years of Enterprise brainwashing and even though they wouldn't want to admit it they just think like an Enterprise developer at every stage of the development lifecycle and that doesn't attract startups.
.NET developers would make catastrophic or dumb tech choices for startups, they'd be pushing for using fringe Microsoft products such as Blazor, MAUI or ServiceBus for their projects and they rely on Microsoft for everything to be provided which the rest of the world already has adopted a long time ago. Like 9/10 .NET developers don't containerise their apps until Microsoft built in container building into their MSBuild toolchain. 9/10 .NET developers wouldn't use Docker compose to instrument a local dev environment but when Microsoft advertises them a shitty copycat project (which is dead now btw) called Tye then they will use this shit. 9/10 .NET developers will not use a NoSQL database until Microsoft came out with CosmosDb. 9/10 .NET developers will not use pub/sub or a queue until Microsoft advertised them ServiceBus. 9/10 .NET developers will not use OpenTelemetry with a Jaeger dashboard, until Microsoft provides them their own copycat clone again. It's extremely depressing to work for most .NET companies if you are a technologist because you will constantly fight against people who only do "the Microsoft way". It's awful and I totally understand why no intelligent founder would let this virus infect their business. As a startup staying away from .NET as far as possible is probably one of the smartest decisions one can do.
Having said that, if you work at Xerox, Fujitsu or IBM then .NET is brilliant. It will give you everything that will make you an outstanding developer in your manager's eyes and surely secure you many promotions.
Also, .NET ecosystem is way richer and more open than you perceive it to be. There are 350K packages on Nuget, and probably 0.01% of them are shipped by Microsoft.
I’ve been out of the loop for C# for a while (only using it when I play with Godot). What’s the C# equivalent to Boot these days? (Doesn’t have to be a Boot clone. More like the fast off the ground, but powerful enough to last framework)
The top Reddit response cites some good reasons why this may be so. The writer mentions they needed to move from Node to improve "throughput" (and .NET was suggested). In what way would .NET improve performance that Node can't satisfy. (Isn't Node's worker thread sufficiently close to ASP.NET, ISAPI multi-threaded scenarios?)
But all this is very project specific... it's hard to make these sort of claims about performance.