The collapse of the .NET ecosystem



  • The main thing is the word doc included in the tweet. He has a bunch of graphs demonstrating the decline of NET ecosystem. I'll reproduce them here, for posterity.

    There's also this article: Has C# Peaked?

    This guy does his own research and comes up with similar conclusions - yeah, there will always be NET work to be done, but the same can be said about Cobol.

    I will gracefully ignore how THIS VINDICATES ALL I'VE BEEN SAYING NYAH NYAH NYAH!!!... ahm... and note that .NET job market is still going strong in Serbia. However, if there's any big shakedown in the west, I don't expect the shockwave to be felt here until years later.

    So, your impressions? Should we .NET coders just immediately open our veins in a warm bath, or wait for MS's (last?) attempt to regain relevance with W10?


  • sockdevs

    .NET isn't going anywhere; there's far too much invested in it globally, there's new stuff coming all the time, and outside of games, if you're developing on Windows, .NET is involved somewhere.

    Us .NET developers are perfectly safe for many years yet.



  • @RaceProUK said:

    .NET isn't going anywhere; there's far too much invested in it globally, there's new stuff coming all the time, and outside of games, if you're developing on Windows, .NET is involved somewhere.

    Us .NET developers are perfectly safe for many years yet.

    "I know all these inflows have dried out, but lake is still strong and vibrant! There will be plenty of food for years to come!"


  • sockdevs

    So what you're saying is, as there's been a slight decline in C#'s popularity, we .NET coders should all panic and commit suicide?

    Yeah… no.



  • Good comment from the second link:

    I used to spend most of my time writing C# and now spend most of their time writing Javascript. Why is this? Because a lot more of the code needed to run a web site lives in the browser now instead of on the server. People like Justin Angel have hypothesized about the decline of interest in C# as being a result of Microsoft's failures and so on, but the reality is probably a lot simpler: you just don't need as much code running on the server to build web sites.

    Nobody writes new desktop applications any more. Really, nobody.

    Fewer web apps are written using ASP.NET or even MVC. We make SPAs that communicate with REST services. Only the data services need to be written on the server.

    So what about C#'s principal competitor, Java? Looking at the Google chart with Java makes Java look like it's about to wheeze it's last breath. It goes from a high baseline metric of 100 in 2004, to 28 today. Overlaying C# shows C# at a high of 18 in 2004 to 8 today, So C#, always being the underdog, is only half as "hot" as it was back then, whereas Java is less the 1/3. Yet nobody's accused Java of being on the way out.

    Also FWIW - the PYPL one doesn't seem very accurate, possibly because of limited UK data, when I choose "Ruby", nothing at all appears, I presume because there isn't even enough data. Looking at US data on their web page, they show C# actually at an all-time peak in 2015, and overlaying Ruby (after an initial huge spike when it was invented) follows almost the exact same trend as C#.

    Bottom line - it's not going anywhere. Every single big business has a huge infrastructure built in either C# or Java. But as the web evolves, more code runs in the browser, and we also have a server-side option that didn't exist a couple years ago (Node) that falls in the Javascript column.



  • @RaceProUK said:

    So what you're saying is, as there's been a slight decline in C#'s popularity, we .NET coders should all panic and commit suicide?

    Yeah… no.

    I'm being hyperbolic.

    We should think about what this means and try and feel the pulse of where technology will go next.



  • Whether or not it's popular, C#/.NET will always be good. That's the important thing to me.

    And who knows, their recent cross-platform efforts might only be weeks away from bearing fruit. The real thing this shows is the "real programmers use Linux" brainwashing and since Linux developers won't adopt .NET (not because they have anything better, but because of Microsoft cooties), the more developers fall for that Linux bullshit the fewer are in the C#/.NET ecosystem.

    I'm not even sure that's a bad thing, honestly.


  • sockdevs

    Nobody writes new desktop applications any more. Really, nobody.

    :cow2: :hankey:
    @cartman82 said:
    I'm being hyperbolic.

    Fair enough.
    @cartman82 said:
    We should think about what this means and try and feel the pulse of where technology will go next.

    Always.

    But it's equally true that claiming .NET is dying is like claiming the Atlantic Ocean is full of Carlsberg Export: complete nonsense.



  • Really? With it being open sourced and all, I personally would have guessed C# would become the most common language after C/C++ and Javascript somewhere this decade.



  • You guys are disappointing. "Meh Cartman, I don't know, you make fair points, on the other hand I'm not sure blah blah blah"...

    Where's the passion?

    Look at comments here: http://trelford.com/blog/post/peak.aspx
    Everyone's telling him what an idiot he is and how statistics lie and how .NET will be running singularity space drives in year 3001 etc etc.

    Also, for some reason the author decided to add a star rating on his blog. His current score: 1.7



  • @cartman82 said:

    statistics lie

    True as far as it goes. Job postings are an interesting proxy, but obviously flawed. Do they really count them all? Only once each? That's before you get to how well jobs listings match actual usage.

    I think the maturity of mono is very interesting and may give C# new legs (not that I think it's seriously on the decline). But I think there's also a lot of truth to the argument that more of this stuff is moving to javascript.

    Not to mention mobile. The Tiobe stuff is all relative, right? So the market for C# could be growing, just not as fast as other stuff?



  • Maybe it means C# developers are so productive that 3 Java developers are needed to do the work of 1 C# developer.



  • That's true of some of the people on my team. But then, I do more productive work than 3 C# developers.



  • @RaceProUK said:

    the Atlantic Ocean is full of Carlsberg Export: complete nonsense.

    shameful, really.



  • Yeah I'm sure your coffee-making prowess is legendary.

    But I was talking about software development work.



  • @blakeyrat said:

    But I was talking about software development work.

    I was only talking about software development on my lunch break. If we're talking about during working hours, I'm going to have to up the estimate.



  • The real thing this shows is the "real programmers use Linux" brainwashing and since Linux developers won't adopt .NET (not because they have anything better, but because of Microsoft cooties),

    GHC is developed mainly by Microsoft employees (who were hired to develop GHC and perform academic research on type systems and their implementations). GHC is consistently 5-10 years ahead of C# in terms of feature parity.



  • @cartman82 said:

    Because a lot more of the code needed to run a web site lives in the browser now instead of on the server.

    TDEMSYR. You gonna write your REST services in Javascript too? Yep, you can, but good fucking luck.

    While it might be true that the outflux goes to hipster tech, that's going to bite people in the ass a few years along the line when they realize their team of hipster server-side Javascript code cowboys produced code that is fucking shit.


  • sockdevs

    @Captain said:

    GHC is developed mainly by Microsoft employees (who were hired to develop GHC and perform academic research on type systems and their implementations). GHC is consistently 5-10 years ahead of C# in terms of feature parity.

    How many job listings are there for Haskell?



  • @Captain said:

    GHC is consistently 5-10 years ahead of C# in terms of feature parity.

    And like 1850 years behind in terms of customer base.



  • I'm also pretty sure that you can produce similar graphs for languages like C++, Python, Perl, Delphi and pretty much any other language under the sun that's not the Next Hot Thing(tm).

    It's not clear to me why .Net is singled out in this regard other than a moronic insistence on bashing Microsoft.



  • @Captain said:

    GHC is developed mainly by Microsoft employees (who were hired to develop GHC and perform academic research on type systems and their implementations).

    Group Health Co-Op?

    Well, good to know their health plans are in order, I guess. Thanks.



  • @blakeyrat said:

    Group Health Co-Op

    Actually shows up as the second google entry for me, so congrats your "someone didn't define something" wasn't as far off as normal.

    And cause blakey will yell at me otherwise: The Glasgow Haskell Compiler


  • Discourse touched me in a no-no place

    @Rhywden said:

    It's not clear to me why .Net is singled out in this regard other than a moronic insistence on bashing Microsoft.

    This sentence contains its own answer.



  • The most interesting part of sites like http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html:

    They say stuff like:

    Objective-C is really going into freefall. The last couple of months it is losing about 1% of market share per month. If this trend continues, Objective-C will leave the TIOBE index top 20 before the end of this year. The main cause of this is Apple's announcement last year to replace Objective-C by its new programming language Swift. The programming community embraced Swift because it fits the bill much better.

    And then you have stuff like:

    Ratings change from June 2014 to June 2015
    5   Objective-C    4,339%    -6,60%
    ...
    14  Swift          1,440%    +1,44%
    

    I'm not seeing the "embracing part" there - shouldn't the Swift thingie show at least something like +5% if there was indeed a mass "embrace" of the new language? All I'm seeing there is a lot of people leaving Objective-C and only 25% adopting the new language.

    Unless I'm reading the numbers wrong.



  • @blakeyrat said:

    I'm not even sure that's a bad thing, honestly.

    As long as companies don't go full retard, that is. Frankly I don't see any business that has an existing C# infrastructure and resources to keep it running suddenly going full hipster-tech, so it's probably due to the rise of venture capital wastersstartups.

    And there's nothing to really replace C# with as far as big, maintainable projects are concerned. Despite what people like @Captain preach, OOP is the way to go as of now if you don't want to turn your application into a logic puzzle. And the only real alternative is Java, which is allegedly getting better, but according to the article it's apparently dead as fuck too.



  • OOP is the way to go as of now if you don't want to turn your application into a logic puzzle.

    That must be why Microsoft is slowly replacing the OOP in .NET with functional idioms, year after year.



  • @Maciejasjmj said:

    And the only real alternative is Java, which is allegedly getting better, but according to the article it's apparently dead as fuck too.

    As it sits in the #1 spot, of course. Let's get real, the dude is trolling the interwebs.


  • sockdevs

    @Captain said:

    That must be why Microsoft is slowly replacing the OOP in .NET with functional idioms, year after year.

    Really? Name one C# feature removed in favour of a functional equivalent. I'll wait.

    Actually, I won't; you won't be able to name one.



  • @Captain said:

    > OOP is the way to go as of now if you don't want to turn your application into a logic puzzle.

    That must be why Microsoft is slowly replacing the OOP in .NET with functional idioms, year after year.

    I'm not sure why idioms are such a problem. Did you mean to say "methodology" instead?

    Plus, what exactly did they replace?



  • Well yeah, they haven't been replacing things just adding in stuff so you can do functional if you want. It actually is really good for some things. But for stupid business apps and things it adds complexity without you getting the benefits that it has.



  • @Captain said:

    That must be why Microsoft is slowly replacing the OOP in .NET with functional idioms, year after year.

    Dafuq?

    What have they removed from .NET? ... ever?

    I could be wrong, but I'm 99.999% sure everything from .NET 1.1 still works fine in 4.5. Each version is a superset of the version that came before.



  • @locallunatic said:

    Well yeah, they haven't been replacing things just adding in stuff so you can do functional if you want. It actually is really good for some things. But for stupid business apps and things it adds complexity without you getting the benefits that it has.

    I'm unable to parse the logic of this statement. What?


  • sockdevs

    @locallunatic said:

    But for stupid business apps and things it adds complexity without you getting the benefits that it has.

    Lambdas are good though; I use them all the time :smile:
    @Rhywden said:
    I'm unable to parse the logic of this statement. What?

    The functional features are good, and help with certain types of program, but most programs don't need them (would be my interpretation).



  • LINQ is functional, or wants to be :stuck_out_tongue:

    @Captain is convinced that C# will mutate into a functional language...
    I'm of the opinion that one of the reasons C# is one of the best languages out there it's because they used the good things of every paradigm.



  • @Jarry said:

    LINQ is functional, or wants to be :stuck_out_tongue:

    @Captain is convinced that C# will mutate into a functional language...
    I'm of the opinion that one of the reasons C# is one of the best languages out there it's because they used the good things of every paradigm.

    I'm pretty sure that if you want functional then you could simply stick some F# parts into your C# project, right?



  • Lambdas are good, but can bite your ass hard if you don't know what you're doing



  • Sorry, I was saying that the functional parts that are getting added into .Net are really good for when you want to do things that lend themselves to that style while trying to do qualifiers so I didn't get lumped in with @Captain's "everything functional always" bullshit.



  • Thanks for the clarification.



  • @Jarry said:

    I'm of the opinion that one of the reasons C# is one of the best languages out there it's because they used the good things of every paradigm.

    Funny, people complain about C++ for that same reason :P


  • sockdevs

    The difference is C# has been designed properly :passport_control:



  • I'm not familiar with F#. but yes, you can do that, or just use the functional parts of the language whenever you have something to do that makes more sense doing it in functional.



  • i'll quote myself:

    @Jarry said:

    the good things



  • We have the good things! And the bad things. And the kitchen sink. And it's properly designed. I mean, a pile is a kind of design.



  • @Rhywden said:

    @locallunatic said:
    Well yeah, they haven't been replacing things just adding in stuff so you can do functional if you want. It actually is really good for some things. But for stupid business apps and things it adds complexity without you getting the benefits that it has.

    I'm unable to parse the logic of this statement. What?

    • Nothing got "replaced", because nothing was taken out.
    • Occasionally, a functional idiom is in place in your application
    • Most of the time, it's not.

    You can do F#, but it's not very popular and I think you need to go full-functional there at least in module scope. And C#'s Javascript-ish model of simply treating functors as objects is a both powerful and elastic model in its own right - even more so when you couple it with reflection and the whole Expression<> business.



  • @Jarry said:

    LINQ is functional, or wants to be

    @Captain is convinced that C# will mutate into a functional language...I'm of the opinion that one of the reasons C# is one of the best languages out there it's because they used the good things of every paradigm.

    I see LINQ being an acknowledgement that set-based operations work better when you have set-based syntax to describe them.

    And it's true.

    And a great idea.

    It being functional (or relying on functional bits of the language) is completely secondary to the utility.

    It's also something I thought was a really stupid idea when I first heard about it. "Why are they adding SQL to C#? WTF?!" but once I thought about it and, especially, started using it... now I think it's brilliant.



  • @blakeyrat said:

    It being functional (or relying on functional bits of the language) is completely secondary to the utility.

    QFT



  • @blakeyrat said:

    It being functional (or relying on functional bits of the language) is completely secondary to the utility.

    Still, it's pretty amazing due to C#'s expression parsing facilities. You can roll your own DataReader-to-model mapping, coupled with abstracting the column names, in like 20 lines.



  • @cartman82 said:

    So, your impressions? Should we .NET coders just immediately open our veins in a warm bath, or wait for MS's (last?) attempt to regain relevance with W10?

    Microsoft became irrelevant?

    If Microsoft went belly up tomorrow, the world would burn.

    Nobody writes new desktop applications any more. Really, nobody.

    Gee, I wish someone sent me that memo so I could have developed my physics-heavy multiplayer game client and server in Javascript instead of C++! While they're at it, they should send that same memo to all the other non-mobile game developers out there, as well as audio workstation and plugin developers, CAD developers, scientific application developers...



  • Now let's take a look at this here Word doc (a strange choice of file format, given the supposed imminent death of Microsoft).

    The golden age of the Microsoft developer ecosystem is behind us and so could be your career.

    Bold claims require[citation needed]!

    The graph above shows an approximate 60% reduction in C# jobs since the golden days of 2010. The number of C# jobs today is back to 2006 levels. What does that mean for you the next time you’re looking for a new job?

    The problem with looking at squiggly lines over a time series is that one can draw fifty billion different plausible explanations for the behavior of said line, since there are at least fifty billion different variables. More on this later.

    Microsoft’s developer ecosystem fails to supply employment to its developers.

    That's an odd, bold claim to make; I seem to have a job. Guess it Works For Me™.

    The TIOBE developer interest index rates programming languages based on the number of professional engineers world-wide, courses offered, third party vendors and search engines statistics. It’s consistently tracking C# as a top programming language for over decade. During the last five years we can see a sharp decline in C# developer interest.

    Maybe people have become familiar with it and don't need as much training anymore? Maybe it has a shallower learning curve than other stacks? Maybe they are instead interested in learning about new technologies to supplement their bread and butter?

    I can pull plausible explanations for a squiggly line out of my ass, too!

    We can see an example of waning developer interest by looking at Google search trends. Google search volume for C# is down approximately 50% since 2009.

    Maybe they've internalized C# syntax, conventions, and much of the .NET framework so that they don't need to hit Google every five seconds?

    Personally I use google to help find answers to technical questions all the time, so it’s worrying to see there’s a lot less people doing just that.

    And clearly one man's experience is representative of all programmers.

    Many .net developers use open source projects to improve their productivity. What do you think it means if the very people who build those projects are leaving the ecosystem?

    Maybe Microsoft land is less focused on open source and more on closed source, commercial solutions? Maybe most people who are in Microsoft land are developing closed source systems and have less incentive to share?

    Independently each one of these phenomena might be explained away by reviewing the methodology used to compile each of these indices, selecting them and checking for various sampling errors.

    This is a great example of something that the author didn't do.

    But collectively these numbers should make you think.

    They make me think that quantity of metrics does not trump quality!

    Definitely ask yourselves if I’m wrong because I could be. But also ask yourselves “What if Justin’s right? What if the .net ecosystem is in freefall? What does that mean for me for my career? If the .net ecosystem is really collapsing what actions should I take?”

    I'm not saying it's aliens, but...

    1) The reach of Microsoft’s developer ecosystem has declined in the past five years due to the rise of non-Microsoft web frameworks and mobile platforms. Android and iOS control 90% of the world wide smartphone market and .net developers aren’t first class citizens on those platforms.

    If we consider smartphone market saturation as the benchmark, then yes, Microsoft is in a distant 3rd place. However, developers aren't necessarily shut out because any device with a browser can access web apps. I don't consider it a terrible tragedy that chess apps, fart noise apps, etc. are less available on one platform or the other.

    2) It’s hard to make long term investments when Microsoft’s ever revolving door of new technologies continuously makes previous codebases obsolete. That climate makes both businesses and developers afraid to invest resources in potentially defunct technologies. Remember when WinForms was replaced by WPF? Only to be replaced by Silverlight? Then by Windows Phone apps? Which were replaced by Universal apps? Or what about how Web Services were replaced by WCF only to be replaced by Web API?

    This is actually a legitimate beef. However, Microsoft has demonstrated an unusually strong commitment to backwards compatibility, so I'm not terribly worried. The better technologies will stick, the lesser will get ignored.

    3) A lack of emphasis from Microsoft itself on .net development didn’t help either. Looking at Microsoft’s Azure documentation we can see .Net on equal footing with Node.js, Java, PHP, Python and Ruby. It feels to me like Microsoft have just given up on .net development.

    Maybe they're trying to lure LAMP/Oracle stack (that's a thing, right?) developers? Maybe they want to offer a choice rather than lead everyone down a single path?

    4) The .Net Framework has become fragmented and stagnated. We’ve seen “forks” of the .net Base Class Library to Silverlight, Windows Phone, Windows Store apps and Xamarin each with their own unique flavor.

    I've worked with .NET CF, and it is annoying that it is stripped down, but I can accept that that was probably done given the storage constraints of devices about ten years ago.

    What should developers learn to future-proof their career? What’s hot today? Go learn something you’re passionate about. If you think there’s a chance I could be right, you owe it to yourself to keep relevant and explore what’s out there.

    This is good advice irrespective of the technology in question.

    If you’re into client-side web development there’s a huge boom in “HTML5” technologies and Javascript skills have never been in more demand.

    I like the quotes, they're a nice touch as they suggest incredulity.

    If you think Mobile is here to stay then you owe it to yourself to buy an iPhone or Android and see which platform you personally like the most. Android development is done in Java; iOS development can be done in Swift. Developing for either platform is an easy switch for .net developers.

    If I think? I thought a page or two ago we were saying that smartphones were the be-all end-all? And I don't think it's going to be quite an easy switch, given how much I see people here gripe about the toolchain.

    If you consider yourself proficient in SQL Server or Oracle, go ahead and experiment with MongoDB or Redis. They’re fine examples of data storage technologies that are becoming very popular.

    BAHAHAHAHAHAHA OH WOW.

    I'm sorry, that's too much. We've spent the last forty years developing and refining RDBMSes with ACID guarantees, and now we're supposed to throw them all out? I'd expect better of someone with credentials from Microsoft and Apple.

    In all seriousness, does anyone know of any examples that aren't Twitter where an RDBMS is too slow? I've personally never met anyone with a mature codebase who has said, "Gee, our SQL Server/Oracle install is getting pretty shitty and slow, we need to replace it with a NoSQL document store so it will be super fast!"


Log in to reply
 

Looks like your connection to What the Daily WTF? was lost, please wait while we try to reconnect.