Live data from Hacker News

Why isn’t dotnet core popular among startups?

old.reddit.com

101–110 of 124 posts

Re: Why isn’t dotnet core popular among startups?

#101
post #16

Earlier quoted context omitted.

TypeScript is also controlled by MS and that has tons of community support. Sure, if things got evil someone would fork/reimplement, but right now Microsoft decides how the language goes for the most part. And for writing C# on the server, the major benefit is that Microsoft has a batteries included web framework that’s very battle tested. There’s at least one good first party answer for every problem (auth, database…

sure, but why not just use Java in that case? Essentially equivalent, except not controlled by Microsoft, and arguably much easier to hire for.

Perhaps because Java is a mess? Much easier to hire? Where? In some locations there’s a 2:1 to 4:1 of C# over Java ratio for demand. And your “why not just use” something else is kinda condescending. You do realize that’s not how one is supposed to choose their tech stack?

Java is “controlled” by Oracle. Kotlin by JetBrains. Scala is “controlled” by… no one knows. Go is “controlled” by Google. C++ is “controlled” through representatives of a consortium of blue chip corps, including MSFT and GOOG. They also “control” Linux to a significant extent. Their employees contribute to many OSS projects.

There’s no perfect governance structure. .NET has the .NET Foundation, like Haskell (also “controlled” by Microsoft until recently) and Python; but who “controls” Python? Did you ever bother to wonder or was it ever important at all?

And the language alone is insignificant, you need a community and an ecosystem that you and your project fit best in and you can rely upon for the lifetime of you project.

Re: Why isn’t dotnet core popular among startups?

#102
post #8

Why would you use C# if starting a company/project today? I know C# fans love it, but seriously why not choose a community driven language over one controlled by microsoft?

I wouldn't use it personally because I use other languages, but C# is perfectly fine? It's basically Java without most of the bad parts. It's a very well designed language that fits most niches (fast, compiled, familiar syntax, feature rich, adopts recent PL concepts, etc.)

To me it’s not about the language, I can anytime switch to Kotlin or Scala, even Clojure but I don’t do LISP. To me it’s mostly about the developer experience, build tools and the simplicity in the ops. In JVM there’s so many moving pieces and knobs to control, it’s so brittle. I can live with the trap field in Java the language that’s justified by backwards compatibility. But I prefer to let juniors steer away from Java to Kotlin so they avoid all those traps. I love Java and the JVM for the versatility and the variation. But Java steals too much productive time and eats up too much RAM.

And every new praised feature comes with many caveats because the OpenJDK folks want to keep it backwards compatible and carry on all that dangerous garbage resulting from the many bad design decision made in the past. Virtual threads come with many caveats. Pattern matching too. The Panama FFI has been underwhelming. The value types proposal is kinda weird. GraalVM is great on paper but have you met someone satisfied with it in production? It’s nice you can, in principle, embed an R, JS, Python, Ruby and Java runtime on it in the same app, but does it actually work in production? It’s all praised to the infinity but it just doesn’t work right in production. And what’s dangerous - the caveats are not advertised at all, you really need to be very cautious and follow all the relevant Oracle talks and discussions here and on Reddit just to not endanger your software. Do you really believe that an average Java developer can cope with all that sheer complexity?

For example, pron might tell you virtual threads are fine but do you have the budget to even invite him on your team? Yes, obviously, you don’t have to be one of the developers of the Virtual Threads to use them appropriately, and they gave their best to make the APIs as user friendly as they could, which few really appreciate. My point is that it’s only the tip of the iceberg that many people talk about when they discuss languages. This may come as an unpopular opinion but that’s just my experience.

So, no, C# is not “basically Java”—it began as such and perhaps a decade ago that would be a good assessment. But today, C# is a robust language in its own right. You can also choose F# or VB if you like, they all run on the same CLR, like the JVM languages. And .NET is a full-fledged robust and comprehensive framework. There’s much less variability in the correctness and cohesion of the implementations across the .NET ecosystem—already because there’s much fewer moving parts and knobs to control. And .NET apps use much less memory for the same throughput and latency than JVM apps. In addition, as for DX, EF Core is much more efficient and straightforward than Hibernate and Spring Data JPA, and so on.

