Skip to main content
GameDev.net gamedev.net
🔒 Locked

C# becoming obsolete ?

Started by _Kaven_ Jun 12, 2015 at 4:09 AM 12 replies 23.9k views
Original Post
_Kaven_
_Kaven_

French man from Qc,Canada here I need some profesional advices about C# and if it's a waste of time to learn OR what's the best way to learn it today in 2015 and avoid the legacy dying stuffs ? (Quick info about me : did C++ 12years ago, im a network guy who want to go back into programming, remember my concept pointers, class etc etc but I can study like 10hr's a day for 2 years before looking for programming jobs etc can I reach junior lv ?)

1) Is C# becoming slowly obsolete with the mobile revolution and the frontend client side who seem to go to Javascript/Html5 css... where .Net and C# in general will stand in all this a niche market for backend ?

2) Why some programmers told me that WindowsForms & WebForms are dying and Wpf future is uncertain ? Let's say I want to get back into programming and learn C# today in 2015 should I avoid all that gui stuff and just get a solid grasp of the language and jump to Asp.Net MVC 5-6 ? is it possible to program frontend and have a solid career and avoid .Net all together by doing html,css,javascript,angular etc etc ?

3) I am asking this because it seem the open source scene seem to be booming with Java, Ruby, Angular, Php and the server side too with apache etc where .Net stand (or compete) against thems ? can asp.net mvc 5-6 compete well ? or its mostly corporate stuff

4) on the Database side of things, what would be the ideal path for learning ? I seem very interested in programming database and do backend stuff compared the front end web dev stuff where that could lead me oracle, sql ado.net entity ?

5) is it possible to learn mostly everything or be like junior lv in front end web dev + database and destop applications ? my goals (before getting advices from programmers) was to learn C# 5.0 with VS 2013 do a few windows forms apps and jump to asp.net mvc and play with database

thanks have a nice day

Mederick

Ashaman73
Ashaman73

C# as language and .NET as framework will not vanish very soon (C++ survived java and C#, thought most enterprise applications are no longer written in C/C++). Single technologies might get obsolete (e.g. older Forms frameworks etc.). On the client/mobile/web frontend javascript etc. might be the current king, but this can change in several years. And eventually, back-end technology is still ruled by java and .NET.

AlanSmithee
AlanSmithee
I do not know your sources, but C# and .NET is anything but dead. The revolution you are reffering to I would say is pretty much restricted to JavaScript, with it now being available as a server side tech.

If there is any tech that is getting obsolete it is Java, wich is having a hard time keeping up with C# and .NET. It will still hang around for 50+ years though. (Companies still support old Cobol mastertdata systems because of legacy code)

My advice would be to explore different (web - since this seems to be your focus) techs with a focus on .NET (MVC) and JavaScript.
PKLoki
PKLoki

Languages and frameworks will always come and go. You could spend two years worrying about that, or you could spend two years becoming very proficient with any language of your choice.

As long as you don't go out of your way to learn something completely weird then your knowledge will set you in good stead for the future, so grab some good books and get down to it. And if in two years everyone stops using C# overnight and Perl somehow becomes the flavour of the month, then learn that too. Most programmers can use several languages, and a lot of very good programmers go out of their way to learn more all the time. Each one tends to get easier to learn, and each one will expand how you look at code in any language.

dilyan_rusev
dilyan_rusev

It really depends on what you want to do.

For game development, C# + WinForms is the easiest way to integrate with native code (if you're writing an editor or just need a lot of P/Invoke).

For business applications, C# + WinForms isn't dead either. Visual Studio's WinForms designer makes it easy to very quickly write small utility applications, which is ofthen what IT departments would do, especially for state institutions.

WPF can achieve impressive visuals, but suffers from internal Microsoft power struggels (the guys that do tools vs the guys that do the OS). If it is updated to more easily support newer DX withouth the Windows Runtime, I guess it will be used even more.

All the flashy news are for web technologies, and Microsoft try to follow with ASP.NET MVC. Last time I wrote a site with MVC, I was impressed with how easy it was. You get ORM + template engine + great debugging experience. Recentely, they've been going to the world of "stuff happeing automagically if you follow The Convention". Whether or not you like that is a matter of preference. In my opinion, their web stack is a good piece of technology, and it has its following.

