5 ms·
Ask HN: Is it worth learning C# and .NET in 2022?
- smt88 4y agoYes. C# is an excellent language, and it has frequent updates that make it more concise and flexible (as well as improving the type system). The ecosystem is mature and there tends to be a C# version of every SDK. It's very refreshing to use a modern language without spending much (or any!) time searching through hundreds of libraries and trying to pick the not-dead ones. I currently have a large, mature C# code base that has about 12 dependencies. I have a Node code base in the same domain that has 78, and I spent hours selecting many of them.
- pipeline_peak 4y agoIt's all about what you're interested in. If that's gaming or app development, C# is a fine language. Just don't be a "language guy", my love for C# has kinda boxed me into a lot of enterprise software roles, particularly in desktop legacy and Cloud ERP. If that's what you want, more power to you. People here love to rip on Java for a myriad of reasons, the ecosystem, boring enterprise roles. Well, Microsoft Java isn't too far out of that realm, don't let LINQ and fancy lambdas seduce you into thinking otherwise. When you look at ugly old enterprise legacy code, it doesn't really matter what C-like language it's written in. I know this wasn't asked, but last to say is, companies value employers who have a really good understanding of their products internal details and infrastructure. That's something you can't learn in a book or at school. They absolutely do not care about skills in these languages beyond expected competence. It certainly doesn't hurt, but there are a million other C# programmers who know advanced programming language features.
- christophilus 4y agoThe enterprise culture is why I left. C# + Visual Studio remains the most productive combo I’ve worked with, though. I just can’t see myself going back, due to the culture. Also, I’m a VIM and Linux guy now, and hope to never run Windows again. .NET was not a first class experience in VIM the last time I tried.
- pipeline_peak 4y agoDid you find work in Software Development for Unix? In university, I was the other way around, when I got out I said "time to roll up your sleeves and stop using printf to debug things, VS is where things get done". Little did I realize I'd transition from a chipper, curious regex piper into a jaded highly productive custodian.
- christophilus 4y agoI became a web developer, basically. Doing web apps, web services, etc in Ruby, Node, and Go. It was a pretty easy transition. If you know and love programming in C#, my guess is you can pick up just about anything in a short amount of time.
- mattcristal 4y agoWhat about web services and REST APIs?
- pipeline_peak 4y agoAnything popular like that you're gonna find good support available on .NET, that goes for any corporate backed language ecosystem. I think that's why Node has a reputation for being a mess in terms of reliability, there's just so much sub par crap with no company to be responsible for. .NET has a package community as well, , but on average, the stuff in there is just....better lol. But again, nothing about these languages are distinct or remarkable enough to make career changes, the bigger picture here.
- atraac 4y ago> Just don't be a "language guy", my love for C# has kinda boxed me into a lot of enterprise software roles, particularly in desktop legacy and Cloud ERP. I'm in a similar situation. I love the language but I hate overall community and environment being all about Microsoft in most cases. It's really hard to get out too since most people will see you as the 'MS .NET guy'. There aren't that many companies that want generalists and good devs, most will look at you through the prism of being '.NET Developer' and having '.NET experience', not just 'developer' and 'experience'. It's a pain point of mine, even though I quite like .NET overall and productivity it comes with.
- pipeline_peak 4y ago> There aren't that many companies that want generalists and good devs That's the brutal honesty, but to be fair it's on us to distinguish ourselves. It's weird, I used to look forward to development in the real world because I wouldn't have to use all the "useless crap" I was forced to learn in College. Now that I finally see the practicality, I can't ever using it without a lengthy debate. The amount of a CS degree that's actually needed to do these jobs is ridiculous. I used to think bootcamps were a joke, but if I had to guess there's a lot more hungry devs out of there that blow grads out the water. While I grumblingly retire to my office chair like Richard Nixon. > It's really hard to get out too since most people will see you as the 'MS .NET guy'. Idk if this is regular job hunting behavior, but I get messages on LinkedIn for almost nothing but recruiters telling me about some DoD secret clearance .NET job, they never reveal the company unless you ask which I find weird, and then I shortly find out it's a .NET legacy job with pre generic C# and Visual Fucking Basic. Maybe I take myself far too seriously, but I can't help and feel offended when I get offers like that. The only time recruiters contact me for something outside .NET, it's for C++ embedded systems, which does sound more interesting, but I found the embedded world stressful a lot, to be fair it was my first job so I dont really know.
- bob1029 4y agoI would say it depends on your objective. If you are looking for something that will maximize your capability as a professional developer, absolutely yes. If you are looking for something to dabble in just for fun, I'd say its a much less important thing to worry about. For me, the magic of C#/.NET (when used appropriately) is that the language can fall away and allow you to think almost directly in business terms. Features like LINQ are a major part of this experience. When I am working with a complex business domain, I really don't like the idea of playing code golf with my tools. Making the customer happy is far more rewarding to me than anything I could do on my computer. Also, being able to minimize your vendor footprint to just "Microsoft" helps out a ton at due diligence time if you are selling software to other businesses.
- mattcristal 4y agoWhat about the developers tools and the developer environment? Since C# is cross-platform, it would be easy to develop software also in a UNIX-like setting, right?
- atraac 4y agoIt is easy. You can write C# in anything these days, Rider becoming a favorite pretty quickly for many. Everything like dotnet CLI just works on Linux too.
- sjsanc 4y agoI'd say close to just works. I've spent the last 6 months developing with Rider on Arch and it hasn't been a completely smooth ride. Admittedly, a lot of my pain just came from inexperience. I screwed up permissions; it took me ages to setup the right .net packages due to the nomenclature (which, when I installed Visual Studio on Windows, is easily glossed over); function apps took a while to get working. But it really is satisfying once you've got everything working.
- fgonzag 4y agoFor Linux, the best way by far to install jetbrains products is to use the toolbox. I had the same issues you had until someone recommended installing through the toolbox, and it's worked flawlessly in multiple PCs since then.
- hakanderyal 4y agoYes. Without a doubt. More so, if dynamically typed languages are the only ones you know. I've been avoiding them as they were Windows only early days, and Entity Framework Core was too immature at the beginning after the open source wave. Some points, from my PoV of developing business/CRUD type applications; - .NET framework is well engineered solutions to most of the standard requirements in software development. I've spent countless hours looking for solutions in Python for common things like structured logging, validation, websockets, datetime utilities, cryptography, cli, unit conversions etc. when working with Python. - There are a lot of features for reducing boilerplate. Getting better with every release. - Static typing doesn't get in your way. Just the opposite. Eagerly waiting for discriminated unions. - LINQ, especially when combined with EF Core, is godsend.
- mattcristal 4y agoMy experience, so far, has just been in Python developing with FastAPI. Next, I would like to learn a statically typed language, but I am not sure what. I was wondering about Go and C# of course.
- techdragon 4y agoComing from a lot of python knowledge, including deep language junk draw trickery and being able to do all sorts of interesting tricks with it… and having looked into go to do a bunch of things where Go is basically the only supported language (kubernetes operators and some other niche stuff like that) … and now diving into .Net 6 with c# for a few new projects after some past experiments with Unity. c# all the way… Go is like hunt and peck typing with my nose while I’m strapped into a strait jacket. It’s deliberately designed to make it hard to be clever, hard to deepen your knowledge, and for me this makes it hard for me to be efficient… Other than small edits of other peoples code I have never once found Go enjoyable. It’s intuitive to a fault because it’s so minimal and restrained. Like a set of Duplo blocks compared to a set of Lego blocks. It’s really hard to convey this feeling of mental abrasion I have while using it… if I’m not fixing/extending something else where there’s likely only one good way to do something and I’m not in a position to change anything outside the little bit I’m working with… every time I use Go I am constantly ignoring the part of my brain that sees how inefficient this language is for my time I have to sit there typing out so much god damn useless shitty boilerplate that every other language gives you tools to avoid by way of better syntax, syntactic sugar for more advanced patterns, tools for polymorphism and meta programming and all the other things go rejects… hell until very recently it didn’t have generics (I haven’t been forced back to using it since this so maybe it’s slightly better now) C# has a powerful type system, good enough and growing ecosystem of language level packages to empower you to work well. But it does have one big negative, it’s rather IDE dependent, and the package/module/import system is very “implicit” as opposed to the explicit Pythonic way of doing things. So it takes a while to get used to (still doesn’t feel right but my brain no longer bristles at the sight of it anymore) how everything is imported an entire package or module at once and the compiler just takes care of optimising out unused stuff. It also makes it harder to read peoples code samples which cycles back to how much you have to learn to let the IDE do the work, because it’s often the only antidote to tersely referenced object names that have been pulled in from a large package namespace. I’ve gotten rather used to just asking JetBrains Rider to add the necessary using statements. For all the downsides C# doesn’t feel like sandpapering my brain while using it, it’s more employable, .Net 6 is a real boom time for new open source code as they have finally unified the weird .Net Framework vs .Net Core mess, it’s one target and everything lives here now. And Microsoft are supporting cool new technology like gRPC/Web and Blazor which might get us back to the days where you could just design a UI around a push/pull function call model and deploy to desktops which could perform RPC via the LAN to the back office server. Exciting times!
- yingliu4203 4y agoYes. C# is the best OO programming language with good support for functional and procedural programming paradigms. For business applications, it is the best programming language that can be used in both frontend/GUI (MAUI) and backend.
- Gibbon1 4y agoYes because if there is one thing about it is it's easy to pickup and be productive. So you're investing a little time for a lot of gain. An advantage is it's not opinionated on how you should write your code. Which means there isn't the one true way of doing things you need to learn either. It's not like lisp, or rust with it's borrow checker, or C with it's pit traps for the noob. Or C++ where more people understand quantum mechanics than know all it's features. Most of the things you might want to do there are documents and examples how. And unlike other languages those are usually solid. Microsoft have built a vast and curated library for many many things like import and manipulate an excel file.
- brtkdotse 4y ago> Which means there isn't the one true way of doing things you need to learn either. A nitpick/disagree here. While it’s true that both C# and the framework are pretty lax about things, there’s definitely a “right” way of doing things as recommended by Microsoft. Following that guidance means it’s easier to hop between .NET codebases