It just works.

Re: Why isn’t dotnet core popular among startups?

#103

Earlier quoted context omitted.

I would just like to understand specific threats or issues with using C# as a language. I've used it for 20 years at this point without issue and the latest IEEE language survey shows that it remains one of the top languages[0]; I'm wondering if you have some insight into why .NET and C# are a bad choice for engineering teams that I've somehow overlooked in my 20 years of working with it. It sounds like your argument…

This is a good list. I really feel it's a very good platform and just a very pleasant environment to work with. I guess I'm a "fanboy" as someone else on this thread said, but I became one because I had to use it for a job and I found out how solid it was and how much I enjoyed tinkering with it.

I really appreciate what I can do with .NET and I don’t do much care for the language that I need to use. Yes C# is nicer compared to Java and C++, but after many years with Haskell they all are nowhere nearly as ergonomic and expressive, which is fine. I’ve tried F# a couple of times but couldn’t get used to the OCaml like syntax.

Anyway, I favor productivity way over ergonomics. And my .NET apps are very robust and very easily deployed. Everything is perfectly well integrated. No surprises. Almost no sharp corners left. The DX is superb. The performance is great. It’s so easy to run. Time to delivery is good. And the most important bit - I don’t need to keep all the hidden Java traps in mind. JVM with its many implementations is an amazing piece of tech, but in my experience it appears as something overengineered and requires too much maintenance and fine tuning. Just like Spring, Hibernate, and many other components of a typical Java app.

Re: Why isn’t dotnet core popular among startups?

#104

Earlier quoted context omitted.

I do all of my .NET work on a Mac and deploy to Linux -- both x64 and Arm64 -- on the daily.

Wow, really? That's wild to me.

Yeah, I’ve run the same dev setup since the M1 came out. Totally stable and robust. Nothing wild at all. Every .NET dev who’s on an ARM Mac today is most likely doing the same. If you like you can run Windows ARM in a VM on the same Mac if you want to run native WinUI, WPF, etc. GUI or anything Win32 specific.

Re: Why isn’t dotnet core popular among startups?

#105

When I joined the .NET team in 2015, we were rounding out the first arc of the journey to be truly cross-platform, and June of 2016 released a 1.0. It was an absolute mess of a release, but it actually happened. You can bet your ass that "go after startups" was a part of the strategy - in my first team meeting we literally all read a blog post about how Go was picked over C# at Parse. I'm sure our execution of that s…

Perhaps we’re looking at different time frames or different locations, but as for your last paragraph, I’ve observed a qualitative shift in .NET job postings over the past two years. Several years ago, lots of jobs used to be posted by the proverbial .NET sweatshops and outstaffing agencies. These days, quite the opposite—lots of greenfield projects, lots of enterprise projects not even running on Microsoft software infrastructure, that is, not based on Windows and not related to document processing on the Office suites, not even on Azure. Great salaries.

I’ve found Microsoft’s developer-targeted marketing campaigns rather annoying. But it’s been professional and even fascinating from the point of view of marketing proper. What I disliked was the few occasions of overreach against the community.

I think .NET has been gaining traction, albeit not uniformly across the world and not at a fast pace, which is reasonable due to the already huge community—you just don’t get to grow that fast in relative terms when you’re already this huge.

Re: Why isn’t dotnet core popular among startups?

#106
post #35

I recently launched a startup, we use Java, some Python and even a little bit of Rust. For web we also use plain Javascript. We will most likely add some GoLang and C/C++ for specific problems we need to solve in the future. But using C# .Net? It's completely irrelevant, it adds absolutely nothing. The performance is similar to Java. The syntax is similar to Java. But the eco-system is one of the smallest of all the…

I can't tell if this is serious that you're a startup using 3 languages with plans to use 2 more. I'm not saying that those might be the best tool for the job, but the complexity to manage that whole build chain sounds crazy overkill complicated for what amounts to premature optimization using all those languages