ASP.NET WebForms is dated technology. People hate on it too much, IMO. Still, a few years ago it was VERY popular, and lots and lots of sites were written using it. Which means they'll have to be supported. Also, some .NET CMS-es were based on WebForms. I guess they've isolated those parts over the years, but that means even more sites depend on WebForms. Again, my own opinion is that this is not a very good implementation, but the idea of reusable components is a good one.

When it comes to databases... I haven't done that in years. What most people around me use these days are either ORMs that are related to the framework/language of their choice, or a very small population of very vocal hipsters that use alternative storages, like MongoDB. IMHO most sites can do with SQLite, but many people want to engineer big and complicated setups for sites with less than a thousand visitors a month. My advice would be: get familiar with basic SQL syntax. You don't need to be a wizard or anything, but if you use an ORM, you will have to go down to SQL when debugging. Also, regardless of what database engine you use, the basic SQL is mostly the same. When you are at it, take some time to look at MongoDB - it is the most popular alternative storage in my dev circle.

In summary: .NET ain't dead yet. If you work with .NET, you'll be most likely doing business apps/sites or supporting such. This is not bad, as it is usually a very stress-free job that pays well.

If you want to do web, forget two years of studying. Start writing simple sites ASAP and learn on the go. Blog would do - the ability to write blog posts & comments in a site is a nice test to see if you can handle security (logging in, setting up https), storage (can go with simple files, any SQL engine, or the new document storages), templates and client-side programming. When you do a veeeery simple blog post, do one-pager site (e.g. https://onepagelove.com/) and make it mobile-friendly with responsive design. If you pull these off, you're ready for 99% of web development jobs. Plus, you've immediately hireable, as you have something to show for your words.

Buster2000
Buster2000

I think your use of the word obsolete is a little extreme. No C# is not obsolete and will be around for quite some time. Also no technology is not worth learning.

However if you are asking what technology you should learn to make yourself more employable and earn a higher salary then I'd have to say Javascript and HTML5, Python, Java and possibly Ruby. These are the technologies all the newer web shops, startups and large companies and Banks are using nowadays.

renman29
renman29

I thought c# was still gaining popularity. (plus I find it very easy to develop without bugs, workflow is quick, performance is good) -- also I came from a background of C/C++ and the transition to c# was extremely easy (feels like the same language) - so if you know one you can comprehend the other. I even noticed that I was able to follow a java tutorial and know how to make the same in c# - a lot of similarity. A lot of game engines and frameworks are built around C# also.

However it does seem java is gaining popularity too. I would want to brush up on C/C++/C# and Java (all similar) - for development ... and also php/css/javascript/sql would be useful in my limited opinion.

I remember in university some of our pompous pretentious professors told us C/C++ was already becoming obsolete(many years ago) and that we should only focus on learning Delphi(which I liked) and Eiffel - luckily I followed my instincts and bought a C++ compiler and focused there instead.

jacmoe
jacmoe

I programmed in Delphi for a couple of years and loved it.

Programming graphics, and later games, led me into the murky mires of C/C++.

I was thrilled to hear that Hejlsberg was brought in to create a new language called C#, he did an awesome job with Delphi. And he did not disappoint.

However, the surrounding .NET framework has never appealed to me, especially since I don't like to be married to Microsoft/Windows.

It is a pity that Mono was so badly handled but let's see how it goes now that MS has opened the source code.

Bottom line:

Some of the technology around C# will definitely become obsolete and replaced by something else, but C# is a very good language so it will stick around.

Too many projects; too much time
conquestor3
conquestor3

For game dev technologies don't really seem to die often (Except hardware). I mean, there's still games being published on steam right now made with RPG maker 2003, and some are pretty good, too.

Gunbound (Great game) was made with game maker.

and AAA (Or at least large studios) seem like they're more willing to drop C++ and play around with C# now, too. Doublefine's even been using Python recently.

On the business side of things, C# is like a forest fire consuming entire swaths of the world. C# is in such massive demand there's tens of thousands of unfilled jobs at every level of experience. The past 4 businesses I've worked for would simply not turn down a talented C# dev that applied.

SmkViper
SmkViper

1) Is C# becoming slowly obsolete with the mobile revolution and the frontend client side who seem to go to Javascript/Html5 css... where .Net and C# in general will stand in all this a niche market for backend ?


