Why I swapped C#.NET for Python as my default language and platform (and won’t be going back)
Anthony Shaw

Dev for 25 years here, .NET dev since 2003. C# was really great for Winforms when it first came around, ASP.NET and related technologies have always been a bit of a problem. I think part of the problem was trying to come from a stateful desktop philosophy to a stateless web.

I’m “lazy” like you btw (even though I’m up at 6am every morning and go to sleep around midnight-1am coding), and lazy for a few simple reasons:
1) Simplicity is common sense, when complexity becomes overwhelming there’s an overarching problem that hasn’t been seen
2) Thereby the best solutions offer simplicity, and can be explained fairly simply
3) My new benchmark for simplicity is, can I run it from OSX? If not, I have a problem. (I also run Windows and Linux, but I run OSX from my MacBook Pro and that’s the one I do development on these days)

I’m highly disappointed with web frameworks in general as here it is late 2017, and I can’t just use a shell script or GUI to point to my existing database, choose the tables/views/stored procs I want to expose and the role permissions to do CRUD, and have it programmatically generate my model and views on the fly, with JWT authentication. That’s really ALL I need from a backend Web API. If I want further functionality I’ll code it in and chisel out the functionality I want.

Keep in mind I’m running a frontend server for NodeJS/React/Redux, that’s the best option if you want mobile and desktop accesibility is by separating out your backend API as its own server just serving up JSON.

Django comes the closest to what I want with its inspectdb option, but you still have to build up the base level views, register models to the admin site if you’re going to update them there, and implement your token authentication manually through configs to get a basic authentication JSON Web API.

That’s still a decent amount of work that can be automated, but at least it’s a far cry from messing with .NET Core’s slow EF Core, giving up with EF Core after you realize how terrible it is and trying to find a way to get System.Data.SqlClient or equivalent for your provider to work (since it’s all changed in the move from .NET to .NET Core). Then you’re going to mess with the OWIN Identity provider for an hour or two, you’ll probably fiddle with ApplicationOAuthProvider for a while, then you’ll manually build your models, and your API controllers.

This entire process can, and should be automated. Then you can actually focus your time both on designing the right data model for your app, and designing the frontend that customers see. Those are the things that actually make your product stand out, the backend, while critical, is there to be a go-between. However, ASP.NET Core is faster so there are some big gains to be made if you can get some of the Django functionality working within .NET Core.