I re-read my first Software Engineer column of 2012 (Three development trends to watch in 2012), and I feel that I was pretty dead-on accurate. The big things that I missed were what I would be writing about in 2012. As I transitioned to full-time consulting work and then to a new employment scenario, I did not have the time to put into Ruby on Rails or Python + Django. I do, however, think these two systems offer excellent alternatives to .NET or Java, and that they are quite likely the better systems. You can now put Node.js on that list — too many really smart people who I personally know and respect are praising Node.js for me to ignore it.

The Java and .NET ecosystems pretty much mirror each other, and it seems like they are reflecting an increasingly ugly picture. Too many developers I speak too are spending more time chasing their tails trying to keep pace with the changes in the ecosystems and not enough time getting better at what they are doing. It is tempting to dismiss the need to keep upgrading skills. Here are some things I hear all the time about it.

  • “XYZ is just a buzzword, it will be forgotten by next year.”
  • “I’m too busy writing code to learn a new way of doing things.”
  • “What we’re using is good enough for our needs.”
  • “Why should I learn a new method when it will be obsolete in a year or two?”

Behind each of these sentiments is a lot of truth, but the conclusion (i.e., don’t bother updating your skills) is false. Let’s look at each one a little closer:

  • “XYZ is just a buzzword, it will be forgotten by next year.” It’s not likely it will be forgotten, but it will have lost some buzz. That does not mean that it is a useless skill.
  • “I’m too busy writing code to learn a new way of doing things.” This is probably true, but the new skill may repay itself over time.
  • “What we’re using is good enough for our needs.” This is highly, highly doubtful if you are a .NET developer. While WinForms is a “good enough” tech, its long-term future is miserable. ASP.NET WebForms is an awful technology. If you are doing anything other than bare-minimum maintenance in these techs, you are creating a mess for yourself. I’d be willing to wager that folks who know more about the Java ecosystem than I do would likely say the same thing about Java.
  • “Why should I learn a new method when it will be obsolete (or the world will shift to something else) in a year or two?” You have no idea what will be obsolete in a year or two. I thought Java was a “flash in the pan” when it debuted (and so did many others), but it reinvented itself as an enterprise development tool to great success.

No matter how I look at it, the .NET system of tools has had so many shortcomings that one cannot help but feel forced to upgrade. When Microsoft does get it right (or close enough), it makes a big change that forces you to dump what you learned anyway. WinForms wasn’t perfect, but for the overwhelming majority of enterprise applications, WPF (and now the XAML-based Windows 8 system) are not compelling upgrades. But at this stage, there really is not much of a long-term option.

So my predictions for 2013 are virtually unchanged from last year: look at how Windows 8 fits into your plans (it still remains to be seen if it justifies itself to most developers), go HTML5, and go mobile. It’s up to you how you get there, but at this point I feel like HTML5 + JavaScript + CSS as the universal UI toolset allows you supreme flexibility, especially with Windows 8 making it a full-fledged player on the desktop and in mobile, and tools for iOS and Android are doing the same. In 2012, HTML5 put Flash and Silverlight on the “soon to be forgotten” list, and in 2013, it is going to make significant inroads in terms of doing the same to native UI tools as well.


Keep your engineering skills up to date by signing up for TechRepublic’s free Software Engineer newsletter, delivered each Tuesday.