You’re married to your technology choices

Microsoft, I think it’s time we broke up.

C#

In the “The Visual Studio Documentary” C# designer Anders Hejlsberg talks about simplicity and productivity; he talks about how he C# designed C# specifically to simply C++ and eliminate entire classes of bugs that C++ developers spend inordinate amounts of time solving.  He talks specifically about how “C# is a great language because it makes you very productive”, and how developer productivity is paramount to the .NET ecosystem.  It’s a pragmatic developer’s dream.

When we look at the history of .NET it’s always about solving problems and making the developer more productive:

  • C# 1.0 – the basic language
  • C# 2.0 – Generics (done right – not just casting like in Java), yield return
  • C# 3.0 – LINQ, WPF, WCF, WF
  • C# 4.0 – Task Parallel Library, Dynamic programming
  • C# 4.5 – Asynchronous programming

In that same interview Anders goes on to say “If we stop then we become irrelevant.  We need to build better tools… Make programmers more productive, raise the abstraction level.”  In my opinion the additions to C# are leaving other languages behind – far behind.  Features such as the new async keyword make programming so much easier!  The easier these technical hurdles are to overcome the more the developer can focus on the business task at hand.

In a TechCrunch YouTube video about Azure I Muglia says: “Our real goal is to build an application platform that makes developers more productive than anything else on the planet.  That makes it easier to build applications.”  I want to like Microsoft and their technologies; they’re really great developer technologies.

But then there’s the silent killings.

You didn’t mention C# at Build 2011, and talked exclusively about JavaScript.  You almost didn’t release a Visual Studio Express for desktop edition; in your rush to mobile have you forgotten your roots?

WPF

Speaking of the desktop, how about WPF?  A brilliant coup for designing beautiful desktop application interfaces; I’ve built two desktop applications with it, including my research software and my soon to be released financial planning tool.  It was a steep learning curve but I invested the time and then nothing was impossible!  Custom controls, beautiful GUIs, easy data binding with complete separation of view from business logic.  It was wonderful!  Programming nirvana!

And then, nothing.

Your WPF and Windows Forms site redirects to MSDN.  You moved the amazing Scott Gutherie to Azure.  WPF?  Silverlight?  The desktop?   Dead.

It’s like you’ve forgotten the desktop in your rush to the tablet.

Scientific researchers don’t need mobile – they’re still using 10-year-old hardware.   Financial advisers all own laptops, and like using a keyboard.  I know that doesn’t make you money now, but I like supporting science, and I like helping people with their financial planning, and I was buying all of your development tools!

XNA

Miguel-de-Icaza-XNA-is-dead

What about XNA?  No announcement, no communication like “hey, this isn’t working for us anymore; it’s me not you”.  Just a slow silent death as you quietly breakup the team.

Have I wasted years of effort with easily abandoned Microsoft technologies? I loved LightSwitch too, but I bet – I guarantee – it will be dead in 3 years.

Windows 8

You said “Move your WPF applications to Windows 8 and WinRT”!!  (Actually, you didn’t say anything about WPF, but this transition was implied.)   But that seems like another lie.  It’s like when you suggested moving to Silverlight and then killed it a few years later!

What about all my existing clients that are still using older computers with Windows XP and Windows 7?  I’m not as rich as you, and can’t afford to be so fickle; I don’t want to just drop my existing clients, or tell them to buy the latest Microsoft fad.

I want to get excited about Windows 8, but I feel like I would just be letting you hurt me all over again.  I don’t want to port my applications to yet another platform.  Why should I let you keep on hurting me?  What happens when Windows 8 doesn’t do very well?  Will you silently abandon WinRT and disband the development team without telling anybody?  Why should I keep letting you silently kill projects I depend upon with no official outside communication?  What’s the point?  Is WPF supported?  Sure.  Improved and loved?  No.

Java

You know what?  Java hasn’t evolved very much in recent years.  It doesn’t have sexy features like LINQ, or asynchronous primitives, or well-implemented generics, or co-routines, or true value types, or decent delegates, or lamda expressions or built-in dynamic support (the JVM has it, but not the Java language) etc.   At a 2001 Java One conference I heard the Java elite actively planning on keeping Java development more complex to keep out the VB developers!  They didn’t want  Java to be easy to use.

But you know what Java does have?  Stability.  Openness, Lots of communication.  Tools I used years ago are still being supported and improved.  And recently, the usability and simplicity issue is starting to be addressed.  Java is in it for the long-term.

You’re married to your technology choices

The .NET ecosystems is sexy but unreliable, untrustworthy, and doesn’t communicate well.  The Java ecosystem is plain, slightly more difficult to work with, but trustworthy, dependable and communicative.

If you’re building a million loc application, which one would you want to be married to for years to come?

Robert

 

PS. Xamarin and Mono

PS.  Mono and Xamarin seem to be doing .NET right, with all the benefits of the .NET and C# platform, as well as being dependable, even in the face of dramatic adversity.  They are doing an excellent job of open communication, and seem to be the official path for XNA with MonoGame and are actively maintaining it.  Additionally, they are getting support from Microsoft – their latest Evolve 2013 conference received funding from the Microsoft Azure and Visual Studio teams.

