Evolving Your Development Skills

Posted by Shawn Wildermuth on May 29, 2013 on 14:12PM

TeachingOnGlassIn the last couple of years, I've been adding the HTML/JS/CSS skillset to my stack of required skills and my talks and courses have reflected that change. To my readers who are deep in the XAML stack, this change seems to have come at somewhat a shock to many. I've even been accused by some of abandoning the Silverlight, WPF, Win8, WinPhone folks. This has caused me a lot of frustration because I don't believe that developers can or should only know one possible stack. To reach the full breadth of users, sometimes you need to be able to develop across the ecosystems. In this same time, I've also done quite a number of HTML/JS/CSS talks where I didn't use Visual Studio. Some have conjectured whether I am moving away from the Microsoft stack as a result of the lessened use of Visual Studio in my demos. The frank answer is: nope.

So what is really happening here? I believe the development world is evolving. In fact, this isn't new…in the past 26 years everything has continued to change my entire career. And I expect (and hope) it continues. Software development is unlike many other similar professions. We think of ourselves as engineers but many engineering professions the rules don't change all that often. In civil and mechanical engineering, it can be somewhat stagnant. The requirements change, but torque and setbacks are similar to what they've been for years (AFAIK). But in software everything changes.

I received an email today from a developer who has been a Microsoft developer for a long time and now feels as if he is effectively unemployable because his skills are out of date. I don't' quite agree with his assessment as he knows ASP.NET, JavaScript and C#. These aren't out of date skills. But his consternation about the fight to keep his skills up to date is one I hear all the time. I struggle with an answer as my job is to learn, not deliver products. Because of this I have time to learn…I still get frustrated learning a new tech. In fact, this is the way that I cycle through a new technology:


This cycle is pretty consistent in my world. I can pretty much guarantee the full cycle on most new technologies I am learning. This is usually because underneath the surface, my brain is afraid that I'm going to be found out to be a fraud. That I am going to run into something new that I can't grok. That my tiny mind can't figure out. But that's a purely personal issue…not a technological one. This insecurity is at the root of what makes new technology fearful for me. Most days I can see past it and realize that it's only that. You'd think that after my 7th book, my insecurities would be gone…but…nope.

So how do I suggest people keep up? For me it's two pronged:

  1. Listen to what is going on in your corner of software development (not learning the new tech, but know what the new 'cool' acronyms mean.
  2. Learn something new every year….every year…really…every year. (See my post that discusses this here).

In order to listen for the new technologies, I recommend dusting off your RSS reader and reading some great blogs. Some of those I suggest include:

I also suggest you use twitter and follow people you love. You can lurk without sharing, but seeing what people are talking about can be really helpful.

For those of you working with ASP.NET Web Forms or Silverlight/WPF – know that your next job may need new skills like Windows 8, ASP.NET MVC and JavaScript. Try and realize that this is an opportunity to learn something new and try to be excited about it. What you'll see is that these new technologies have a lot in common with the stuff you're doing today. Let's talk about this more in context.

If you know:

  • ASP.NET Web Forms to ASP.NET MVC: Your experience with web development isn't going away. Sure, the designer and server-side controls have been helpful, but learning how those controls actually build the HTML you need will help you move to ASP.NET MVC and richer client-side models (like Single Page Applications).  Your skills in back-end development of SOAP-based services is also likely going to need to maturate into REST-ful services. You will be surprised that building and consuming these is easier than WCF.
  • Silverlight/WPF to Windows 8/WinPhone: The transition from the older XAML stacks to the newer ones isn't actually that hard. XAML design and data binding are the core of what you do and that doesn't change. Sure, if you're a deep WPF developer, you'll miss triggers but there are options that will help you build even cleaner code (as I am not a fan of triggers). In fact, developing for these new platforms is easier as the integration of asynchronous calls means that you will spend less time finding out what is locking the UI than you used to. Goodbye SynchronizationContext, you won't be missed.
  • Silverlight to Web: This is increasingly a big transition many developers are making. And this transition seems very daunting to many. But it's not. HTML is markup (as is XAML). CSS is styling (akin to XAML styling) and data binding is data binding. Look to frameworks to help you map the same style of app development that you are used to. Using AngularJS or KnockoutJS to build MVVM-style client-side experiences is remarkably similar to Silverlight. Stop worrying about how much you think you hate JavaScript. You hate what you used to know about JavaScript, not the modern JavaScript that people are using today.

How do you get up to speed? As a Pluralsight author, I am not unbiased…I think at $30/month, you can learn a boatload in a short amount of time. In fact if you look at my recent (and upcoming) courses, they are geared towards these new learning opportunities.

In the interest of encouraging people to view my courses and learn, here are some of the courses I wrote that I think could be helpful:

In any case, whether you view my courses or not…you should take it upon yourself to learn as much as you can. Pick anything that you find interesting and learn…learn…learn.

Application Name WilderBlog Environment Name Production
Application Ver Runtime Framework .NETCoreApp,Version=v1.0
App Path D:\home\site\wwwroot Runtime Version .NET Core
Operating System Microsoft Windows 6.2.9200 Runtime Arch X86