Windows 8

A developer's predictions for 2013

Justin James reflects on the Java and .NET ecosystems and looks ahead to 2013. Let us know if you agree with his predictions about the development landscape.
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.

J.Ja

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

About

Justin James is the Lead Architect for Conigent.

12 comments
dinomutt
dinomutt

When you start by lumping .Net and Java together but then spend the entire rest of the article lambasting .Net.

minstrelmike
minstrelmike

"at this point I feel like HTML5 + JavaScript + CSS as the universal UI toolset allows you supreme flexibility" ditto. And basic html works even for older hw and is ez to test for and code as a secondary presentation.

todd_dsm
todd_dsm

I read your posts because you have solid structural thought, credible insights and good gut-instincts; forget about the fact that you are a Microsoft guy. I keep pinging you (in this forum) to consider exactly these topics. Take a step back and consider this: We open source guys don't agonize over stuff like relearning skills we already have. A good example would be the Python language: features are baked in over the course of 20 years and they have suitable foundations from which to build on them for years to come. Therefore we can learn a language and rely on it to be there for decades. The "other" method is attempting to push a language to market within the constraints of a rushed deadline; corporations are always trying to 1-up each other every release cycle providing half-backed "now" solutions. Move back from the dark side and when you pickup skills, you'll have them forever. Once you've acquired a skill, you can rest assured that those holding computer science degrees have requested rigorous public reviews of their concepts (Python, Ruby, HTML, etc); IE: they were not hatched as proprietary concepts only seen by a few internal employees before approval, then pushed hard to market. One key benefit of open source (anything; html, javascript, css, vim - anything) is that once you have gained a skill set, their yours - forever. In 30 years, you could go through this cycle of having to re-learn newer ways of doing what you already know - probably 4 or 5 times. While we, on the other hand, will be chugging along with the methods that are already 30 years old now. Do you want to spend your time relearning new tools designed to help you perform the same old tasks or would you rather be chasing the kids around the back yard? I haven't given up on you buddy - we will get that soul cleaned.

Tony Hopkinson
Tony Hopkinson

We'll continue to the the basics wrong with a whole set of new tools, that turn out to be not that new after all... Hype and rush to market will again prove to be bigger drivers in software development, than quality, ROI and plain common sense. SSDT(ools)

jcoons
jcoons

Good call J.J. I think you have just about covered most of what I've been seeing for the past few years as a development lead in a major healthcare organization. I think you correctly identified HTML5/JavaScript/CSS as the underpinning of the UI tier, regardless of the back end code. I guess we'll see, but that's where my money would be. Thanks.

ejiro4
ejiro4

I wonder why you mention JAVAFX and not mention AIR Flex

laseray
laseray

The only prediction you made was that HTML5 will make significant in-roads against native UIs. The rest of what you wrote at the end were directives. I think this prediction is premature. HTML5 has been hyped up to be a replacement for desktop UI, it is not even a solid standard yet. On top of that there is lag across numbers of browsers in supporting the functionality of HTML5, and that is due in part to the "standard" still being in flux. Another thing standing in the way of this is the fact that you have to use Javascript and CSS to build out a UI. Okay, you need them and HTML5 is replacing the need for some Javascript, but the requirement for a mix of languages/formats just confounds development. So things are not really that much ahead of native UI where you can use code in the same language as the business logic or, depending on support/toolkits, have other formats mixed in (e.g., CSS, XML). Also, there can be contenders that might still make desktop UI attractive. JavaFX is one. Still in its infancy in some respects, but quite promising if some missing functionality can come in within the next year or so. And it's support for web-based operation could be a real challenger to HTML5. JavaFX can even do HTML5, Javascript, and CSS with its Webview and Webengine components, in a desktop or web app. Mobile support is a being worked on. My prediction is that HTML5 will take upwards of 5 years to make serious in-roads over native UI. And at that we can expect to see other technology to challenge it, which can incorporate it along with its own approaches into desktop and mobile beyond browsers, blurring the lines between web and native apps.

Dethpod
Dethpod

"at this point I feel like HTML5 + JavaScript + CSS as the universal UI toolset allows you supreme flexibility" That is the UI of the future.

minstrelmike
minstrelmike

Our backend is Perl. The managing IT departments above us want us to convert but can't demonstrate any reasons for doing so. If we did move the entire backend to a different language or architecture, our 'success' mode would be that absolutely nothing changed. Their standard answer is that consolidation on single approach makes management easier. Our response is that architecture needs to be chosen for results, not ease of management. The reason those other IT departments have management issues in the first place is that they attempt to use all-in-one solutions in place of thoughtful, elegant design. Our entire system runs on 2 $8000 servers. Those servers are just barely powerful enough to run the management software they use!

todd_dsm
todd_dsm

@laseray I'm not sure where you live or who you're surrounded by but the HTML5, CSS, JavaScript train left the station. One primary indicator of what is hot, is what employers are willing to pay for. The results are in: http://goo.gl/7GI5 And, whatever you think javascript can't do, you should look at this: http://goo.gl/2aS7W It's just a short jump to the desktop from there. But, more importantly, this site is the result of a Disney/Microsoft partnership (and some other company); since it's an online comic book, it's fairly useless - except for the design. Microsoft made this with Disney because the managers of IE9 have seen the writing on the wall. This site not only show Microsoft's interest in open source technologies, it takes UI design through the roof. Most of us will never need to go this far but it's a comfort knowing that you can. But, ask yourself this: "Why is Microsoft is offering HTML5 training?" http://goo.gl/HVIwk Microsoft paid buzillions for Silverlight and now it's dying on the vine; it and flash have been rendered unnecessary. Flash hasn't met it's end yet but it's in the mail Believe this: Google, owners of YouTube, will kill flash once the HTML5 trials are complete: http://goo.gl/bHDq Once that domino falls, the rest are sure to be shortly behind. Just consider what decision-makers are doing - and why they are doing it. http://goo.gl/zVMRG http://goo.gl/IWksf Like it or not - it's here, it works, and it's time to get on board. You can go though a wave, but you cannot fight a wave. The downside of surrounding yourself with people that always agree with you is that your ideas are never challenged or changed. Microsoft (the company) is already there - why aren't you? Should you be? The alternative is being silo'd into an ever-shrinking skill-set; that not only hurts opportunities, it hurts the wallet which, in turn, hurts the family unit. Keep in mind, the future will never ask for our approval, but the decision to: a) follow it, or b) ignore it is ours.

ejiro4
ejiro4

I wonder why you mention JAVAFX and not mention AIR Flex?

todd_dsm
todd_dsm

It's a great open source project! Python would get you into the future but your manager is only half right; the tech needs to support both results AND ease of management. But, as long as management doesn't have to do the work, why should they care what we're going through in the trenches? Managers are always trying to build empires so they can grow stronger within the Corp. They think that somehow, IF you were to be more efficient there would be less work to do in the future, then less resources to manage, then fewer budget dollars are available to them. I have a janitorial-type role which generally involves cleaning up after these fools - alone. The fact is, if your department were more efficient, you would be doing less (reactive) maintenance on OLD work - then you would have time to be PROactive on work that "we wish we had time for..." Work never dries up.