HACKER Q&A
📣 mnk47

Why is .NET never talked about as an option for solo/small team dev?


Is there still a lot of stigma around it? Any downsides to using it for solo projects?

Whenever we're discussing tech stacks, whether it's here or on X or on Reddit, the most commonly mentioned frameworks are Next.js/Remix/SvelteKit (for those who really like JS/TS) and Rails/Laravel/Django (for those who want "batteries included" and don't want JS in the backend). Occasionally, it's HTMX+Go (for those who don't like "magic" and also don't like JS). But .NET rarely, if ever, comes up, let alone any Java-based solutions like Spring Boot or Dropwizard. Are these tools particularly bad for non-enterprise projects? From what I've seen, they appear to be nearly identical in most ways that matter. Just like Rails et. al, .NET is "batteries included", cross-platform, MVC-based, favors "convention over configuration", has what appears to be a Turbo equivalent in Blazor, and has decent documentation. Does the runtime environment somehow make it harder or more expensive to deploy? Are the "batteries" included in Rails or Django somehow better?


  👤 viraptor Accepted Answer ✓
.net meant a Microsoft lock-in for a long time, so actual visual studio, Microsoft server, etc. with all the licensing issues attached to that. And as a simple web hosting solution, windows sucks whether you're thinking of third party hosting platforms, or your own deployments with automation.

But that changed a few years ago with dotnet being available for Linux and quite a bit more open. While you still effectively need VS to work with Blazor (or suffer), there are many other options for typical web apps. Whether you want to go MVC or something more bare bones, it's definitely a good option.

As to why it's not a popular option: I would guess that proper Linux dotnet has not been out for long enough to really change the idea of what .net4 was/meant. This applies to both sides too - there's lots of old .net people still unreasonably allergic to open source. I've used it for server apps on Linux when Mono was still the only option and was happy with it already then. It's a good system - go for it.


👤 paulproteus
In a recent analysis of venture capital returns for companies based on programming language, for the top 50 Y Combinator companies at least as of 2019, Ruby is #1, and C# is just not in the list.

https://charliereese.ca/y-combinator-top-50-software-startup...

I have no affiliation with Y Combinator itself or the author of the post.

The particular analysis is pretty skewed in its own way, so you can take it with a pinch of salt.

As a general rule, programming languages have ecosystems and communities, and if you pick a language where quickly delivering high-value features to users/customers is part of the community, it helps your startup; you'll probably meet founders and get business advice if you go to a Ruby meetup, but less so at a C# one.

It's not the whole picture, since it doesn't speak to the technical part of your question.


👤 re-thc
> the most commonly mentioned frameworks are Next.js/Remix/SvelteKit

Do you see the pattern? It's corporations with huge marketing budgets trying to sell you things. That's why it's talked about a lot?

It's not just the companies directly but the entire ecosystem including the VC market. They fund companies that make "managed" services or "open source" frameworks and encourage other startups they fund to use it.

> Is there still a lot of stigma around it?

That's 1 thing - the worst part are the rumors. To this date I still see posts where people claim that NodeJs is async and faster than C#/Java by a huge margin.


👤 taspeotis
Probably a demographic thing, you’re asking a majority US audience (or at least a plurality). Here in Australia there’s a ton of boutique .NET stuff as well as bigger .NET products.

It works well, React/TS frontend plus ASP.NET Core/C# backend.


👤 janmarsal
I'm sure you could do it with modern dotnet. I just have a gut feeling that most people who go solo do it partly to escape their old corporate stack to try something different. So usually it means ditching Java/Dotnet. At least that was the case a decade or two ago. These days every corporate stack is javascript based and as a reaction people go HTMX+Go to escape React.

👤 naming_the_user
There is a heavy association of .NET with Microsoft, until recently it was pretty much a Windows platform.

It may not be any more, but to most people in the Linux world it just smells, and that's enough. It's like asking why people don't drink box wine. It's just not cool.


👤 peutetre
A lot of software development choices are driven by fashion. Much of the time the decision making is based on thinking like "this is something cool I have heard of and it will make me feel cool to use it".

👤 sedatk
Most of my personal projects are in .NET. It’s fantastic! https://github.com/ssg

👤 kumarvvr
Its mainly cultural. .net is yet to penetrate the ever so crucial US university labs, currently dominated by the cool kids like node, python, etc.

Microsoft has made great big strides to simplify .net web development, where a simple hello world rest api is not much different than its counterpart in expressjs on node.

.net is truly a wonderful platform, but it carries too much baggage.

Tooling is also a bit bloated.


👤 mixmastamyk
Others have mentioned the technical reasons, so I’ll go with something else.

Some of us remember Ballmer calling our freedom a “cancer.”

Trust is built slowly yet dashed quickly. There are so many respectful choices today. Little reason to pick the once abusive but rehabilitated.

This comment about MS caught with its hands in the cookie jar always makes me laugh: https://news.ycombinator.com/item?id=31727293


👤 physicsguy
It’s more common in the U.K. than it seems to be here. The hiring market means it’s much easier to find C# devs than something else. The company I previously worked for which wasn’t in London ditched Python after I left and has pivoted to it.

👤 jinushaun
I used to work at a .NET shop. The reason I wouldn’t personally use .NET is MS lock-in. Open source is basically non-existent. Documentation is really bad for getting anything done in a headless way. I don’t enjoy Remote Desktop or running Windows in the cloud.

And while .NET is batteries included like Rails, I just don’t enjoy using it. The docs and frameworks aren’t written for nimble startups, but slow-moving enterprise companies. I know modern C# allows me to code like Ruby/Python/JS, but all the docs are written like 1990s Java. And the frameworks are designed that way too.


👤 wenc
It depends on your demographic.

Now if you're talking about tech startups/firms, then you'd more likely be part of the Linux/open-source and AWS subculture. Your tech choices are going to cluster around that.

But if you're in the non-tech enterprise world, you're in the Windows and Azure subculture. .NET is very prevalent. There are many solo and small teams that contract for non-tech companies that, let's face it are mostly Microsoft shops, that develop in .NET. Microsoft and Azure own almost a huge proportion of the non-tech (think retail, industrial, etc.) enterprise world.

I used to develop in .NET Core and ASP.NET core and found the tooling to be surprisingly good. The IDE (Visual Studio -- the full one, not VS Code) does a lot of work for you. It was easy to spin up a CRUD app -- just some point-and-clicks and modifying some boilerplate code.

However, if you were a web developer who likes to write code in VS Code and likes to work from the ground up, I can see why the above might not be your style.

Also Microsoft software -- despite being very open-source these days -- is still very much backed by a commercial entity, and most people don't have the mental bandwidth to parse out what's commercial and what's not. Take SQL Server for instance. There's a free limited version, but licensing the full version if big bucks. Whereas in the open-source world, Postgres and MySQL are free, as in really free. (the only free Microsoft product I use is VS Code -- and it is excellent)


👤 peelle
I'll tell you why I won't choose it as a solo dev.

Back when I was still young and impressionable, I had several frustrating experiences with it at university. Most due to my inexperience, a few times due to Windows being Windows. Also, back then the various $$ and time costs. IIRC $125+ for a windows DVD, $150+ for a VS.Net install DVD, and higher hosting prices for Windows. Also, installs and updates OS, .NET, etc were frequent and time consuming. When I'm making $2.50/hr + tips to get by I couldn't afford that kinda investment.

Now, most of my career has been using Linux, and a variety of interpreted languages. I'm comfortable with them. I boot my Windows partition maybe 2 times a year. There would be a huge cost for me to completely transition to .NET.

In order to get me to try it now would require you to show me some set of features that make it a much better choice than what I currently know. For example, if I someday choose to do Windows apps.


👤 ozlikethewizard
Personally there is way too much boiler plate. I actually love using it in my corpo job because the structure it enforces is great for large teams working in many different features synchronously. But for small nimble teams with good communication the guard rails are more of a barrier than a safety net.

👤 rsynnott
Microsoft… did themselves no favours with J++ and all that. I think a lot of people who were around in the late 90s/early noughties would still have severe difficulty trusting them, as a producer of developer tools.

Like, I get that they’ve been on a bit of a charm offensive for the last decade, and they’re the happy shiny new Microsoft, and all that, but I’d be cautious, myself.

And it’s just, well, not that compelling. C# a slightly better Java, but really Kotlin already has that covered, and the JVM ecosystem is generally better.


👤 journal
I am absolutely using .NET as a solo dev on a very large project, and I have the same question. To me, it's the most vanilla language/framework/IDE combination. Modern .NET is difficult to trash or praise, because of that, no one talks about it. If you ever wanted to experience pure ASP.NET with minimal usage of SPA frameworks, check out https://github.com/denys-olleik/accounting.

👤 1jreuben1
A startup needs to move fast - quick and dirty prototypes in JS / Python turn into MVPs. dynamically typed, low barrier of entry, high velocity. Startups that survive to the point of needing to rewrite for stability and performance, will usually opt for Rust or Go. They often dont need the bloated enterprise-specific baggage that comes with C# / Java - transactional models, IoC, ORMs, complex inheritence models - YAGNI.

👤 sublinear
> Occasionally, it's HTMX+Go (for those who don't like "magic" and also don't like JS).

I don't know about that. HTMX is ultimately a lot of magic javascript hidden away from the devs. That's objectively worse than just knowing how to write a web page "for real".


👤 oldprogrammer2
I've led startups running Rails and Python/Flask, but I do all my side projects in dotnet. And I haven't had a Windows machine in years, fwiw.

Deployment and Cost: For solo projects, I do 1-click deploys to a load-balanced Azure App Service. I was using GitHub Actions for a while, but it was slow and I kept pushing up against the need for a paid plan. I keep things local.

Dotnet is dramatically more scalable than Rails or Django, which means much simpler infrastructure for a lot longer. Poor performance leads to the need for more complexity. More servers, caching, queueing, etc. Then you need things like docker and k8s to manage all that infrastructure. For me, I can scale up or out by changing a single flag, and entire apps are just single dotnet apps (aside from the DB), so there's no need for docker.

Batteries Included: My team that ran Rails was burned by the magic, repeatedly. Over the years, developers made decisions that turned into maintainability nightmares. With Python/Flask, the lack of structure was like a Wild West after several years of rotating contractors. In some of my older solo-dev work with Flask, it was nearly impossible to come back to because all the disparate dependencies wouldn't play nicely any longer. And in both Ruby and Python, the lack of static typing was also a source of inscrutability (so please use type annotations in your Ruby and Python projects - your future self will thank you).

As for why people don't use it more, I think it's largely due to "resume driven development". It's the same reason every startup thinks they need k8s or they need to be using React. That's not necessarily a bad thing. Choosing dotnet is definitely not going to lead to job opportunities in the startup world. But, in my opinion, any startup that chooses dotnet will have a competitive advantage over those that choose Rails, Node.js, or Python because of simplicity and maintainability.

As for the argument that "time to market is faster with rails or python", I disagree. The biggest factor will be using what you know. The second will be the complexity of your infrastructure, which will be much simpler on dotnet. Avoid analysis paralysis as much as possible.

Other folks may have very different opinions, but as someone who has worked on several major platforms, each for years at a time, I have found dotnet to be the best option. However, no choice will be perfect, and dotnet has many warts. My recommendation if you do choose dotnet, is to go with MVC + HTMX. It's not sexy, but it's stable and mature. I don't recommend Blazor, yet. I think it needs another version. Last note: I've never bought any third party libraries/controls to do anything in my dotnet projects.


👤 not-a-good-bet
Having built "enterprise" software for many years, due to very specific requirements, i had to use several languages and techs in a single project like: go, rust, C/C++, java, and .net.

Guess which one is the only one which is a totally pain in the ass to maintain... Yeah, that is C#. As soon as a version is deprecated, we need to scramble around to find out which next version is the minimal supported by all of our customers.

Already did a full migration to latest version once, and was a total pain... customers having to install the .net framework and not having the prerequisites, or installing any other software that conflicts.

Zero problems with any of the other techs. So yeah, now we are building those .net components in go so we can ditch .net for good.

This is a desktop application, so, sometimes we have little control on the end user machine, but, well, even when we coordinate with customers for an entire year, it is difficult to predict what microsoft will do with their prerequisites in the future.

Our software has been on the market for over 25 years so far, and we do see the same problem with other companies developing .net products, since they will usually conflict with us. Some customers just give up and have specific computers to run .net specific features, not the best solution but at least a solution.


👤 xupybd
I'm a solo using .Net it's been fantastic

👤 sergiotapia
have you tried .net recently? `dotnet new yada yada` starts out really well but then bada boom you need to edit some random ass .xml file that visual studio would do for you. death by a thousand paper cuts. i don't want to deal with random .xml files. so i would not use dotnet for solo/small team projects.

👤 yodon
Every senior engineer I know, the dirty little secret they're afraid to admit is that they secretly really like C#

👤 faangguyindia
Anything you can do in Dotnet for backend of webapp, much easier to do in python or go.

👤 yread
I'm a solo dev/small team having a good time with .NET.

👤 homarp
is not-Windows your dev environment? .net tooling are Windows first.

do you plan to use another db than SQL Server? .net 'prefers' SQL Server.

do you plan to deploy with containers? .net is not container first

do you plan to deploy outside of Azure? .net examples are Azure first (and same with EntraID and so on)

as for Blazor, silverlight then the 10 others attempts at UI after that still makes us hesitate to commit fully to it.


👤 poidos
Windows is crap and I try to avoid touching it or anything associated with it.