No. MS is still actively developing C# and .NET. In fact they recently open-sourced the C# and VB compilers, as well as large swaths of the .NET runtime. C# seems to be the language of choice for the new "Modern" apps in Windows 8 and newer, and the Windows Phone. With Xamrin you can even use C# to make Android and iOS apps as well.

2) Why some programmers told me that WindowsForms & WebForms are dying and Wpf future is uncertain ? Let's say I want to get back into programming and learn C# today in 2015 should I avoid all that gui stuff and just get a solid grasp of the language and jump to Asp.Net MVC 5-6 ? is it possible to program frontend and have a solid career and avoid .Net all together by doing html,css,javascript,angular etc etc ?


Windows Forms seems to be in a holding pattern. It's not dead, but it hasn't seen any major upgrades in quite some time. New OS features require extra libraries (you can't even get the Windows Vista folder selection dialog without an external MS library).

WPF seemed to be in a similar holding pattern for a while, but MS has announced this year that a newer version is coming, so it sounds like it is in active development still.

Of the two WPF is probably more "future proof" on Windows as MS modeled the Modern WinRT UI libraries after it, so if you learn that, transitioning to a "Modern" app should be relatively straightforward.

3) I am asking this because it seem the open source scene seem to be booming with Java, Ruby, Angular, Php and the server side too with apache etc where .Net stand (or compete) against thems ? can asp.net mvc 5-6 compete well ? or its mostly corporate stuff


Aside from Java (which comes with it's own large pile of issues) I haven't heard of any of those other languages being used in games. If you want to do server side or IT work, sure.

5) is it possible to learn mostly everything or be like junior lv in front end web dev + database and destop applications ? my goals (before getting advices from programmers) was to learn C# 5.0 with VS 2013 do a few windows forms apps and jump to asp.net mvc and play with database


You can't really learn "everything". You might be able to get close, but you won't be very good at any one of them. Pick a technology and learn it - if it dies, so what? Programming is less about the language you use and more about the techniques you learn. Most of the things you learn while experimenting with will transfer to a new language, even if the syntax and some of the best practices are different.
swiftcoder
swiftcoder




did C++ 12years ago... remember my concept pointers, class etc etc but I can study like 10hr's a day for 2 years before looking for programming jobs etc can I reach junior lv?

Junior-level programmers need to be able to read and understand code, be moderately proficient at writing and modifying code, and learn new technologies quickly. Your old C++ knowledge plus 12 years of networking experience might already put you on that level.

Unfortunately, you may find that a lot of companies hiring for junior positions are looking for people who are young, maybe straight out of college, and willing to work unpaid nights and weekends. If that doesn't sound like you, then you either want to get out of the 'junior' bracket, or try the freelance market.




I seem very interested in programming database and do backend stuff compared the front end web dev stuff

In my experience there are generally two categories of people handling databases: (a) kids throwing data around such that some of it happens to land in the right tables, and (b) greybeards who could reimplement the database engine if they really needed to. Moral of the story: there's no such position as a 'junior database engineer'. You are either a developer who happens to use databases, or an expert in databases.

You should certainly learn how to use a few databases (something SQL, maybe even something NoSQL), but mostly as it applies to building web applications.

Tristam MacDonald. Ex-BigTech Software Engineer. Future farmer. [https://trist.am]
MathieuDSTP
MathieuDSTP

Bonjour Médérick,

Mathieu here, coder from Montréal now established in Baltimore, Maryland.

1) Is C# becoming slowly obsolete with the mobile revolution and the frontend client side who seem to go to Javascript/Html5 css... where .Net and C# in general will stand in all this a niche market for backend ?

C# is not becoming obsolete at all. It is extremely active and the fact that Microsoft just put a huge part of .Net online as open source software only increased the vigor of the various open source communities using it.

With web technologies going more standards over the years (as "standards" they can be) everything is there to let us believe that someday, maybe closer than we think, we will all be developing front-end using web technologies.

