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)
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.
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.
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:
- Win8 Store Apps – http://msdn.microsoft.com/en-US/windows/apps/bg125376
- WP8 Apps – http://create.msdn.com/
- Web – http://www.asp.net/mvc
Your first app
- 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.
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.
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?