back to article Ten years of .NET - Did Microsoft deliver?

Microsoft closes The Noughties by trying to keep up with competitors and to remain a top destination for developers by embracing cloud computing and open source. It opened the decade with another massive platform shift, though: the introduction of .NET. .NET was announced at the first TechEd of decade in Amsterdam in the year …


This topic is closed for new posts.


  1. Filippo

    What if Microsof used it?

    Oh dear! The main complaint about Vista was performance, and you're wondering what would happen if they did it with an interpreted language? No thanks, I love .NET but C++ still has its place.

  2. Brian Tabone

    1995 here we come

    The browser as an existential thread to Microsoft, did I fall asleep and wake up in 1995?

    1. Anonymous Coward
      Thumb Down

      .NOT is more like it

      Another attempt to enslave developers and users into a "windows only" experience.

      .NOT is not welcome here.

    2. Martin Smith 2

      It isn't an interpreted language

      It is JIT compiled and possible to use NGEN to compile in advance.

  3. Anonymous Coward
    Gates Halo

    Here's to 10 more

    Leaving aside some of the more persistent bugs i.e. problems with adding duplicate keys to Hashtables and DateTime issues ( it won't accept 30th of Feb as a valid date!) the framework has been pretty solid. Here's to another 10 years

  4. Hugh_Pym

    The cathedral the bazar and the bus station

    I think everyone was quite buzzed by the proposals for Longhorn and .net looked like the right thing at the right time. The engineers had delivered the plans for a magnificent cathedral but as usual the assorted managers, strategist, accounts and executives all chipped away until it was reduced to a municipal bus station. It started off looking powerful, elegant and expandable. In the end it hardly fit for purpose.

    It's my belief that .net has had the success it has despite Microsoft not because of it. Everything they put out has a smell of 'we can dominate the market' about it. Every decision is not about improving products and services but side-swiping competitors and creating lock in.

  5. Number6


    My opinion of it went up when I was able to take something I'd put together on a Windows machine and run it under Mono on Linux. I would think that if MS devoted some energy to helping clear up incompatibilities (instead of encouraging them) and keeping Mono capabilities up to date with current .NET then it will flourish.

    1. Davbis93


      I'm not sure if yu're joking or not.. but 30th Feb? Huh?

      1. exMVP

        Just Turn Off Bounds Checking

        The 30th of February is either the 1st or 2nd of March for folks flexible enough to go with the flow. Just as the 0th of any month is the last of the month preceding. Sheesh...

    2. TimeMaster T


      I'm hoping you mean 29th of February as that month has never had a 30th day, ever.

      1. Anonymous Coward
        Gates Halo


        30th of February is a valid date in javascript so I don't see why .net can't deal with it - seems like a framework bug to me. I've just got five words for anyone that says it's not a valid date: "You're being pendantic"

        1. Anonymous Coward
          Anonymous Coward

          The word

          is 'pedantic'.


        2. Tom Maher


          Have you been smoking crack? You're seriously using a weakly typed scriptting language as your yard stick for what a programming language should be.

        3. The Commenter formally known as Matt

          you're right

          It also doesn't accept 39%854{3 of Mattuary as a valid date.

          and to anyone who says its not a valid date ... etc

          1. Soupster
            Gates Halo

            At last..

            Someone with a bit of sense to back me up on the 30th Feb point. So many pendants talking about weak and strong typing - I prefer weak typing as it means the keyboard lasts longer. I'm thinking of starting a blog to highlight all these issues with the DateTime functions and bring them to the attention of Microsoft. Also, not being able to insert the same key into a hashtable multiple times is a ridiculous constraint but I'm sure all you .net pendants out there will come up with some other excuse.

            1. steward


              A pendant is something usually worn on a chain around the neck.

              A pedant is someone who will point out that disallowing 30 Feb as a valid date is something useful for programmers who don't check what they write.

              1. Soupster
                Gates Halo

                Whichever way you look at it

                Pedant / pendant, it's irrelevant your just being fecestious to avoid talking about the white elephant in the room here which is the whole 30th Feb issue.

                1. neBody

                  Feb 30th

                  I have to agree, that dates should roll over,

                  So in the same way 30 Feb is just the same as 02 Mar,

                  33 Dec 2010 would be the same as 02 Jan 2011, they are of course only relative values from a previously specified starting point, we could say 100202020 days AD, instead of grouping date into in silly years, months and days,

                  I would second a metric system, where 10 days is equivalent to 1 month. And 10 months the same as 1 year.

        4. steward


          I could make 30 Feb look like a valid date on Wikipedia too, but that still wouldn't make it useful.

    3. deadlockvictim Silver badge

      You discredit municipal bus stations

      Municipal bus stations tend to be small, busy and reasonably efficient in the delivery of its services. There is also no reason why it shouldn't make money.

      On the other hand, cathedrals don't make money. They suck money out of the public purse while inspiring the Awe of God (and consequently his Officials on Earth) upon the Great Unwashed.

      I would rather that an OS would be a municipal bus station than a cathedral. It should be small, unobtrusive, efficient and productive.

      Besides, Apple are the people to talk to about cathedrals. They tend to go in for beauty, awe, religious devotion and Big Projects.

      1. Hugh_Pym

        Just a difference of experience

        The ones I've used tend to be inefficient, ugly and seemed to be designed for the benefit of the operator not the end user. Generally speaking not a nice place to be.

        As for making money, 'municipal' suggests council owned to me, as in tax funded, as in 'how can we dish out the contracts on this to gain the most personal benefit'.

    4. Jason LoCascio Silver badge

      Exactly !

      I thought this was the whole point of .NET from the off.

  6. Anonymous Coward
    Anonymous Coward

    the new COBOL

    .Net is over complicated, over engineeded and with the latest "upgrade" provides even more barrier to entry.

    But there's enough code deployed that sustained engineering roles will be around for decades.

    If Office or other major Microsoft apps used it (apart from the Expression suite from the same team) it might have some credibility but that's lacking.

    As a web developer the move from Classic ASP to ASP.NET was the reason I gave up ... why lock me into Visual Studio when I can use Textmate for PHP development and deploy changes faster? Ironically, with ASP.NET MVC they seem to be going back to an replica of the old Classic ASP model (just with more layers of cruft)

  7. Daniel 1

    The developer may be their worst enemy

    A problem with .NET -, as with all systems based on huge class libraries - is that there are dozens of different ways of achieving the same ends, all of which rather bury what they are doing, from view, by design. The result of this hidden execution, however, is that - far from abstracting you from the underlying mechanics of what is going on - coding properly in .NET often means you need a much deeper understanding of the underlying mechanisms, if you are to avoid a lot of the problems I am seeing with failed or failing .NET projects right now.

    It's not the technology that's bad: it's just that far too many of the people working in it are woefully under-qualified to be doing what they are doing, or earning what they are being paid, to do it. All those guys who recently stopped producing the really dreadful PHP applications? Well, they're now hard at it, cranking out .NET (and with an IDE that does intellisense, by default, they can crank out bad code at a rate they could only dream about, hitherto; and since their manager measures his e-peen by how many lines of code his underlings can produce in a day, that's just fine and dandy until the entire project hits the rocks).

    If your developers think 'code reuse' is something you do with the cut&paste keys, it really doesn't matter what technologies you use, but if a lot of high-profile projects - like the recent NHS ones - tend to die horribly, people will tend to attribute this to the fact that they were .NET projects, and won't stop to ask whether was just because the same bunch of overpaid drongos were being employed on each failed project.

    I spent much of the decade, that is now closing, looking at really really bad PHP. I now suspect I will spend much of the coming decade, looking at really really bad .NET. But Hell, who cares? I get paid to do this, and I'm not about to advocate people start doing things properly, if it means they stop needing people like me around (the fact that I get paid around a quarter, the money, of the guys who produced these clusterfucks in the first place, is by-the-by - it take four times as many people to actually support one of these creeping horrors, as it does to write it in the first place, so I guess that's only fair).

  8. Gulfie

    Java Platform Strategic Direction

    It's interesting to note that whilst Java the language has continued to grow through the decade, one of Sun's current development areas for the JVM is... better support for other languages on the JVM.

    So while Microsoft responded to Sun with .Net and the common language runtime, Sun is now responding to Microsoft by getting all JVM languages to the point where they are all equal in the eye of the JVM.

    In hindsight, both companies can chalk up a victory. Sun for cross-platform equality, Microsoft for cross-language inside a VM. Sun is now incorporating both ideas into its runtime (we all know where Microsoft stands with respect to running .Net on non-Windows platforms).

    As an architect I will acknowledge that both platforms are suitable for enterprise development, one will always suit a given scenario better than the other, but I will continue to lean towards the JVM as a platform even if my team isn't writing Java - because not being tied to a given OS or machine architecture carries less risk.

  9. Tom Reg

    What a kind review of an utter failure

    .Net - ah yes I remember. Announced in 2000. Not shipped in XP, so you had to force users to install it to run any app.

    There was no .net equivalent to the webbrowser com object - so you had to roll your own. This hand built com object wrapper for the web browser had lots of bugs and was lacking lots of features/api. Then came .net 2: it did ship with a webbrowser part, but it seemed that all they did was wrap the com object in .net, just like I had hand done 3 years earlier. In fact many .net objects are nothing more than com objects wrapped up. Which is ok for some stuff, but come on - the needs of programmers change over the years.

    I can't believe all the money they spent on developing .net - and what did they get - shallow wrappers of buggy circa 1997 com objects. C# may be a nice language - but its still not clear how to actually program on Windows, so not many people do. Just try and find out how you build something simple like a button that looks like it belongs in Windows. Not an easy task.

  10. The First Dave


    Diversity is generally regarded as a good thing, but not when it applies to a single company's products, and that has always been the Microsoft Achilles Heel: they do love to provide at least three different ways of doing anything, and this results in inherent complexity.

    On the other hand, Java has the good kind of complexity - developers have the choice of whether to write tiny little applets, or huge multi-tiered apps, all with essentially the same language. If Microsoft understand this, then they are showing no real sign of doing anything about it.

    1. Steve X
      Thumb Down

      Very true

      Personally I hate languages like Java which try to hide what the machine is doing so as to be more friendly, or somehow 'safer'. The price is all to often huge code bloat as inexperienced users throw code together and leave it to the machine to manage it all. I'd love to ask some of today's code whizkids to develope meaningful code on a 32K PDP-11 with overlays. They'd never get past "Hello World" :)

      Sure, modern machines give much more scope for more sophisticated systems, but that's no excuse for being lazy. Or for being plain incompetent, far too much of the Java code I see today has been written in "C"...

      1. Charles Manning

        re: Very true

        Using Lejos you can run meaningful bodies of Java code on a Lego NXT (64k RAM, 256k flash - with only a small fraction of the flash being used). Indeed, Lejos would even run on the Lego RCX with 32kB of ram and only a boot flash.

        But, I agree with your sentiments. Excessive platform wrapping does kill performance.

      2. Darren Bell

        Do not Pigeon hole

        Hey there, I'm a Java programmer now, but I was brought up on PDP-11 using RSTS/RSX 11 M Plus/Vax, System 38, AS/400 etc etc. I've done C/C++ and know about writing performant code.

        Any one can write really bad code in any language. I've seen some dreadful COBOL, C/C++, JCL in my time.

        I've even done VB. Hmm, maybe I should not have owned up to that. I do agree though that .NET allows you to write very bad code very easily.

        1. BrentRBrian

          Bad COBOL

          I have yet to see any GOOD COBOL .....

      3. Gulfie


        What Java does is provide a consistent interface to the underlying OS and hardware. I'd dispute the word 'hide' - Java is supposed to be cross-platform, so you don't want to expose the platform-specific stuff when allows people to inadvertently tie their code to a platform. I spent the first ten years of my career coding in mainly C for Unix platforms and VMS, getting low-level code to work consistently across multiple version of Unix was a nightmare. It takes little or no effort to do this in Java, which was the whole point of the language.

        Granted there can be occasional issues moving from platform to platform because garbage collection and thread management strategies can change between VM implementations, but the argument that Java is bloaty because it abstracts out platform issues is, frankly, bollocks.

        Inexperienced users will always write too much code, regardless of the language/platform, because they are inexperienced. I used to see assembly language programs that were twice the size they needed to be because people didn't understand which instructions set which processor flags.

        I agree a lot of Java code looks and feels like C - that is because companies don't train, and staff don't have the time to learn the right way on the job. You can mentor people and improve their coding style that way quite successfully though - trying to use an OO language in a non-OO way is difficult and creates bloat of its own.

    2. Ken Hagan Gold badge

      Re: utter failure

      The initial releases were also incapable of hosting out-of-process OLE objects, of the sort that Microsoft had been trying to get us to write for the previous ten years. Maybe it works now. I lost interest after a few years.

      I think the moral of the story is that if you want the entire world to re-write everything they've done to your brand new platform, for no immediate end-user (ie, customer) benefit, it helps if it is actually technologically possible to do so. Even then, mind, it's a hard sell.

      Yes, it is a kind review, but that is because mere words cannot describe what an utter failure .NET was.

    3. Anonymous Coward
      Anonymous Coward

      Maybe I missed something...

      Lock in to VS?

      There are a number of IDEs out there that allow you to work with .net

      You can even use notepad and compile with CSC.exe from the command line if you feel like it... the only lock in is that VS is so good (and has free editions) that there is no reason to use anything else.... thats not lock it, you do have a choice.

      And I fail to see how (Which is an extension of the web forms development model) is anything like classic asp? Enlighten me please.

  11. Joel Mansford
    Gates Horns

    MS has used in one of it's products..

    ..MS Office Accounting. Really good product, 100% managed code - SQL Server back-end, easy to backup etc.etc.

    Then they killed it. Cheers.

  12. AndrueC Silver badge


    I moved from 100% C++ to 75% C# over the last three years. C# is nice but it's mainly because of the integration with the IDE (and Borland's Builder was nearly as good at that) and the power of the provided assemblies (which Borland was pretty good at and could be achieved in any language if the developer knows what they are doing).

    Garbage collection is very meh. If you use RAII in C++ then resource allocation is dealt with far more efficiently and requires [i]less[/i] thought. MS have published a guide to their garbage collector and it's a stupefyingly long document full of does and don'ts.

    By contrast I can teach someone about RAII in C++ in an hour and give them a 'cheat sheet' on copy constructors that is half a page long. Their programmes will run in a far more predictable manner making resource planning a lot easier.

    The biggest issue with C++ is that programmers often don't break algorithms down far enough. It's as if they think that calling a function or a method is an expensive operation. My rule is simple - if starts to feel complicated spin it off into a new function or method.

    Oh and all programmers should learn to name their identifiers properly. Say what they bloody do - don't use some half arsed mnemonic.

  13. DrXym Silver badge

    .NET succeeded in some ways, not so much in others

    It's fashionable to hate on Java but the reality is that versions of Java run on anything from phones all the way up to big iron. Not just one implementation but many, supporting virtually every hardware architecture and OS. JVMs are compliant with various Java standards and therefore largely interchangeable. There are even multiple open source and clean room implementations of Java. And of course Java drives a huge chunk of application servers in every conceivable way. Using Java really is a no brainer if you want hardware / OS neutrality.

    .NET has tried to ape Java and has succeeded in some ways but failed dismally in others. The C# language is a lot nicer than Java, and support for (Windows) native look and feel is vastly superior. If I was writing a Windows only app I would choose C# & .NET over Java any day. On the back end things aren't so clear cut. I don't see much reason at all to use ASP.NET and .NET on servers unless I was interacting with Microsoft products. The reality is that Java offers a vast selection of solutions compared to pretty much one on .NET. There are literally dozens of MVC frameworks for example. I think .NET's future is largely in the front end with some middle tier stuff. Silverlight is very interesting technology but strictly speaking its not .NET.

    Part of the issue is that .NET is not write once, run anywhere. If it had been I think Java would be long gone. But its ability to run anywhere is a massive strength. .NET just runs on Windows with Microsoft's .NET runtime. If you're lucky it *might* run on Mono, but largely Mono seems to exist as a sop to people complaining about cross-platform support. Nobody seriously considers Mono as witnessed by the large number of NET apps polluted with Win32 calls, or that make bad assumptions about the operating environment.

    So I think Java still wins. It's biggest problem is definitely the language and its UI support. I hope with Java 7 that Java the VM and and Java the language will become a little less intertwined. It is quite possible that languages like Groovy represent the future of the language in much the same way as C++ overtook C back in the day.

    1. Anonymous Coward
      Thumb Up

      Well said

      Or Scala... ;)

    2. Gulfie
      Thumb Up

      Native look and feel

      Swing stinks with respect to native look and feel - I use SWT instead which by default acquires the look and feel of the OS it is running on. Very nice to program with and actually easier to deal with than Swing IMHO

  14. Mage Silver badge

    Yes, a waste of time. Better to go to C# if using .net or stick with vb6. No point to

    we'd be better off without com/dcom (really the development of evil Win3.x OLE). It's a broken insecure concept.

    .Net is hugely bloated and you end up with clients needing 3 versions?

  15. Richard 102

    One other issue

    When it was announced, the people at MS had a .NET label on everything, up to and possibly including the toilet brushes in the executive WC. This lead to a lot of confusion about just what the heck .NET is and isn't, what it does and doesn't, and so on. It gave a lot of people a bad taste, and that hasn't completely gone away, either.

    Then again, it's like a lot of things MS: sounds good on paper and seems intriguing, but when it comes time to ship, it's as interesting and useful as a wet cardboard box. In off-white.

  16. Ebeneser


    It all boils down to choice, if you want to only use Windows you use .Net, if you want to choose the platform best suited to your application, be it linux or various unix systems or Windows, you go with Java.

    If you only know Windows its a really simple choice .net and c#. If you're a bit more broad based certainly on the server side, you can write it in Java and run it pretty much anywhere. Another win for Java is the large amount of open source libraries from people like the apache foundatation. Another nice thing about is the source code is easy to come by, helping debugging and general understanding ... not sure if that's the case with .net.

    There is no doubt that .net provides a first class environment for programming Windows Enterprise systems, trouble is time spent learning it is effectively time spent tying yourself to Microsoft and their products... which is fine if you don't mind. For people like myself who've been in the industry quite a while and seen and taken part in the various 'Microsoft Wars' being tied to Microsoft isn't one of our favorite past times.

  17. Anonymous Coward
    Anonymous Coward

    I like both for different situations...

    I am fortunate enough to have programmed in both Java and .net.

    I do like both and it is not a matter of which one is better, they are both good under different situations.

    The important thing to consider is developer(s) writing the code. A competent developer can write great, manageable, efficient code in either of them. And if you are one of those who read a couple of articles and can produce "Hello World" and start writing serious application then...

  18. Anonymous Coward


    I loathe .NET.

    Unlike many of the Reg Readers, I am not a developer, and I have no idea what it means to developers. I know very well what it means to me as a customer and a user: Long, long downloads of stuff I have no idea what I need, followed by install times that vastly exceed the download times. Why? WHY?

    "Requires .NET Framework V.n.m.i" --- enough to put me off any software, especially the fact that its requirement is likley to be very version dependent, and one ends up going through this .NET crap download install yet again. I try to avoid software that requires it, even if I have already got the required version.

    I also hate that they stole the name. .net meant, and still does mean, something else entirely, but Microsoft doesn't own the internet, so they won't worry about that. How much more effort would have taken to come up with something slightly, vaguely, original? None, probably.

    They could have called it revolting long wait. "This Software requires Revolting Long Wait, and will now ensure you have one..."

  19. Will 28

    I think this is a weak article

    .NET really has worked. You've summed it up with the job vacancy bit. People are pursuing it in preference to Java. Microsoft have of course made gambles and lost over the course of 10 years. If you can point out a company that has not lost a business bet in 10 years I will happily retract this comment.

    .NET has not destroyed java, nor would it have done regardless of how great it could have been. It has done the best thing possible - promote competition. Java had to pull its finger out and get its version of Generics in, it had to keep innovating (not as well as .NET) to keep up with a rival language, which until then there wasn't one.

    So to summarise - I view Java as the IE6 of programming, and .NET as the firefox. It's a funny role reversal, but actually it's really been a good thing for the industry.

    1. John Sanders

      Still worse...

      When it asks you to update to a point release and after "the revolting long wait" the update did not work, and leave you with a machine in an inconsistent state.

      Then you have to dig on Google and follow arcane procedures to remove the thing and reinstall it again.

      Had a few of those on servers specifically installing BackupExec v11 which requires .NOT for god knows for what reason.

  20. Inachu

    I am confused.

    In those years I have never ever seen a screen shot of what a .net desktop would have looked like.

    Maybe perhaps this was due to other court room litigation that peopel still wanted IE stripped 100% from the OS and this was proven with thin version of windows 98 and was also shown

    that the process to strip IE was the same and workable to do on Windows 2000 and XP.

    Microsoft still has not learned.

  21. James Fox

    God I'm old

    Hily Shot! My whole career summed up uin a single article. Never did goet 'round to working out whether C# was any good or not - too busy counting my money. Pray tell, what will I be coding in for the nest ten years?

  22. Anonymous Coward

    But...But...What About XAML?

    During the "Bet the Company" event in 2003, they showed us all these Director, "live code demos" of the Longhorn interface, and did all their coding on XAML.

    It was the Language of the Future™.

    So far, this comment is the first mention of this Magic Language, in either the review or the comments...

  23. jim 45

    .NET is excellent...

    ... as a developer platform, the integration with the IDE is terrifice, c# is a fine knockoff of Java. Beyond that, nothing ever came of the plans to re-do Windows itself as a set of .NET APIs so as other posters have pointed out, we're still building on top of layers of wrappers around the old Win32 oand COM interfaces.

    The developer tools group at MS did what they set out to do with .NET and delivered the goods. I think the platform group faces problems so large and so intractible that forward motion at this point is measured in inches.

    As always, the discussion comes down to: when are they just going to START OVER and rebuild Windows from the ground up? Don't hold your breath.


This topic is closed for new posts.

Biting the hand that feeds IT © 1998–2019