Just look at all the effort that Unity recently put to offer a quite decent web version of their Unity 5 game engine framework or the already amazing and even more promising and fully open source babylon.js web game engine all both taking advantage of webGL (openGL for the web accessible through javascript within the browser).

Only two years ago the fps (frame per second) of the first webGL experiments was limited to at around 10 fps for something that could approximately pass as single-A game quality. Today we are approaching 30 fps for something even more rich graphically. Look for youself at the samples http://www.babylonjs.com/.

That being said you will not see the next Elder Scrolls on the web tomorrow, it will take a couple of years for that. Nevertheless almost all the technologies are there today to do so. With a modern web browser you can use hardware accelerated graphics and sounds, joystick and Oculus Rift (on IE11 and on Chrome and Firefox) and you can already preload (as in download and install) assets in the browser cache while asking the user the authorization to use gigabytes of local storage on their computer.

I agree it is not yet what you need to run Crysis or UDK game engines but it's getting there. Vive le web!

Apart from all this front-end javascript technologies there is still a need for a back-end and C# (or any other .Net language of your choosing) offers a very nice and convenient way to implement it. Several MMO already use .Net ASP.NET Web API as their REST data server to enable communication between all players.

2) Why some programmers told me that WindowsForms & WebForms are dying and Wpf future is uncertain ? Let's say I want to get back into programming and learn C# today in 2015 should I avoid all that gui stuff and just get a solid grasp of the language and jump to Asp.Net MVC 5-6 ? is it possible to program frontend and have a solid career and avoid .Net all together by doing html,css,javascript,angular etc etc ?

WindowsForms & WebForms are not dead yet but I would not invest any second in learning them if you do not already use them. Don't get me wrong, they are an all "ok" ways of coding for Windows and the web (server side) but they are now obsolete as we have way better tools to work with today. I have used them since their infancy but I was thrilled when ASP.NET MVC and WPF came to the rescue to replace them.

WPF is not going away. Not at all. Microsoft is good at several things but very very bad at some others. One of them is marketing for their developers. Remember Silverlight? Everybody said back then that it was now dead and that Silverlight developers lost their time learning to master that technology now that it has been deprecated. A lot of non sense. Silverlight 5 and WPF 4.5 and WinRT and the new Windows Universal Application framework share around 90% of their codebase and most (if not almost all) architectural principles. Microsoft just failed to explain that to their developers and the world in general. I have coded for Silverlight 4 and 5 in the past and now I used my experience of it to work with WPF 4.5+. The transition was painless and even fun.

Although I think WPF is a great platform in general the fact remains that it may not be your target of choice depending of what you want to accomplish: line of business applications or a polished wrapper of OpenGL or DirectX for your next game maybe? That is certainly possible and several game studios use it as such: they wrap some game engine in C++ in a cute little WPF (or even WindowsForms) host to make it simpler to interact with the OS.

Apart from this Windows centric way of seeing things, yes it is totally possible to build a challenging career doing HTML, Javascript (Angular or whatever js framework of the week, it is getting exhausting to follow the new ones coming out every day, personally Aurelia is my framework of choice). The market is very competitive and usually a little less paying but there is always some place for the best.

3) I am asking this because it seem the open source scene seem to be booming with Java, Ruby, Angular, Php and the server side too with apache etc where .Net stand (or compete) against thems ? can asp.net mvc 5-6 compete well ? or its mostly corporate stuff

I would say that open source is booming in general. Trends in popularity vary from time to time for languages. Although Java seems to be the number one in popularity, this is mostly because of 1) so many legacy applications using it that still require maintenance, 2) so many companies have already invest a lot of effort, time and energy in building various great frameworks on top of it and 3) it is the most widely taught language in colleges and universities because 3.1) it has been for many many years and 3.2) it is too much work to rebuild a school curriculum to change for something else as Java is already a totally very complete platform and thus not worth it.

That being said, although there is almost nothing you cannot do with Java, no one can rightfully claim that Java is "hip" in any way these days. For several years all new features implemented in Java have been borrowed from other languages and frameworks (some of them very successfully such as RxJava which is an excellent port or Rx .Net). Oracle seams determined to neglect both Java developers and simple Java end users by packaging malware in the Java installer for Windows (yes, it is now packaged with a freaking toolbar to spy on your porn). Also, a lot of new libraries and modern tools are being built for C# and Javascript for which several Java developers switch to (I just know too many of them to count them).

