23 ms·
As a relatively new engineer (~2 years FAANG experience), there seems to be a connotation around .NET. Perhaps this is indicative of the larger Microsoft ecosy
by jekude 5y ago
As a relatively new engineer (~2 years FAANG experience), there seems to be a connotation around .NET.
Perhaps this is indicative of the larger Microsoft ecosystem, but it feels like my peers at university and in the industry tend to stay far away from .NET for personal projects, etc.
Why is this?
- pleb_nz 5y agoI can't answer your question directly but I can add that what I've noticed is frameworks and language seem to be very regionally orientated. I've noticed on some parts Java seems popular, other parts .net, and so on. It's quite interesting to see differences in job ads across regions globally. In my region, .net is used extensively and my friends do tend to use it for personal projects.
- jekude 5y agoI think you are correct. A couple things probably at play: 1) Region (for example, my data point is from Boston) 2) Framework language choice (https://insights.stackoverflow.com/survey/2021 https://insights.stackoverflow.com/survey/2021) 3) Ecosystem (i.e. Microsoft vs. Unix) 4) Experience level (probably) If anyone has any SF data points I am extremely curious.
- Avalaxy 5y agoDefinitely true. The netherlands for example is VERY Microsoft oriented. I come across .NET everywhere.
- int_19h 5y agoI once saw a world map annotating the dominant dev stack in different regions, and yes, it's absolutely a thing.
- solarkraft 5y agoHistory. Microsoft technology used to suck terribly for small-time developers. It was always popular in the “enterprise” (which also brings with it some extra architectural baggage), but if you wanted to ship an app with it to consumers you basically couldn’t ... until Xamarin, Mono and dotnet core.
- deleted 5y ago[deleted]
- GiorgioG 5y agoI've primarily been a .NET Developer (a few stints using Java/Python) since I finished college when the original .NET first RTM'd (2001). I think today's Microsoft and the Microsoft of 20 years ago are very different. Make no mistake about it, they're still interested in making money first, but their strategy has changed (it had to.) I think that old reputation haunts them (and .NET) It's too bad, because it really is a great cross-platform framework (at least on the server side.) I will often try other languages/frameworks for my side projects and I always go back to .NET. Maybe it's because of familiarity or because I'm obviously more productive with it than Java/JS/TS/Go/Rust/Elixir/Python/etc.
- nick_ 5y agoA lot of people in the industry were turned off of Microsoft. Also academics tend to have FOSS-adjacent philosophies. IMO this really became a passion/pathology in the 2010s when it became viable and quite easy to live M$-free. Another aspect is that M$ tools are used by millions, it's just that there's a selection bias for tried-and-true tool users to just quietly make things work. "Blue collar programmer" comes to mind. All the leading-edge churn, noise, and fatigue is the corner of the industry that generates tons of blog posts and HN links. Most/all of their offerings seemed like legacy software/tools once IntelliJ, big JS projects, and SPAs became such a popular solution for software development on macOS and Ubuntu. Now with VS Code, TypeScript, heavy dev in GitHub platform, cross-plat .NET, vcpkg, etc... and generally very powerful dev tooling, they actually have excellent offerings. All that said, M$ clearly has a long road ahead of earning back good will in "high" tech corner of the industry and Academia.
- UglyToad 5y agoPerceived cool factor, I think. Both .NET/C# and Java are the core of Dark Matter Development [0]. They're what a huge chunk of developers and enterprise actually use but they're not cool and they don't get blogged about. Obviously the history of EEE and Windows only legacy means there's a lot of hostility to anything .NET specifically amongst a subpopulation of developers. However I don't think it sufficiently explains the lack of noise about both Java and C#. It's a bit of a shame because it would be nice to have more startup opportunities in .NET (or Java/Kotlin - rather than slow, dynamically typed, error-prone scripting language du-jour), there are some but they're a tiny minority. It's hard not to get caught up in worrying about the future of one's favorite language/ecosystem but then I think over time the obvious benefits of the ecosystem will win people over, I hope. [0]: https://www.hanselman.com/blog/dark-matter-developers-the-unseen-99 https://www.hanselman.com/blog/dark-matter-developers-the-un...
- vips7L 5y agoIMO Java/.NET just don't get blogged about _on this site_. If you visit /r/Java, /r/dotnet etc, you'll actually find the content about them.
- atraac 5y agoThe issue with /r/dotnet is that most people there are almost fanatics. A single bad word about MS or any topic of the month like MediatR gets you downvoted to oblivion. There's almost no real discussion there.
- magicalhippo 5y agoNot a new thing. I recall the same fanaticism on big C# IRC channels back when .Net 2.0 was in beta.
- kumarvvr 5y agoGetting blogged on this site is the goal. Getting blogged on a site that is dedicated to that tech is not noteworthy. You can find such blogs or forums for every obscure language that has more than a 1000 users.
- jasode 5y ago>, but it feels like my peers at university and in the industry tend to stay far away from .NET for personal projects, etc. Why is this? It's leftover industry bias because of Microsoft's long history of a proprietary tech stack that costs money to use. Today's Microsoft of promoting open source VSCode doesn't really undo the mindshare they lost in the 1990s and 2000s when the internet got big. I wrote previous comment about this: https://news.ycombinator.com/item?id=20256825 https://news.ycombinator.com/item?id=20256825 C#/.NET (including WinForms and ASP.NET) was instantly popular with corporate enterprises but Microsoft never captured emerging startups with their tech stack. E.g. 1990s startups like Ebay, Amazon, Google, etc all used Java+MySQL+Linux instead of C#+MSSQLServer+MSWinNT. And new high-profile open-source projects like Hadoop, Cassandra, Elasticsearch, etc chose Java instead of C#. I currently can't think of a famous project where the canonical source is C#. I use iText C# library but that was ported from Java. That's how it usually evolves. A lot of C# libraries were actually Java projects at first.
- jiggawatts 5y agoA part of this is that MySQL can have read only scale-out replicas for zero additional licensing cost. You pay only for the hardware. In Microsoft Land, the SQL Server team considers this an Enterprise feature, which basically translates to: "We added a couple of zeros to the price". THIS, I feel, more than anything, meant that the Microsoft stack was just a dead end for many startups. The licensing cost for the database alone exceeded their revenue. This was already crazy back then, but since then Microsoft has doubled down and increased SQL Server licensing. It is eyewateringly expensive now, and even their Enterprise customers are slowly starting to switch away from it. They're slowly but surely turning SQL Server into Oracle.
- fomine3 5y agoInto Oracle? Isn't it also expensive?
- jiggawatts 5y agoI mean that Oracle is even more fantastically expensive, and the SQL Server team wants the charge a comparable amount. They're slowly but surely working up to that level...
- DeWilde 5y agoIn my country and some European states .NET is far more popular among devs than Java. Depends mostly on the region and what is taught in universities. The two most popular unis in my country all use teach .NET in the final years of studies and a lot of professors are MS MVP's.
- loudmax 5y agoIn the late 90's and early 2000's Microsoft made a real effort to prevent people from being able to choose any operating system other than Windows. They've come a very long way since then, but they still profit from the enormous amount of software infrastructure still being developed today that's Windows only. For example, they've made it easy to run native Linux applications on Windows but they've made little effort to run native Windows applications on Linux. Their old reputation still haunts them and not everyone is convinced that they love open source and user choice as much as they say.
- cutler 5y agoIndeed. It's not so long ago that Microsoft was draining the life out of open source with its bogus patents racket.
- ziml77 5y agoI think .NET is still seen as if it's Windows-only or Windows-first. If it does start being used cross-platform, I think it will take a lot more time to get there, especially since Java has been working just fine for the same sorts of projects. And it's an especially hard sell given that it doesn't have a good GUI situation. Support for Windows GUIs is back since .NET 5, but the cross platform options are weak. It's very possible when the MAUI library finally releases that we'll see more people deciding to use .NET.
- atraac 5y ago> And it's an especially hard sell given that it doesn't have a good GUI situation. Support for Windows GUIs is back since .NET 5, but the cross platform options are weak. It's very possible when the MAUI library finally releases that we'll see more people deciding to use .NET. Avalonia is great and recommended by most people that used it. Or do we now only count Microsoft-made solutions and then whine that .NET is not open to OSS?
- moogly 5y agoAIUI, MAUI does not include Linux support. There was a third-party effort to get that going, but it's not part of MAUI proper, and it looks somewhat moribund. https://github.com/jsuarezruiz/maui-linux https://github.com/jsuarezruiz/maui-linux
- deleted 5y ago[deleted]
- adamredwoods 5y agoThe package manager is not the best, it may have improved since last I used it. Also .Net really needs Visual Studio (not VS Code) to unlock its full potential.
- atraac 5y agoI'm using Rider professionally and it's miles ahead of VS. Colleague of mine works on the same project using vscode without issues as well. You don't need Visual Studio for anything anymore...
- solarkraft 5y agoVS holds .NET back, IMO. VScode (proprietary version) is less powerful (especially on the refactoring side), but does have a bunch of nice features. Rider is the perfect replacement, though. Comes with all the features of ReSharper (this is a big deal for many .NET workflows, VS may have integrated many of its features, but not all of them) and extensions and themes you can actually use (IME with VS of the 50% that promise to do what I want 90% are broken). JetBrains just know what they’re doing. They’re clearly prioritizing quality (something the VS team seems to be actively working against). Oh, and it’s damn near 100% compatible with VS projects (one thing I missed about 2 years ago were live updates of WPF XAML, everything else just worked).
- elorant 5y agoProbably because of licensing costs. Take for example SQL Server. If you want to use it on a server with more than 128GB or RAM you have to get the enterprise version which is licensed per core and the cost is in the thousands per each core pair. Sure, you get a discount, but still the price is steep.
- jmnicolas 5y agoWhich has nothing to do with .net. I work for a company that won't invest a cent in extra software licenses or dev tools but all my devs are in .net. For the database I use Postgres.
- dustinmoris 5y ago.NET is a difficult platform for people to learn programming, that's probably why. I've sum'd up everything that I think make it quite hard for programming beginners in the article below: https://dusted.codes/dotnet-for-beginners https://dusted.codes/dotnet-for-beginners
- lowbloodsugar 5y agoEven with my personal projects, I am wondering "What am I learning?" and "How might this benefit me professionally?" Other times I'm thinking "I just want this to work". I started with C# with 1.0, back when structs inside structs didn't serialize properly. I've written iOS apps with Xamarin. I am a C# fan. I haven't used it professionally in a decade and my last personal project was years ago. When is C# the right idea? The only time is when the project is entirely captured by the Microsoft ecosystem. There are plenty of places where this is the case. Windows desktop applications. Small business contract work who are still using Windows. Big business IT who still use Windows. Opportunities to migrate to Azure. Where is C# the wrong idea? Everywhere else. Writing for the best monetized mobile market? Swift. Writing for cross-platform mobile market? Javascript. Writing for cross-platform desktop market? Javascript. Maybe Java if you have a history of it. Writing for the cloud? Something linux first. Javascript, Python. If you want a big GC language, why would you pick C# over Java? AAA games? C++ Not AAA games? Maybe C# with Unity? In every category where C# is used (outside Microsoft captured environments), there is a dominant solution which is not C#. And that sucks. Because C# is awesome.
- oaiey 5y agoYeah .. but there is one aspect in this argumentation: C# is everywhere a reasonable contender. So while you rarely get a dominant position (Unity and Backends) you get a lot of second places (Apps, Desktop, ...) which complement your full stack experience in an awesome language. And this is different to other languages: Python/Go: no-show in apps; JavaScript: no-show in data science; Swift: no-show in backends (thanks IBM). From a management perspective, this is not bad. You get movable team members. In my company we have moved people from WinForms app, to cloud deployed micro-portals and then to a Apple/Android App (all different solutions .. not a migration). C# play a big role in that. I think this is again a dark-matter-developer / line-of-business situation.
- lowbloodsugar 5y ago>From a management perspective, this is not bad. You get movable team members. I have a friend-of-a-friend who has a successful 30 person contracting business. They do C#. He, the co-owner benefits from this. I was responding to a question from a FAANG developer. FAANG developers don't get moved. FAANG developers move when they want to move: to projects that they find interesting; to other FAANGs; or to start-ups. And FAANGs don't pick one language because "hey, it's possible to do what you want in it".
- ptx 5y agoOne reason might be an awareness that Microsoft will be Microsoft and they tend to do things like putting "telemetry" in the CLI tools: https://github.com/dotnet/sdk/issues/6145 https://github.com/dotnet/sdk/issues/6145
- orthoxerox 5y ago.NET 6 (or 5, or Core 3.1) is absolutely fine for personal projects. The tooling is great, it runs on Windows and Linux, the web stack is miles better than Spring Boot. But if your personal projects are a stepping stone to a programming job, then .NET has a monstrous legacy problem. In 2002-2007 a lot of code was written using .NET in enterprises: it was the best way to write a rich desktop application for Windows and ASP.NET WebForms, while terrible, were an okay stack for intranet websites, certainly not worse than PHP5 without Yii or Laravel. And if you were a Microsoft shop, you got the best integration with MS SQL Server and (oh Lord) BizTalk if you used .Net. But then Rails and Google Chrome came out and completely upended the webapp industry. Microsoft has been playing catch-up ever since. A modern startup could certainly use .NET 6 instead of the framework of the month to write their world-shattering program, but they won't, because .NET isn't cool. A lot of .NET jobs are in stuffy enterprises where you likely won't be paid to write a backend to a Svelte SPA in .NET 6, you will be paid to maintain an ASP.NET WebForms 2.0 monster that uses WCF to talk to some SOAP/XML webservices. Of course, the same applies to JavaEE, but Java has a second leg to stand on: people wrote FOSS in Java back when it was a dirty word at Microsoft, so not everything in Java shops is a terrible Spring/JavaEE mutant that has to be configured using vendor-specific XML.
- kumarvvr 5y ago>then .NET has a monstrous legacy problem Every enterprise targeting technology has the same issue. In fact, that legacy is an opportunity to move into modern stacks.
- sjellis 5y agoThe wheels started to come off with .NET back when ORMs became a thing, slightly before Rails. Look up "ALT.NET" movement for the history. TLDR: Microsoft wanted .NET developers to only use tech from Microsoft, used various tactics to achieve that, and people got the message. If you wanted to use modern tech or develop innovative stuff, .NET was not a comfortable place to be. Microsoft have tried to move past that, but never really have. .NET has never had a healthy Open Source eco-system.
- oaiey 5y agoLegacy exists in every company and platform older than some years. You either do the business of brownfield jobs or not. Every platform has their ugly history .. they just call them differently: SOAP/WS, RMI, CORBA, 2to3, PHP4, jQuery, AngularJS 1, ... . If a platform does not have history, I would be worried that I am riding something which soon is the legacy. Microsoft does not play catchup in the web space. It is in the pack for some years already. The stuff they do with Blazor is at the upper end of the pack. .NET, like Java, is not cool. It does not need to. It gets the job done without any experiments in a very modern platform. Doing a startup with boring tech is a thing. So in summary: .NET is a very good choice for a beginner or converts. It is fresh, you can do solid stuff, do the full stack in one platform (web, desktop, apps, games, iot, ML, ...) and there are plenty of jobs (greenfield or brownfield).
- jgilias 5y agoI can chime in on this one. I think it's very much a 'culture' thing. So, I'm a *nix guy. You know, running Sway WM, using Doom Emacs as my daily driver, that sort of a thing. Learned vim to write my thesis at night on an armchair where using the mouse was not comfortable. Not long ago I accidentally got involved with a kind of a .NET consulting gig. Rather, I got involved as a domain expert to help out some SaaS startup dealing with that domain, and it just so happened that they were writing their thing in C#. Before that I hadn't used C# at all, mainly dealing with Python and C++. I liked the language, I thought the tooling on Linux was pretty decent. The ecosystem was a bit lacking for the domain in question, but it had other nice things going for it. But there was definitely a bit of a culture clash with the .NET guys. As an example, I did my domain thing in a pretty much self-contained library. While writing it I needed something that would be 'just data' without any additional 'functionality' attached to it, so I naturally reached for `struct`, given that it exists in the language. The .NET guys asked why it was not a `class` instead. See, somewhere deep inside they felt that not wrapping everything in a `class` is wrong on some fundamental level. Later, I had to touch the rest of the codebase a bit. At one point there was something I felt was a 'one-line change', that took 12 files to edit. Mostly routing calls through different auxiliary classes because 'architecture'. And you know, I'm really not trying to diss those guys. They were nice, capable, smart, productive, good people. It's just that I was very evidently from a different 'tribe'. So, I personally like the direction that .NET is taking. I think that this release has very nice things in it. Such as the statically linked binaries, and compilation to webassembly. I also believe that modern .NET has a nice value proposition in being able to use your code across the board in many contexts and settings. On top of that, both C# and F# are nice languages. But I won't be looking for .NET jobs, or putting that .NET stint on my resume, lest some recruiter gets the wrong ideas!
- fabian2k 5y agoThe .NET people were likely right in your case. In C# structs are allocated on the stack, that's why you'd use them. Unless you have a specific reason you'd generally keep pure data objects as classes and not structs. And there can certainly be a culture clash, there is a bit of a tendency towards more complex patterns in the .NET world. But you don't have to do that, and MS is quite explicitly adding versions with less boilerplate in this release, if you prefer that.
- ChicagoDave 5y agoI believe colleges tend to circle around script or newer tools like Ruby, Rust, Python. A lot of development focuses on front-end tools like NodeJS/JavaScript/Typescript. .NET/C#/F#/VB are old. 20 years for C# and VB. And they weren't friendly on non-Windows platforms until recently (last five years or so). Microsoft procured the open source version of .NET (Mono) and decided to push the platform to a unified, cross-platform deployment. That started with .NET Core and has evolved to .NET 6. So you're coming to .NET awareness exactly when it's at its most effective cross-platform capabilities. And AWS and Azure both let you build C# functions/lambdas for serverless API's, so it has market appeal. I'm building my startup, Mach9Poker, in C# and the debugging/unit testing are top notch. The language C# is easy enough. It's the libraries you have to really learn and there is a "way" to Microsoft things that's different. But there are also massive helpers in IO, list management (Linq is one of the greatest technologies ever created), generics, lambdas, and more.
- redhale 5y agoFor the same reason there's no "M" in FAANG. This industry has PTSD from the old Microsoft of the 1990s and 2000s, and isn't open to giving the new .NET a chance. It's a shame really, as the modern .NET stack / tooling / ecosystem is probably one of if not the best there is (at least for general purposes).
- DeathArrow 5y ago>my peers at university and in the industry tend to stay far away from .NET for personal projects, etc. >Why is this? It's a reminiscence from the times .NET was Windows only and MS was considered evil by the Linux guys. Some older people haven't learned that times have changed. And for young people is missing the coolness factor, it isn't promoted and made fashionable like the shiny new framework X for Javascript.