It’s interesting, but it feels a little like breaking up with the sexy older sister to date the younger more reliable one.  What happens to Xamarin if/when Microsoft stops innovating with .NET?  Xamarin is a MUCH smaller company than Microsoft, Oracle or IBM – what happens if Xamarin goes under?  I don’t know.

Xamarin seems like a great choice for small business development, but it doesn’t seem like the right choice for big enterprises looking for long-term stability and support.

 

12 thoughts on “You’re married to your technology choices

  1. Dan

    I love your blogs. Great insight and satisfying depth! Please keep me intrigued (and educated).

    Reply
  2. Thorn

    Robert, nice article! You explained everything we feel for the last decade!
    > Will you silently abandon WinRT?

    ALREADY DID. MS stops “ARM” line of Windows, throw away your “Surface”! Heh…

    Related Java: May be you didn’t know, but Java is dead for almost 10 years! As you know, Java IS NOT suitable for Windows desktop, having ugly, slow, limited UI. But once you cannot develop on Java for desktop, why you need it for SERVER?? Or you suppose to have a team of C# developers too? Of course, not! So… Java is a corpse.

    Anyway, it’s not only about M$. YOUR SMARTNESS (or stupidness) is a measure of technology success! From the very first days ‘Silverlight’ was introduced, I said NO for that cr@p! Why? It’s DEAD BORN tech! Nobody needs browser, everybody needs APPLICATION! Same story with WCF and WF – ugly reinvention of wheels. And hell… I’ll never make programs with idiotic HTML5+JS! I respect myself to keep my REAL knowledge and experience. Wish same to you!

    Reply
    1. Scott

      Wow…so much ignorance packaged into one comment! Have you heard of COBOL? That died decades ago, and yet it still lives on. Java will be here for another 20 years, companies aren’t just going to drop their investment in it. “Nobody needs a browser, everybody needs application”, followed by “idiotic html5+js”…that a developer could even say that kind of defies belief…have you seen all the wonderful apps built in html5+js?

      Reply
  3. Aris Green

    A while back I took a 1.5 year Silverlight contract and commuted 35 miles each way. Silverlight is dead too. I was into the WPF stuff also. For me, Java is far from dead. It’s not so much the language itself that is so exciting, but all the other stuff that runs under the JVM, i.e.Groovy, Scala, Jython, etc. You also have Python which supportis coroutines via enhanced generators, which C# does not. JavaScript is kind of cool, you have Node.js and all of that. Don’t forget Ruby and Lua. All these nice languages and no, I don’t know all of them. VB .NET does not count. You have all of these frameworks, Rails, Grails, Lift, Play, Sinatra, Hadoop … oh, and you can download them for free. So for me, I earn a living doing Microsoft stuff. Personal and volunteer websites, WordPress, web2py, Apache, Linux. Personal workstation, Fedora 18.

    I have an MSDN and MAPS subscriptions, but I am a bit weary and disillusioned.

    By the way, I am very interested in what @Thorn uses for development, I’d like to hear about something he/she likes.

    Reply
    1. Robert McCarter Post author

      Thanks Aris!!

      You point out a lot of interesting technology, and I hadn’t heard of those many of those frameworks – thank you!! I’ve been building more websites with Linux, PHP and MySQL (and looking to switch to MariaDB); Linux seems very nice, and the ability to quickly find answers online is great. Lua seems very interesting, but the JVM design decisions over the last many releases seem half-hearted, and I haven’t been that interested in exploring Goovy or Scala; maybe I should reconsider. :-)

      This was the first year in many years that I let my MSDN subscription lapse because I’m also weary and disillusioned. The “Move it to WinRT” when none of my customers have any interest in Windows 8 rings very hollow. Perhaps Windows Blue will change things.

      Robert

      Reply
      1. Aris Green

        You may checkout Python, I’ve used web2py and like the MVC approach. Flask seems like a very nice tool for creating web services. I method that some of these developers use is to serve their content using localhost and a port like 8080, and then employ something like NGINX or Apache as a reverse proxy. Ruby and Rails seems nice, I wish I new more about Ruby. The view engines these frameworks have are nice, and you can mix in some nice JavaScript / CSS libraries such as Twitter Bootstrap for the front end. For HTML and CSS, I have learned the necessity of Less and/or SASS. For business web apps, you have stuff like Angular.js and Mustache that can be used for paging grids. No need for Telerik these days, and I’ll bet you enjoy the savings from not having MSDN.

        Cheers,
        Aris

        Reply
        1. Robert McCarter Post author

          “I’ll bet you enjoy the savings from not having MSDN.” LOL!! That’s awesome, thanks Aris!

          Reply
  4. Robert McCarter Post author

    From ZDNet:
    According to Steve Guggenheimer, Corporate Vice President of Microsoft’s Developer and Platform Evangelism Group:
    “We haven’t done a good job telling the .Net developers we haven’t forgotten them,” Guggenheimer acknowledged. “We need to tell them that.”

    Reply

Leave a Reply