6 ms·
Quite honestly it really pisses me off how C# is evolving and to me this is a clear indication that Microsoft has still a largely wrong mindset in divdev. C# w
by dustinmoris 7y ago
Quite honestly it really pisses me off how C# is evolving and to me this is a clear indication that Microsoft has still a largely wrong mindset in divdev.
C# was once a great language, but today it is so bloated with features that there is no clear way anymore on doing a single thing. Everything in C# has 3-10 different ways of doing it with huge BUTs, making the language harder and harder to learn for beginners.
It doesn't even make sense to make C# more funcitonal. It's trying to be too many things at the same time. It's almost like an obsession which Microsoft has with C#. Everything great they see somewhere they just shoehorn it into C# and actually really harming the language. What happened to just being a good OO language. .NET already has two other languages, one is functional and you can use F# and C# side by side in a project. What is the purpose of mudding C# to a point where nobody really knows anymore how to write clean and good C# code?
Honestly, I see C# developers constantly re-writing and re-designing their code for the sake of rewriting because there's constantly a new way of doing something. C# developers are like Java developers, spending so much time thinking how to write a feature instaed of just getting on with the work.
.NET Core is great, but .NET, C# and Microsoft in general is still the same old shit plagued by the same old MSFT mindset.
If developers want to write great applications then choose anything but .NET (Core), because in C# you'll constantly be chasing and re-writing existing code because things change for the sake of changing without really making the application any better.
.NET Core itself and ASP.NET Core is still changing so much that it's just tiring.
- NicoJuicy 7y agoYou don't have to, asp.net mvc still works. WPF, .. I think the big changes between .net framework and . Net Core weren't that big for a project. And it got a lot faster.
- pjmlp 7y agoThere are quite a few re-writes required for .NET Core migrations, hence why many enterprises are holding on to .NET Framework.
- arethuza 7y agoDoesn't that happen with any toolset though - when I used Java (a long time ago) I remember a lot of similar complaints when new version were introduced. And look at the fuss around Python 2 and 3. Are there any popular application programming platforms that are widely used that haven't evolved fairly rapidly and caused a lot of complaints along the way?
- hvidgaard 7y agoAll of this happened within less than 2 years to the point where you had to do extensive rewriting for just starting your old code. Python 2 was mostly stable 8 years, and you could continue to run Python 2. Java as far as I know (it's not a stack I regularly work in) rarely require rewrite because a new version comes out.
- Clubber 7y agoI suspect it's because it's new and they are still flushing out how they want the overall framework to "feel." In my experience, this is more the norm than the anomaly. IIRC, Delphi would create breaking changes nearly every release. It's two philosophies: 1. Backwards compatibility is king, 2. The best framework possible is king. #1, over time, can lead to a hot mess.
- scarface74 7y agoThat’s true for anything. There are still VB6 maintenance jobs popping up every now and then.
- pjmlp 7y agoIndeed, hence why it is a fallacy to think everyone is running to deliver .NET Core applications. I am yet to get a RFP that even mentions it.
- scarface74 7y ago
- dustinmoris 7y agoI'm not talking about the changes between .NET and .NET Core. As far as I'm concerned .NET doesn't exist to me anymore and it's not even worth talking about. I am angry that .NET Core keeps changing faster than Kim Kardashian changes her outfits. First they focused on making .NET Core all about ASP.NET with a clear focus on MVC and making everything super granular. Then they didn't like how granular it was and started to put lots of featurs into smaller pacakges again. Then they keep re-inventing things. First introduce Newtonsoft Json into the default .NET Core stack. Then rewrite everything. The webhost model keeps constnantly changing. The ASP.NET Core team now is realising that people hate MVC and they are splitting out more features from MVC into more basic ASP.NET Core features, which is why routing has completely changed again with endpoint routing. Honestly nothing is constant, not even for 6 months. Every version of .NET Core almost requires a developer to completely rewrite their Startup.cs class. It's just ridiculous. The reason for all of this is old MSFT thinking. It's not bloody rocket science, people have been saying it for years that they don't want to be forced into MVC, they want things to be more lightweight, bla bla bla. But obviously MSFT cares more about making a shit hello world demo at BUILD and therefore they first must hack together ASP.NET Core which was mostly just about MVC before being allowed to build the core platform to something that is actually useful to others. They'll constantly keep changing the fundamentals, moving the carpet under developers feet and distracting businesses with stupid useless excercises or rewriting shit instead of just creating a stable base platform on which people can freely build applications and actually focus on their own apps.
- Roonerelli 7y agothat is quite a rant for someone who feels its not even worth talking about
- Nelkins 7y agoI think he meant specifically .NET framework, the older .NET runtime.
- jolux 7y agoNewtonsoft.Json was the default JSON parser in ASP.NET Core for a bit, but that’s changed with .NET Core 3’s System.Text.Json. Newtonsoft was never tied to .NET Core itself directly.
- m_fayer 7y agoLong time C# dev and team lead here. Can't say I agree with you. C# has become a great language for the "functional core, imperative shell" way of doing things. That means it has to be a hybrid language. F# is more tilted toward functional-land, C# is tilted toward imperative/OO-land. Both have their place. If C# devs are constantly rewriting their code, that means there's no vision for that particular codebase. It's true that there are many different ways to "do C#." So, a developer or team needs to pick a particular way (OO classic, or functional core/imp shell, or functional, or minimal golang-style) and stick to it. It's more of an architectural challenge than you would get with a language that can only do one of those. The upside is, your system can blend approaches as necessary, all within one codebase. Every module of the system is perfectly suited to its task, from philosophy all the way down. Of course there's the danger of it becoming a mess, but the risk is worth the reward IMO. With great power comes great responsibility as they say.
- dustinmoris 7y agoWhat you describe can only be achieved in the short term at best. If something can be written in 10 different ways then it will be re-writting in 10 different ways, because today you are leading your team and defining 1/10 ways. Tomorrow you leave and another lead or senior comes onboard and will disagree with your architecture and then slowly re-write everything. Even worse, every time you add a new person on your team there's a 9/10 chance that they will disagree with your code. Your team will waste so much time between people just talking about how to write something because people get hung up on minor details instead of just trying to build a good application solving a real problem. The micro benefits of doing something in c# one way or another are in 99.999% of applications a complete waste of time. Whenever I'm trying to hire C# developers (something I've been doing a lot over the years) I'm amazed how little people even know about C#. There's literally so much when you go deep that most people are completely clueless and it's getting worse and worse.
- m_fayer 7y agoI've seen what you describe happen. But it doesn't have to be that way. A wise lead may prefer a different path to their predecessor but respect the decisions that were made before them and realize that it's counterproductive to chaotically "drip-migrate." And good experienced developers will not get bogged down in endless debates with no clear winners. It just sounds like you've had some bad experiences.
- m0xte 7y agoAye it’s a burning trash heap of everything thrown on top now. MSFT stacks are an ever ending wild ride of change, deprecation, constant direction shifting and bugs. I’ve been writing c# since 2002 and I’m quite frankly done now. It doesn’t help me solve problems now. It just creates new ones I don’t want to solve or have to pay to solve. The IDE is buggy, the platform is buggy and the churn is so bad it’s a ridiculous prospect trying to build a non trivial business on it now. Most companies are still stuck on classic .net because hardly anything is really portable to core. On top of that when you do finally drag it to core 2.2 then it’s deprecated so you have to rewrite half your MVC stack for 3.0. And then there’s the customer abuse like opt out Telemetry.
- scarface74 7y agoHave you looked at the Javascript and front end ecosystem over the past 10 years? .Net is remarkably stable comparatively.
- m0xte 7y agoYeah I’ve avoided it intentionally!
- philliphaydon 7y agoDisagreed. Upgrading from 2.2 to 3.0/3.1 is not rewrite half your stack. I literally just upgraded a 1.5yo project at work from 2.2 to 3.1 in a couple of hours. I had 1 undocumented issue which took the bulk of the time to fix. Everything else was pretty much namespace fixes or EF being more explicit. 2.2 to 3.1 is probably the easiest upgrade I’ve ever done. You wanna talk about mvc 1 to 2/3, now that was a painful upgrade.
- yread 7y ago2.1 to 2.2 can be a bit of a pain though
- madiathomas 7y agoI have been programming in C# for 13 years now. Majority of new features are just syntactic sugar. Code I wrote in 2009 is still running even in 2019. I don't rewrite my applications in a newer version each time there is a new release of .NET Framework. I only use the latest language features on new projects. Problem starts when I am in a support and maintenance job because I quickly fall behind. When I go for interviews, I get asked questions about new features of the language, which I feel is unfair. I feel sorry for new Developers because I learnt those features bit-by-bit over the years and they are expected to learn them at a go. It is also hard to understand why a syntatic was introduced when you never used the way it used to be done.
- scarface74 7y agoI for the most part agree with you. But Entity Framework and ASP.NET changes significantly (for the better) with .Net Core. I also use Resharper, it repeatedly reminds me of new syntactical ways of doing things.
- pdwetz 7y agoVisual Studio itself also does that (I forget when it was introduced; a few versions back I think?). I haven't used Resharper in a long time, so I'm not sure how it compares now, though.
- madiathomas 7y agoI started seeing it on VS2017. I use it a lot in VS2019.
- madiathomas 7y agoVisual Studio copied Resharper. VS now suggests some new language features.
- crc32 7y agoEvery language has a lifecycle. I understood from a Microsoft conference I attended (regrettably I forget the speaker) that their decision to incorporate new features so rapidly was a very conscious decision, based on what I thought to be a quite perceptive look at the landscape - to some extent C# has always been a reaction to Java; a language that often comes under fire for its extremely slow and cautious incorporation of features.
- xmichael99 7y agoI read your comment twice trying to fully understand your perspective. I've been working in C# off an on now for about 10 years and as a guy who "grew up" on version 2, I mostly use the core features, but wow do I love some of the new features. The introduction of Tuples in 7 changed the way I program so dramatically in a positive way - every has their own style for me Tuples as per my example allow me to return a code + the data. I welcome the improvements and think MS is doing an amazing job.
- adelarsq 7y agoFor me tuples are a game changer. The code stays clean and easy to undestand.
- carlosrg 7y agoTotally agree with you. In fact feature and syntax bloat seems common is most popular languages today, like Javascript, C#, Python or even C++, as they keep adding things to compete with new languages like Rust or Swift (and these languages keep adding new things on every iteration too). It's very tiring to keep up.
- bjoli 7y agoWhich is the amazing part of lisps. Syntactic changes can be implemented as libraries. You have to have some idea of what is a macro and what isn't, but following the rule "if it can be written a a procedure, write it as a procedure" has never failed me. The world's best OOP-system (CLOS) was conceived using macos.
- apta 7y ago> C# developers are like Java developers, spending so much time thinking how to write a feature instaed of just getting on with the work. I see this in Scala, not Java, as the latter's feature set is much more restricted.