The next generation of Microsoft development

I’ve been increasingly frustrated with my career over the past year, perhaps. Throughout my entire career (~20 years) I’ve very purposely followed Microsoft technologies because I fundamentally agreed with the philosophy. Even when .NET came out in 2001, there was a small learning curve, but I “got it” and WOW, I was excited!

In the past year or two, the world has changed. Now, you might say “Seder, you old geezer, you just don’t like change!” or Who moved my cheese!?”. That’s not it. It really isn’t. I’ve made a pretty steady effort to keep up with the technologies as they’ve changed over all of these years. Anyone who knows me knows I put in a fair amount time into my professional development and “change” is part of it – and I’m ok with that.

This time, it’s different.

From what you see in certifications offered from Microsoft and what they present in conferences, the future to them is really:

  • Win8 Store Apps (written in HTML5 or XAML)
  • Windows Phone 8 Apps (written in XAML)
  • Web (HTML5/CSS3/WebApi/lots and lots of JavaScript – MVC handles the site structure)

That, to me, means that WinForms is going away, and ASP.NET PostBack is going away. I’m OK with that. But what is left? Well, for UIs, it’s just HTML5 and XAML.

Why I’m frustrated:
I think it comes down to this – there has (apparently?) been a changing-of-the-guard or a paradigm shift in thought, from Microsoft. It started a few years ago, in my opinion. When Ruby started gaining steam – people new to programming were jumping onboard. “Woo hoo! We don’t need to declare no stinkin’ variables, man!” and “let’s just crank something out and worry about the code later, dude!” – they’d say. As a “movement”, it was the same phase most all of us went through early in career. We’d build apps like the wild west and not really care about the long-term repercussions. You were focused on getting the app out – not that it was going to cost millions of dollars and collapse under it’s own weight by the time version 3.0 came out!

However, as we became professional developers, we eventually learned how to do better. We outgrew this short-term mindset and understood the significance of proper software construction.

Let me try to be extremely clear, here. I’m not talking down to these people or snubbing my nose at them. I’m also not talking about “pretty code” just because I’m OCD. I’m simply stating there IS a proper way to write code and there are well-documented reasons to write software the correct way. If you are not familiar – go read Clean Code (or watch him talk through the book instead), The Clean Coder, and read up on technical debt.

Present State:
My point is that instead of Microsoft continuing on the path it was on – it started following this dynamic-typing/weak-typing crowd. Microsoft has swayed away from .NET and is not “all in” on JavaScript, for example. What are they doing? That, is insane.

Microsoft has gone to great measures to virtually undo much of what it did for .NET in the past decade. What I mean is, in present day – we’re offered the choice of hand-writing HTML and writing MOST of our code in JavaScript. What? Are you joking? JavaScript is a horrible, horrible language. I have always gone out of my way to make sure I have as little code as possible written in JavaScript – because it’s weakly-typed, hard to organize, slow, non-OO, etc, etc, etc – it’s just a bad language. Now, you want me to give up .NET and write MOST of my code in JavaScript? It’s like we’re back in 1997 again writing code to support multiple browsers and beating our heads against the wall with JavaScript. This has been a H-U-G-E step backwards. I mean, we came from drag-and-drop, pageable, sortable gridviews that could databind to an ObjectDataSource – to hand-writing virtually everything? What is going on?!

You say: “Fine! If you want to write a Win8 App Store app, use XAML you big jerk-face!!”. I have found that approach to be pretty bad too. There are not a lot of good resources, and it’s just tons and tons and tons of markup. Again, compared to WinForms, ASP.NET PostBack, etc – this is a H-U-G-E step backwards.

Time to re-evaluate:
I’ve been struggling over the past several months to get caught up on my MCPD (soon to MCSD) certification. To do that, I’ve needed to learn these horrible technologies. I just dread my study time because I feel like Microsoft has FORCED me to take a huge step backward. I’m already invested in this technology – and now I’m somewhat forced to learn things I don’t agree with, philosophically. It’s hard to get excited about that.

