6 ms·
Thank you for speaking up about the monoculture in .NET, it’s a personal bugbear of mine working in a primarily .NET shop - for all the praise people like to he
by snuxoll 8y ago
Thank you for speaking up about the monoculture in .NET, it’s a personal bugbear of mine working in a primarily .NET shop - for all the praise people like to heave on the NuGet package collection so much revolves around Microsoft’s own frameworks and supporting libraries and other products.
People have arguments in JVM-land about why you should use X web framework or Y SQL/ORM library or Z foobaz. Too often in the .Net world I see complete dismissal of everything but ASP.Net MVC, EF+MSSQL, etc. Oh, and of course you should use Azure for everything.
I freaking love F#, and to a lesser extent C# - but I can’t stand .NET as a whole because of this.
- sureaboutthis 8y agoA relative of mine manages a huge .NET shop in Texas and has said the same thing to me many times.
- gameswithgo 8y agoi see people avoiding EF all the time
- pknopf 8y agoMany people are choosing it because it's the blessed way of doing things, but it is crazy overkill and such a heavy hammer for many cases. There is rarely a case to use EF.
- Solar19 8y agoWhat is EF?
- wantoncl 8y agoEntity Framework
- sdfin 8y agoDoes what you say also apply to EF Core? I don't know the previous EF version, but EF Core seemed simple to me. Particularly after comparing it with what I knew about Hibernate.
- pknopf 8y agoI have the same opinion on both. My default is to just use ADO.NET with Dapper or ServiceStack.OrmLite.
- JamesBarney 8y agoMind explaining this more? I love EF and how quickly you can get spin up a database and get started writing LINQ queries against it. Also how easy it is to get code reuse which is a pain in the butt with sql, or throw together a multi tenant app with global query filters.
- pknopf 8y agoYou can quickly get a database spun up, but that time is offset by many of the warts that you'll run into later on. For example, you'll quickly realize you need to have ```AsNoTracking``` on your queries because the performance is terrible. You'll also find that you can batch update/delete items. I've also had problems with migrations after updating EF Core (don't remember exactly). You can get spun up quickly, with Linq, using something like Dapper or ServiceStack.OrmLite. They work on raw ADO.NET, so they are incredibly easy to reason/work with. The errors that you'd run into wont be shrouded in layers/abstractions that are specific to EF/Core.
- JamesBarney 8y agoI definitely think you're right that as ORMs move farther away from the bare SQL abstractions leak and when things break they break in bizarre hard to grok ways. But I also think that heavier duty ORMs have their place. Recent circumstances have meant that I'm building out a lot of applications from start to finish in one to three weeks. These applications deal with very little data, the largest tables are in the 1000's of records and in circumstances like that I need crank developer productivity to 11 and for that I'm willing to sacrifice performance and simplicity. And for that EF has been a great companion. I've also used a combination of EF and DACPAC. Where I used DACPAC to manage the schema and migrations and used EF for CRUD and that's been a pretty great combo. And I definitely have to drop down to sql, especially for reporting/analysis type queries.
- bitwize 8y agoSay what you will about Java -- Oracle are shitheads and Java was late to the generics and lambda parties -- but it deserves full props for getting the most influential free software organization that doesn't involve RMS or ESR, the Apache Foundation, on board in the late nineties, and that has shaped the Java ecosystem to this day and made it more open and inclusive. Still not ideal, but it's the enterprise platform I trust the most.
- ncmncm 8y agoI thought the Apache Foundation was where projects go to die, or to wallow in irrelevance, or something. Is OpenOffice still there?
- pjmlp 8y agoApache Foundation played a very crucial role fostering Java FOSS community.
- ncmncm 8y agoOne could draw a corollary, there, about Java. But it might be perceived as invidious.
- EdwardDiego 8y agoSeems to be a few lively projects in here. https://apache.org/index.html#projects-list https://apache.org/index.html#projects-list Kafka, Hadoop, Flink, Ant, Maven, Impala, Parquet, Avro, Spark...
- pjmlp 8y agoOracle has done a lot for Java, which has stagnant under Sun, is a member of the community since 1996 when they presented alongside Sun the NC running a Java based OS, and besides IBM no one else cared about Sun's future. Even Google if they wanted to actually get away with their little action, could have taken the opportunity to own Java.
- pjmlp 8y agoBeing on a Java/.NET/C++ shop, I hardly notice a difference between Java and .NET mono-cultures. It was mostly JEE or Spring, Swing or SWT, Ant or Maven, .... everything else tends to be loved in online forums but hardly seen live across the globe. Stack Overflow recent survey results are yet another proof of it, every JVM language that is going to "replace" Java is stuck in single digit percentage.
- snuxoll 8y ago> Being on a Java/.NET/C++ shop, I hardly notice a difference between Java and .NET mono-cultures. Don't confuse your corporate monoculture for a monoculture of an entire ecosystem. > It was mostly JEE or Spring, Swing or SWT, Ant or Maven, .... everything else tends to be loved in online forums but hardly seen live across the globe. Yeah, big frameworks are still popular, nothing surprising about that. Thing is, these big frameworks are usually designed to be modular out of the box - if you don't like a certain component don't use it and pull in something else. No need to throw the baby out with the bathwater, and there is plenty of choice for individual parts of your stack without nixing Spring Framework or CDI. Hell, even if you do you have micro-frameworks like Dropwizard that are just various components welded together because the ecosystem makes doing it fairly easy. > Stack Overflow recent survey results are yet another proof of it, every JVM language that is going to "replace" Java is stuck in single digit percentage. And? Nothing "needs" to replace the language, though nothing until Kotlin has ever been in a position to even be a #2. Scala can't stop breaking compatibility every release, nobody ever heard of Ceylon, Groovy & Clojure don't fit the same statically-typed niche. All of these work though, and they all can share code with each other so it doesn't have to be a zero-sum game either.
- zmmmmm 8y ago> And? Nothing "needs" to replace the language, though I think this is a really important thing about JVM langauges. They can exist successfully at much lower thresholds of popularity because they piggy back on Java. So I don't have to worry about Groovy dying off (which is not to say it is) - because basically as long as Java is around it is going to have access to a giant community of developers. So using Groovy or Clojure or Scala etc is a much lower risk proposition than jumping in the deep end with a stand alone language. In that sense, Groovy / Clojure / Scala / Kotlin don't really compete with each other or Java as much as help each other, and Java's popularity is really the sum of all of them.
- JamesBarney 8y agoOne of the things I love about .NET is the monoculture. It means that I can jump on any .net stack and have extensive experience with their ORM, their IDE, their language, their sql database, their mvc framework, their front end language, and even their mobile stack. It's one of the few stacks that truly allows you to be a full stack developer with ease. I love solving algorithmic problems, I love data modelling, I love learning about the domain, I love solving software engineering problems to deliver useful software people love. I dont like spending time going through documentation and learning yet another technology that accomplishes the same thing. 98% of projects can be accomplished just as well with react or Angular, typescript or Vue, mysql or sql server, hibernate or EF, asp.net mvc or Nancy, c# or f#, git or tfs, Asana or VSTS. These decisions don't matter nearly as much as the expertise of the team. So it's nice to be able to field or join a team of experts on every part of the stack and focus on solving problems with technology and not the technology.
- deanCommie 8y agoOnly if you ignore the entire .NET OSS community, most of which puts out better versions of everything you list than the default Microsoft stuff. I do think I understand your point - there is comfort in knowing there is one default solution for almost every abstraction. But how much can you love it when each one tends to be mediocre? Disclosure: I spent 10 years working on .NET from 2006 to 2016 , so I've missed the last revolution of .NET Core, so maybe things got better?
- JamesBarney 8y agoWebforms was absolutely awful and I've worked with technologies so terrible they single handedly sank projects.[0] . But I've never found that modern .NET defaults were so terrible it wasn't made up for by the voluminous amounts of documentation(not just official documentation but stack overflows/blog posts etc) that you get from the default option. Whatever weird issue you end up running into there is a documented fix which can save anywhere from hours to days of time.. Not sure what you worked on but .NET has gotten better since 2016 but not by leaps and bounds(exception EF Core is leaps and bounds better than the prev. version). I've always thought asp.net mvc was good, newest one is better but not by a huge margin. Original EF was bad but EF Core is far better. TFS was mediocre but now everyone uses git. Typescript is absolutely delightful. Xamarin's kind of painful but all cross platform mobile development seems to be. Visual Studio is probably best in class of the heavy duty IDE's. I've heard complaints about nuget but it always seems reliable which is more than I can say about npm. The work item tracking kind of sucks but it makes up for it with streamlined integration from the IDE->commit->task tracking->time tracking->reporting->invoicing. The part of the stack that always bothered me were the poorly designed DevExpress/Infragistics controls that were ubiquitous. They get weird impossible to debug errors. They seem to trade extensibility for endless amounts of configuration. But with modern .NET applications you don't see them anymore which has brought me great joy. [0] - One time upper management forced all of the devs in the organization to use a high performance real time database that fell down with 200 points/minute. And would sometimes(monthly) crash so hard both the data and the installation and sometimes the vm were unrecoverable. It took 3 days to install and we required one full time person on a team of 5 whose full time job(she was working 60 hr weeks) was just to keep 3 instances running(Dev/test/stage).