While I agree with you that such complexity is expensive to manage, I think it primarily depends on the expertise of your team. If you can foresee the need for Rust, say, and your team knows how to manage its risks, and it is financially viable to maintain so many stacks, I think it’s fine. But if the team just wants to put a badge on their chest for using Rust, that’s a different story. I’ve been always striving to reduce the complexity and pick only one framework. Sometimes it’s hard and such decisions must be made. On a larger project I integrated and developed Go, Rust, and Java services, tightly knit to their context bounds. It was alright and seemed to make sense but the strain was immense.

People tend to underappreciate how much time it costs to do the context switch in your head when you change across different stacks, and how much lost opportunity it incurs for not spending that time to dice deeper in only one tech stack.

Re: Why isn’t dotnet core popular among startups?

#107

As a lifetime Linux user, I think it's obvious. A startup is about getting a product out to market as soon as possible, and hopefully as cheaply as possible, which can best be done with open and freely available tools. When I'm in the zone, my creativity is flowing, the last thing I need is to register on some website, or to purchase a license.

How is this even related to dotnet? All you need to type is some apt get dotn... and you can go

Uh, what, I'm not seeing it?

$ apt search dotnet

Sorting... Done

Full Text Search... Done

libgtk-dotnet3.0-cil/testing,unstable 2.99.3-4.1 amd64 GTK.NET library

libgtk-dotnet3.0-cil-dev/testing,unstable 2.99.3-4.1 amd64 GTK.NET library - development files

libgtk2.0-cil/testing,unstable 2.12.40-3.1 amd64 CLI binding for the GTK+ toolkit 2.12

libgtk2.0-cil-dev/testing,unstable 2.12.40-3.1 amd64 CLI binding for the GTK+ toolkit 2.12

Re: Why isn’t dotnet core popular among startups?

#108
post #77

Earlier quoted context omitted.

The tooling is not entirely open or freely available. If you, for e.g., want to debug you have to use MS tooling.[0] You also can't use VSCodium because only the MS built/distributed version of VSCode contains the proprietary binary blobs necessary to debug C# (which also means you're forced into the aggressive telemetry and other data collection built into the non-open source distribution of VSCode). They've also ta…

Those links both show the tooling is freely available, and for the core debugging interface, there are open source implementations as documented at those links as well. I'm not sure what the problem is.

There's a number of caveats on that statement though (e.g. "freely available" only to vscode users), and that is the problem.

Re: Why isn’t dotnet core popular among startups?

#109

Earlier quoted context omitted.

There is a marked difference between a third party releasing some new library and obtaining (to some extent, demanding) community mindshare, without taking away anything, and the official platform maintainer suddenly replacing practically mandatory parts of what is perceived as the standard library. Javascript churn is fast, .Net churn is deep.

That's not really true. .NET Framework is still around. Even .NET core 3.x which is EOL a while ago, is still widely used with active stackoverflow and if you're loud enough with the .NET team at Microsoft they will help you there too. The only difference I see between both is that there is an authoritative opinion when it comes to .NET (Microsoft) while there is no authority figure when it comes to node/Javascript.…

The "authoritative opinion" is indecisive. Microsoft frameworks tend to be high quality, but there are too many. ASP? ASP.Net? ASP.Net Core? ASP.Net MVC? Razor? Blazor?

Re: Why isn’t dotnet core popular among startups?

#110
post #35

I recently launched a startup, we use Java, some Python and even a little bit of Rust. For web we also use plain Javascript. We will most likely add some GoLang and C/C++ for specific problems we need to solve in the future. But using C# .Net? It's completely irrelevant, it adds absolutely nothing. The performance is similar to Java. The syntax is similar to Java. But the eco-system is one of the smallest of all the…

I can't tell if this is serious that you're a startup using 3 languages with plans to use 2 more. I'm not saying that those might be the best tool for the job, but the complexity to manage that whole build chain sounds crazy overkill complicated for what amounts to premature optimization using all those languages

I can explain why. Java is great for web, api's and most things. But Java is not really that great for doing data science. Python is great for data science, the Python community has put a great effort making Python "The place to be for Data Science" and Rust helps us speed up heavy tasks that are too slow with Python.

It is not really crazy complicated, it's simple stuff that is very well documented. We try choose the right tool for the job, and we don't care about which language we use. If we tried to do everything in Java, we would spent at least 2x more time on building our software.

Post reply on HN