Instead of cranking out good code and high-quality apps, I’m spending hours upon hours either buried in JavaScript or buried in stackoverflow trying to look up some obscure XAML syntax.

I’m explaining all of this because I feel I’ve been at sort of a crossroads with my career. THIS is where Microsoft is headed, I need to ask myself: do I agree with it? For the first significant time in two decades: NO.

What are my options, then? Java, Ruby, PHP, Python, Objective-C, something else?

In my own opinion – for as bleak (for the developer) as the future of MS development looks, I still do choose it over any of those options. So, I made a decision a few days ago that I am going to plow forward. No more complaining and second-guessing – I’m jumping in with both feet. So, what do I plan to do – exactly?

What I’m doing:
Again, in the future there are really 3 technologies left in the Microsoft realm:

For Win8 Store App development, which I’ve been focusing on a lot in the past couple of months, I’ve been running into brick wall, after brick wall, after brick wall. However, I finally found a GREAT site for learning the basics. This literally walks you through the very first steps and explains a lot of the concepts – which was HUGELY helpful for me. Here is the landing page for HTML/JavaScript and the XAML approach to Win8 Store App development:

Your first app
http://msdn.microsoft.com/en-US/windows/apps/bg125376

There is the question of HTML/JavaScript vs XAML – which should we use? Well, I’ve been doing XAML from the beginning. However, a couple of days ago I decided to dig in head-first into the HTML approach. Here is what I learned about development of Win8 Store apps:

  • HTML5 approach is far easier to do the UI stuff because it’s mostly CSS. JavaScript quickly becomes a train wreck – and is very difficult to read (heavy use of self-executing anonymous functions – which makes sense, but makes my brain explode while trying to debug).
  • HTML5 approach for data and file storage has a few options for file system and web services, but it works exclusively in JSON serialization and everything is dynamic and weakly-typed. No OO. No compiled code. No inheritance. It quickly becomes a mess of .js files that are difficult to organize and debug.
  • XAML UI development is much more difficult, but you can have proper MVVM, and a .NET OO language driving everything. So the UI is a mess, but all the rest of your code can be very clean and unit tested.
  • XAML approach gives you more options, like more serialization options. Also, complicated code like connecting to SkyDrive, Azure, a database, etc – can be put into classes, and easily unit tested.

So, even though I gave the HTML/JavaScript approach a fair run- I think, for me, I’ve decided I’m going the XAML route.

An additional benefit is that what I learn about XAML (like syntax), I can also apply to WP8 development – so that is a two-fer.

As far as web, even though I’m not a big fan – I will use ASP.NET MVC for the structure of a site and use AJAX calls to a webapi to do any data handling. That seems to be the direction that it is heading in. For the apps I’m working on, I explicitly intend (hopefully?) to deploy a Win8, WP8, and companion web app for each.

Bottom Line:
I’m not terribly excited about where MS technologies are going – but it’s still the best thing going, for me, in my opinion. So, I’m going full-steam ahead with XAML/C# for Win8 Store App development, XAML WP8 development, and just continuing to follow the curve for MVC+WebAPI+AJAX for web.

What’s your take on all of this? Have you made any decisions for your career on this topic?

Posted in New Technology, Professional Development, Uncategorized
2 comments on “The next generation of Microsoft development
  1. Binoj Daniel says:

    In my opinion MS is doing a catch up with other competitors in mobile and tablets hence wants to keep up with crowd pleasing by having huge number of apps, at least from the main player whom MS was struggling to pull. But many are coming on board due to the flexibility that MS is offering in developing apps so designers and developers can leverage their existing skills sets and start writing native apps.
    So it has its own pros and cons. I personally wrote all my apps in C#/XAML even though i am still a learner in XAML but still feel its the way i should go. I do not prefer JS either but oddly enough all MS presentations were focused on HTML5/JS.

    Like

  2. […] year, I wrote a blog post about how frustrated I was with the direction of Microsoft. Now that I see a more complete picture, I’ve become re-excited about the future again. To see […]

    Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Archives
Categories

Enter your email address to follow this blog and receive notifications of new posts by email.

Join 2 other followers

%d bloggers like this: