4 ms·
I want to offer my personal counter anecdote from the dissent around here. I recently got into fulltime C#, on purpose, over all other possible options. There's
by BuckRogers 8y ago
I want to offer my personal counter anecdote from the dissent around here. I recently got into fulltime C#, on purpose, over all other possible options. There's a lot of reasons why.
- Industrial strength language with static types. I used Python and JS a lot, I'm passing.
- Good tooling support, not every language has this.
- Good support in general, backwards compatibility (or side by side support).
- Game development possibilities with Unity.
- Mobile development with Xamarin.
- WebAssembly support already in motion with Blazor.
- Not cool, which is exactly what I want in tech. Fads don't belong in tech. Means more job opportunities for me too.
- Good serverside platform with .Net Core.
- Native on the most popular desktop platform.
- With full MS stack, opens up the option of being the sole IT guy at a small to midsize company. It's certainly possible.
- Similar to Java, lets me move over with minimal disruption if the job market demands.
- Write once, jobs everywhere. I can move back to the smaller area that I'm from. I live in Chicago right now but I've worked in 3 countries, 3 US states & .Net is popular enough in all those locales.
- Career stability, less technical churn in the C#/SQL space (and Java). I'm very tired of flavor of the week scripting languages that are many times really used heavily in NYC & SF.
- I'm not looking to learn new languages all the time. I'm looking to perfect myself as a consummate professional developer. I want to fully envelop all the things that I think people should, discrete mathematics, design patterns and I think learning new languages is great but there are other ways to become an exceptional programmer.
For me, it was C# or Java to base the next leg of my career on. I like the abstraction layer they're on, on a technical basis I think they nailed it. Sometimes newer isn't better. This isn't going to be popular, because a lot of people believe in Javascript and invested heavily there career-wise. I didn't want to and wasm is going to chunk out 25% of the single language fullstack market from Javascript in 5 years anyway and keep taking. Ideally going forward on the web side, I would only do a SPA with Blazor or static pages.
That's why I like C#. I'm looking forward to many relatively stable years in my career within the C#/SQL world without the trends. If it collapses, Java is in a similar situation marketwise.
- setquk 8y agoThe core of it is very good but the tooling falls on its arse on large projects and the build toolchain is dire and the update mill and roadmap schizophrenia has not been friendly. Also integration with other MSFT products is eyeball grating (VSTO for example). Been with it since it came out in 2002. I wouldn’t start a new project on the platform in 2018, even .net core.
- BuckRogers 8y agoCan you give reasons why you wouldn't use it in 2018? Also, what is your proposed alternative? It's disingenuous to dissent without offering the people the savior. If I own a company, need a large swath of developers and we'll assume any random product that could consist of mobile/native app/games, you name it, I'm going with C# everytime because there's nothing else like it. I'm not committing 100KLOC+ of code in some random version of Python, that like all code, may live a lot longer than anyone ever expected. That's for sure. It's one of very few fullstack solutions available for game (serverside+Unity), mobile (serverside+Xamarin) and web (serverside+Blazor), maybe you want a WPF or UWP app too. Or all of it for a single stack shop for anything you want. Nothing else is pulling all of that off today, and may never. MS is doing a fantastic job keeping it vibrant, alive and supported. You're not really convincing me without more than what you left there. A few years ago, yes, I would've agreed 100% with the general attitude but the tide has turned. I dove in deep on Python, got back out before I hitched my career to that. To specifically address the points I disagree with. -Tooling falling off? Examples? I've worked around or with it for a decade now and never saw the tooling fall off.. it's best in class. I really don't understand how this is any worse than anything else. -Build toolchain? An example of a dire toolchain is Javascript's, not C#'s. That is a mess that I want nothing to do with. I can't get behind this one either. -Roadmap schizophrenia? They have it figured out now on the .Net Standard and Core. Your alternative is Python 2 to 3 transitions. That was the real mess. -Integration with other Microsoft products? Good or bad, you probably aren't going to find better integration with MS products than using .Net. I can't get behind this complaint either. That said if anyone has attacks on .Net I'm willing to listen but I don't see it. It's the worst, except for all the others.
- setquk 8y agoTooling. Visual Studio doesn’t scale to large projects (2MLOC+). It’s still a 32 bit app and it regularly just throws the towel in and crashes. Build toolchain. MSbuild performance sucks among other things. Also Consider VSTO build toolchain. We have to ship VS on build machines for example which is expensive and unnecessary. Even if we throw ridiculous IO capacity and CPU at build we hit a wall quickly where there is no return. On top of that managing framework upgrades across tens of solutions is a nightmare. Roadmap schitzophrenia. The core is relatively stable. I’m talking about the ecosystem of abandonment over the last 10 years or so. See my post history for a list of just MSFT projects. Ancillary third party libraries in nuget also suffer from sudden disinterest from the maintainers and abandonment on a regular basis. For your use cases it’s probably the least bad option but on the server side or the desktop these days I wouldn’t use it. Qt/ex/python on the desktop. Python or Go on the server side depending on the use case required. The key thing is developer latency and maintenance cost. While the runtime performance is good the dev side of things is not. It gets expensive quick.