There was a big increase of Ruby developers in the past 3 years but now it seems to stabilize from what I see around me. Adoption is slow as the community of bloggers posting how-to's and the number of libraries are not as numerous as for C#, PHP or Java. Ruby is also one of the slowest of all interpreted languages according to multiple benchmarks (one of them). It also does not support modern features such as template programming (the use of generic classes) which could lead to duplicate code and more maintenance in some cases.

PHP is nice and both Apache and Microsoft made great effort to increase its performance on their respective web server. It benefits from a humongous community, millions of blog posts and how-to's. The development tools to speed things up while coding (refactoring, syntax error notifications as you type) still kinda sucks though. Some purists say that I should not need help from a fancy IDE if I "really" knew how to use the language. My answer: Life is short, play more. (trademark XBox)

I will appear biased (and I am and so is everyone) but yes, ASP.NET MVC 5+ with Web API 2.0+ is my way to go.

4) on the Database side of things, what would be the ideal path for learning ? I seem very interested in programming database and do backend stuff compared the front end web dev stuff where that could lead me oracle, sql ado.net entity ?

Database coding is fun.

Oracle is the worst company and they cannot justify the price of their products as they do not offer anything more that what the competition is offering, both commercial and open source. Stay away from it, there is actually no compelling reason to be interested in Oracle. It is as sexy as my dead grandmother and as "hip" as a 50 years old accountants with long brown socks.

Personally I love PostgreSQL, Microsoft SQL, MongoDB (for NoSQL way of doing things).

PostgreSQL is really feature full and now combines the best of both RDBMS and NoSQL with their BSON (JSON) datatype. It is open source and usable within a commercial setup. It is backed by a serious company and with great documentation.

Microsoft SQL is very comparable to PostgreSQL apart from their lack of support for a JSON datatype (but coming in their 2016 version ). Microsoft SQL comes with the most awesome database development and administration tools ever. Nothing can compare really but you have to pay for it for most editions. If you can live with the SQL Express constraints it is certainly an option worth looking at.

MongoDB is awesome but like all NoSQL databases it tends to be abused by developers seeing the lack of enforced schema to be the perfect excuse for their laziness.

Ado.NET? yes but not directly. Using NHibernate until the next version of Entity Framework proves me that it has matured enough in low level features to be used for more hardcore uses.

5) is it possible to learn mostly everything or be like junior lv in front end web dev + database and destop applications ? my goals (before getting advices from programmers) was to learn C# 5.0 with VS 2013 do a few windows forms apps and jump to asp.net mvc and play with database

For someone inclined towards Microsoft technologies what you suggest is a natural fit but I would not loose time with WindowsForms. If you care for native Windows development, choose WPF and use a MVVM framework to cut short on the learning curve (I suggest Caliburn Micro).

If you want to quickly be hired as a full stack developer for Microsoft technologies + web:

IIS + ASP.NET MVC5+ + ASP.NET Web Api 2.0+ + WPF as Windows client and javascript in MVC5 as web client of your REST api in Web Api 2.0+.

I hope it helps. Good luck!!

LorenzoGatti
LorenzoGatti

From my business programming experience, I think C# is a fairly good and stable language, but the accompanying libraries less so; it continues the established Microsoft tradition of introducing frameworks (historically database access and web programming, lately also GUI) and keeping around the old ones.

Learning generally applicable C# complications and advanced features (e.g. signed assemblies, using native code, LINQ, extension methods, annotations, DLL hell, how to use Visual Studio, etc.) would be better than falling in love with the latest novelty framework.

Omae Wa Mou Shindeiru
conquestor3
conquestor3

DLL hell

We have a version of ajaxcontroltoolkit.dll that's outdated on a developer's machine, and one the developer swears it's the only one he can get his solution working with.

Our other part of the application uses a separate solution, and doesn't work with his version of the .dll.

Every once in a while we'll start see'ing our server throwing errors upon logging in, and the first thing I'll do is check the version of the .dll installed, because he'll always register it to the GAC when he moves his piece. Then I'll re-register the correct one, and move his into his project's /bin folder.

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.