As a contract .NET developer in London I am first hand seeing the market fragmenting. There are more low paid MVC, CRUD contracts, which are better suited to the freelance market than I’ve ever seen before. With many of these I ponder — why? Why not use Rails? As you state the interesting server side market for .NET is shrinking. “Enterprise” is offshoring.
I have a few points I’d like to raise for all myself, I’ll try and be succinct:
- Inertia. If you were picking a platform today, with no baggage, it is very unlikely you’d pick Windows. So you wouldn’t pick .NET. It is only inertia that is keeping the platform ticking along.
- A 15 year old language is not succinct. It is too difficult to onboard new developers.
- Microsoft can still be hostile. Why is Paket such a pariah? Why does a debugger matter so much Microsoft won’t open source it? Why isn’t the build pipeline a DSL agnostic API?
- Azure. It’s a decent product but AWS has at least three times the market share. Do MS use .NET internally enough to foster the ecosystem in isolation. As C# dev whose last three clients have used AWS how comfortable am I that C# seems coupled to the Azure Wagon? Is Go coupled to the Google Cloud wagon?
- Obsessive adherence to a flavour of SOLID. Does SOLID stipulate IoC Containers and an interface for every “service”, or an adversity to the new keyword? (Rhetorical questions).
- A very unhealthy focus on DRY and unnecessary abstractions.
- A herd mentality. Alternative should incorporate plurality too.
- Back to basics. There’s too much magic, implicit stuff in .NET libraries. Convention over configuration is okay if you know the convention, if it’s not obvious it’s magic shit.