If you can't develop with it on all platforms it sucks. Not to mention the job market for .NET devs is pretty shit and I don't know a single person who actually enjoys it.
I like .NET pretty well, but I don't like working on Windows or being bound to it. (Maybe the Mono stuff has gotten better but when we used it at my company we had two problems: bugs in our code and bugs in the platform.)
Also, after doing lots of things in JS and Python over the last couple years, going back to .NET just feels too "heavy" somehow. The changes in C# and .NET over the years have been very nice so it's hard to justify this feeling. One definite downside of the .NET ecosystem, I would say, is that they take forever to do completely sensible things that everyone else is doing. Things like MVC, package management, deployment tools.
BTW, I have found that in interviews my extensive past .NET experience is viewed negatively. There are assumptions out there about .NET devs and in fact I would say there is some basis for those assumptions. At the same time, I was hoping that smart people would be able to see through that and acknowledge that not everyone who works with a technology is "like that", but alas. So it is a bit of a liability, unfortunately.
.NET is alive and well in corporate environments. For web development I'd never choose it, however for Windows apps it's my goto. Visual Studio is great.
I too have second thoughts about .NET. I absolutely love C#. I've worked in just about any language & dev stack out there and, to me, nothing comes close to the immense power of C#.
My biggest gripes with .NET is tooling and deployments. I do agree that sometimes you wait for ages for tools that are already available in other development stacks (think EF or Team Foundation). Deploying on .NET is an absolutely atrocious experience. Dealing with MSBuild, XAML workflows and WebDeploy is just a royal pain in the butt. On the other hand, I do have to say that when you have a rock-solid group of engineers working on a complex .NET solution, the architectural patterns are much easier to implement and bring new people into than other stacks I'd worked on. Everything just looks cleaner, plus you have some pretty solid frameworks you can tap into such as MVC for web, LINQ for powerful querying, WCF for service-oriented needs, WPF for beautiful desktop apps. Moving from all of this is certainly pretty tough. But I sometimes feel the need to embrace the cool stuff that's happening with the speed of light in other stacks. It's just too big to disregard.
.Net not equals C#.
C# is great, but .Net sucks.
limited ecosystem, no one want to implement good open soure project on .net stack. no similar level project like JBoss.
I love C#, .Net for server side work. My old project was C# servers on Windows Servers and it worked great. I much prefer to C# to Java & Python which is what I do now, I'd even go so far to say as our Windows Blades were more reliable and easier to maintain than our current Linux ones.
The biggest problem with .NET and why I switched is that Linux is free and now has biggest mindshare. Most free and opensource products really are Linux first platforms.
It used to be that you couldn't get fired for choosing Microsoft, but its flipped that free software is so good you feel silly paying for commercial products like Windows.
I can't see much future for the Windows platform which is why I changed. So I think the headline is wrong - any good developer can be happy in C# and write great .net apps - so the good .NET developer does exist. But its also kinda true because the balance has shifted and great new applications are now on new platforms.
In my opinion, almost every complaint I could possibly have about .NET would not exist if it weren't for windows. From the weird idiosyncrasies that make cross platform GUI development hard, to the dumb enterprisey software patterns, to the weird build systems and packaging...all of them can be traced back to windows somehow.
I dunno - .NET has long felt like that silver bullet to me. It's rare for me to enthuse over a programming language, but C# is fantastic and F# great in its own niche, and .NET tends to have all the bells, whistles, and gongs that I feel benefit me as a developer.
I'll bite. I've worked several years doing .NET and web development. Sure, desktop Windows development with C# in Visual Studio is a really, really nice experience.
But shoot me dead if I ever have to do a real, actual, useful, standards-compliant website in Windows with Visual Studio. I'll take me screen, shell, Vim, Python, and SSH over it any day.
I have worked with .NET for a long time and recently did some work with Java, node and python. .NET has a lot going for it but i feel MS is making things more complicated than they have to be. When I need to achieve something a little off the beaten path in the non .NET technologies this is often pretty straightforward to achieve whereas in .NET I have to find some obscure interface and overrides to implement and then deal with weird side effects. I think .NET has become too big for its own good to be maintained by one party. The documentation also has a lot of volume but almost no structure. When .NET started out it was pretty coherent but in the last few years it felt very disjointed without a central design philosophy. Don’t even mention desktop development which is a complete mess since Windows 8.
Maybe I am too negative on .NET but personally find the open source alternatives easier to work with and more fun.
I started my career as a .NET dev, and until recently was the stack I've worked the longest with. I have fond memories of working with C#.
However I am no longer interested in any job that uses .NET and have removed all mention of C# and .NET on my LinkedIn and resume. This is because even despite great recent advances, .NET still seems to be almost exclusively used by tech-as-a-cost-center enterprise companies that I have no interest in working for anymore.
I'm sure there are some great companies in some corners of the world working with C# and .NET, but as far as I can tell, they are still by far, the exception, not the rule.
Up until very, very recently .NET was absolutely useless on non-Windows platforms, only supporting the bare minimum APIs you need for web apps. It's still not very useful on non-Windows platforms.
He vastly underestimates the dedication of .NET programmers and enterprise IT to Windows. Visual Studio / C# / .NET is still the best development environment I've ever used. Devs who love it will stick by it through thick and thin (see: WPF, Silverlight).
Windows 8 may not be successful in the consumer space, but I imagine it has a serious shot at doing very very well in the workplace.
I've been a staunch .Net defender for a long time, but have almost entirely thrown in the towel at this point. MVC is awesome, C# is awesome, F# is awesome...
but, unfortunately Mono just doesn't cut it (Boehm GC? Really? s-gen is a nightmare too, before you counter with that) and Windows isn't a realistic option for a lot of people.
C# is a great language and .NET is probably the most advanced VM on earth. Visual Studio is the most polished IDE. It's just a shame that Microsoft had to enforce windows-only so dogmatically, which is the only reason mono and Xamarin exist in the first place. So the real thing that needs to happen is MSFT needs to make tools for .NET and work to make .NET run on *nix.
Having been a dev for 10 years, 5 of which were almost exclusively using .net and the other half using open source web tech I feel like I can add something to the discussion. I've recently got back into .net for a couple of recent projects after a few years away from it. First off c# is awesome, it's a great language.
The main problem I have have with it is the clunkiness of the tools. Windows itself is pretty poor as a server OS and dev environment(IMHO), it's unnecessarily heavy, has too many useless features, is difficult to automate, and more. Powershell is ok but not really as simple/powerful/portable as bash. SQL server I guess is ok as a db engine but using it is clunky(again feature bloat really hobbles it). I find getting an environment set up with vagrant, capistrano etc. with windows much more complex than it needs to be.
Also one of the really noticeable differences is the overall quality of the community. It's much harder to find good answers to problems when using .net/Windows than with other environments and platforms in my experience. In general I find .net devs more interested in maintaining the status quo than exploring new ideas and tech(massive generalisation but I'm sure I can't be the only one to notice this). Also nearly every tutorial about modern web tech is written for *nix environments as the general community support and interest in .net/Windows seems to be non-existent.
An observation that I've noticed lately when attending tech events and conferences is that Windows just isn't even on the radar. It's not that people actively dislike it or openly criticise it, it's just not even considered or discussed, it's old tech, it's boring, it's clunky.
I have worked pretty much my whole career in .NET, and I think it's pretty good in terms of actual coding and development. It has gotten better by leaps and bounds in recent years. .NET and C# aren't the problem, the insanity of the Windows stack is the problem. So many stupid little things unrelated to your code can go wrong, the toolchain is paltry, and deployment is still a mess.
If you're actually using drag-and-drop you probably already lost.
I like C# and a lot of my career has been .NET work, but I detest this sanctimonious attitude .NET devs cop sometimes, like they're being iconoclastic or rebellious for using the MS stack. Like everyone who doesn't do what they're doing is engaging in groupthink or trying to be "cool". Believe it or not, people actually have good reasons for not using MS software!
reply