I looked for Senior Software Developer positions, and one of the things that I’ve noticed is that lots of enterprises look for people with experience with technologies such as .NET and C#.
I personally HATE Microsoft and their platforms. From my experience they take all the fun from developing by creating stupid compile errors with their stupid gigantic Visual Studio and buggy dependencies. Not to mention their ridiculous resources greedy and unsecured Windows OS! Also there are no healthy and independent communities around a their technologies. They don’t open source much of their technologies so it would be easier to hack their tools, and harder to make security patches.
Why enterprises do that for themselves and for their developers?
Do you think enterprises will make a turn in this attitude?
.NET has been around for two decades. It’s a well established technology with plenty of resources, documentation and libraries and frameworks. I guess these are in part the reason it’s still thriving.
You’re thinking about .NET Framework reading your opinions on it, .NET (Microsoft is terrible at naming) is the “newest” standard and it’s fully open source and cross platform. They removed Windows only APIs and embraced the open source way.
While Microsoft is indeed full of shit they did a great move with .NET in the last 10 years.
You don’t even need Visual Studio, I use Rider for instance and I love it! I cannot stand Visual Studio either, mostly because I hate its UI/UX.
At the end of the day is matter of preferences, I like .NET and C# and I work with these technologies daily for instance.
Also, from an enterprise point-of-view, .Net has the same advantages as Java (stability, runs everywhere, backed by a large corp) but is fundamental better designed and doesn’t come with the potential legal baggage of being owned by Oracle.
I would argue that .Net is one of the best techs that Microsoft is producing at the moment. I’ve used it on and off for a number of years and haven’t done any development targeting Windows in a decade. It’s all be running on Linux servers. The dotNet works great there.
And, 100% agree with using Rider. My hierarchy of .Net IDEs is Rider->Notepad+±>Visual Studio Code->manually adjusting the memory on my computer using magnets->Full Visual Studio (whatever they are calling it these days).
Exactly. C# just works for almost everything and there’s very little criticism I could level against it. Modern multiplatform UI is in a bit of a weird spot right now and their product naming is absolutely terrible, but that’s about it.
(I even think that Visual Studio is pretty decent, although I still prefer Rider and Code.)Unless there’s a good reason to not use C#, like microcontroller programming, it’s become pretty much my go-to language, pun not intended.
Can you develop .NET over Ubuntu?
Yes absolutely
Worth calling out as well, but modern .NET is maintained by the .NET Foundation, which is a 501(c) (non-profit) organization that MS founded. MS naturally has a lot of influence over the direction of the language and frameworks, but it’s more of a symbiotic relationship, and others benefit from and contribute to the work as well.
and buggy dependencies
??
They don’t open source much of their technologies
???
Well to be fair, Microsoft used to be entirely proprietary until recent.
Same thing with things like Ghidra; used to be a completely locked up proprietary software for NSA, now it’s open source.
Is 2014 recent to you? It’s 9 years, I’m pretty sure more than half of experienced_devs users started their career after that.
You want to have a superficial little rant about how much you hate microsoft. It’s uninformed and boring, and you’re not going to learn anything in that mindset.
C# is an excellent language for many circumstances. If you knock off the attitude, I’d be willing to explain to you why it’s so widely used.
Your views of Microsoft and dotnet are very outdated, as you’ve been informed. You can develop dotnet code on Linux/Mac, Intel/arm using whatever editor or ide you like. The tooling is comparable to other language (i.e. dotnet add package …, dotnet build, dotnet test bla bla), it’s performant and imo fun.
You should check out the ASP .net core 7 minimal api, it’s a great way to run a backend api (no IIS required), or write some code to control gpio on a raspberry pi, you could try out F# in vs code(ium) using the polyglot Jupyter notebook extension, or just use the repl shell…
Anyway, I just wanted to address the ‘fun’ factor.
Thanks for the update, I think it will be a good idea for me to try it
Is this “experienced devs” or “incoherent ramblings from a teenager”?
I’ve been developing stuff with .NET and F#. For the most part the experience with the compiler, libraries and IDEs + tools has been good. Haven’t had to touch visual studio or windows. Most devs run Linux or MacOS and the end product is deployed on servers running Linux and open source dotnet. I’m about as far as you can be from a Microsoft fanboy but you might want to get up to date with the ecosystem. Is it my favourite tech stack? No, but I’ve experienced much worse.
Here’s a news flash from 1990: Lots of businesses use Microsoft Windows
Microsoft has done some pretty shitty things before, like buying and extinguishing many competitors. But it’s pretty telling that you are NOT an experienced dev if you are criticizing the one thing MS has done really well. .NET is a rather mature framework with multiple seasoned languages under its umbrella.
Having used C# and .NET for many years, it’s easily one of Microsofts best decisions they have made. C# is arguably one of the most dev-friendly languages on the market right now. With each iteration offering many quality-of-life improvements, I can’t think of many languages that offer the amount of improvements that C# has had over the last 10 years. Compare that to seasoned languages like PHP, Golang or even Java and I think C# is still the easiest to use in terms of terse (but still understandable) syntax, generics, data structure improvements, general iterators syntax and can’t forget LINQ improvements. I’ve often felt left behind when using Java, as it plays keep-up with some of the changes in C#.
Microsoft certs were all the rage twenty or so years ago and as such a lot of now mid to upper management, tooling and legacy projects are based on these.
If your org is all Windows there’s not really an easier way to make Windows desktop applications than c# and .NET with winforms. If a team is making any internal tools for Windows users there’s a good chance that’s what they’ll be using.
First, every company uses Windows, you can’t avoid this and you’ll have to learn how to use all the tools (Visual Studio, Office365, everything else). Yes it sucks, no you can’t use another OS if you want to eat.
As for why .NET and C#: my shitty theory is that companies used to write software in C++. Then Java came along but it was not evolving fast enough, and Oracle was suing the whole planet. Microsoft invented C# to annoy everyone (both C++ and Java) and it worked because C# is actually a good language. You have a big SDK, you can do everything that Java does, it’s easier than C++, and you can use your C++ code with C++/CLI. C# was a good alternative and people used it.
Do you think enterprises will make a turn in this attitude?
C++ is too hard (I know, I use it daily), and Java is dead. I don’t think companies who use C# will go back to using an older language. That would be suicidal.
Because code written 20 years ago on .NET and C# still works today, showing the stability of the platform.
I mean… as someone who’s had to port some .NET framework software to .NET 6… yes… but.
20 years old .NET framework code will keep working, sure, as long as you can find and install the correct .NET framework runtime, but maintaining it might be a different matter… you can code .NET with notepad, if you feel like it, but for .NET framework code you will need Visual Studio, with the proper SDKs… which might not be available in the latest version of Visual Studio (on occasion I’ve had to install VS 2019 so I could compile old .NET framework code in VS 2022).
And when you get it to compile you still might have to deal with third party tools (Crystal Reports, for instance) that don’t work in modern .NET or later versions of Visual Studio…
And of course then you want to add something new to the code, which is why you went through all that trouble to begin with… but the tools for what you want to do are only available in modern .NET, or as nuget packages that won’t work with framework… and you’ll have to migrate the whole thing to the latest long term support version of .NET… which sure, is several orders of magnitude less work than rewriting the whole thing in some other language, and heavily automated… but is still a whole process.
But then of course there’s the bits of .NET framework that got deprecated during the transition (or in later updates), or the third party libraries that never got updated… and you’ll have to find or implement replacements for those…
But yeah, once you’ve done all that your refurbished 20 year old code will still work today, and significantly better than it did before… and if it isn’t too ridden with windows dependencies (WPF and the like) it might even be portable to Linux or Mac, or whatever. And it’ll probably still work (and do it even better) 20 years from now.
I’m working on migrating a lot of old .Net Framework code right now, we’re generally going with a complete rewrite but that’s more to do with poor architectural decisions and the fact a lot of it is VB rather than C#.
It’s pretty impressive that code largely written up to 20 years ago is now running on a modern OS, and it’s using the latest Framework 4.8 with all the latest security updates and I can open VS2022 and hit run and it builds and runs fine. Our issues are the maintainability of the code and how it was written rather than the framework itself.
Meanwhile, a few years ago now, I had a web project written in typescript, it was only about a year out of date and npm install failed. Turns out one of dependencies needed to build something with python2, updating that needed a new version of webpack and that broke something else that never got an update to the newer webpack. Installing python2 didn’t work either I think but I can’t remember why.
There’s systems I wrote for .Net over a decade ago that I can guarantee are still running in production and haven’t been touched in all that time.
In short, I think I’m agreeing with you. It’s painful but it’s possible.
Meanwhile in Ubuntu-land, a Python2 script probably just straight up doesn’t work at all.
“At least the .NET code continues to run today”. And you can setup a 20-year-old developer VM running VS2008 in practice and code “the old way” to continue to maintain the old code (that still runs on today’s machines). Meanwhile, you’re FORCED to migrate the Python2 stuff in Ubuntu-land due to a litany of incompatible changes to systemd, X.org, Python2 vs 3 issues and more.
Not just Python2, but also Bash-scripts. (Weird changes to netcat, or ipconfig, or other tools that utterly bork old scripts).
Microsoft isn’t as good at backwards compatibility as it used to be. But they’re still leagues ahead of the OSS community on this.
I for one hate Microsoft Windows a great amount, yet am in love with C#… Just because a company has one terrible product, doesn’t mean everything they make is terrible.
Also… What everyone else here already said. No reason for me to rinse and repeat what’s been said lol.
The enterprises are not going to change their attitude, you might want to. There’s plenty of fair criticism to level at Microsoft, but this is uninformed, inaccurate and even if it weren’t, kind of obnoxious.
Don’t take issue with the platform. Take issue with companies that are so fanatical with “we’re a microsoft/java/javascript/esperanto shop!” that they’d cram it into medical devices and nuclear reactor controls before doing some sort of sober domain analysis.
Everything has its own set of problems.