2011 was one of the most eventful years I can recall for software developers. The last time the scenery changed so much in one year was probably 1995, thanks to Windows 95 and 32-bit computing. This year, we have seen major shifts in the way we program for the Web, the future of Windows is unsettling and different from what we know today, and technologies we thought were "the future" are suddenly looking like they won't even make it to has-been status. Here are the most important events in the world of software development in 2011.
1: Windows 8 Developer Preview
The Windows 8 Developer Preview dropped like a bomb on the development community. With the new Metro UI and WinRT API, it became clear that Microsoft has no intention of putting additional effort into the traditional desktop market. You can doubt "the tablet effect" all you want, but it is obvious that Microsoft thinks it is real. Unless there is a significant shift in Microsoft's strategy between now and the final launch (rumored for second half of 2012, possibly as early as August), we can expect that the traditional desktop is going to be categorized as "maintenance only" and eventually drop entirely off Microsoft's radar. Also of note: Where do languages like Ruby, Python, and Java fit into the Windows 8 ecosystem? They might not work at all in pure Metro/WinRT mode. We need to get ready.
2: The rise of HTML5
HTML5 is still nowhere near "done," but in 2011, vendor support, from browsers to authoring tools, exploded. At the same time, adoption for it has picked up, particularly for mobile devices. Why mobile? First, the mobile browsers have decent support for it; no one is using IE6 on a mobile device. Second, HTML5 has a number of features that improve the browsing experience on mobile devices. Third, mobile developers tend to be forward looking and are closer to the cutting edge, in no small part because they get to start with a clean slate much of the time.
3: Mobile Flash zapped
When Adobe announced that it was no longer developing Flash for mobile platforms (note: its partners can still continue development on it), it was more of a "So soon?" moment rather than, "I never saw that coming." If Flash won't continue to be updated on the increasingly popular mobile platforms, it suddenly becomes a tough sell for the desktop too, in many cases. Unless you are doing something that will never be used on a mobile platform (good luck, since the larger tablets are a suitable replacement for desktops in terms of screen size), Flash is now a non-starter. The rapid end of Flash is very much expected.
4: Silverlight back-burnered
Before Adobe sent mobile Flash to the maintenance-only bin, Microsoft started backpedaling from Silverlight. First, it said that Silverlight should no longer be used in the kinds of scenarios that Flash or HTML5 address, which made sense given that it never hit "nearly universally installed" levels of penetration like Flash has done and HTML5 soon will. At the same time, it said that Silverlight was more for out-of-browser applications, like WP7 or internal enterprise apps. Fair enough. Then folks noticed that the Silverlight updates and roadmap updates weren't as fast and furious as they used to be; Microsoft blamed the fact that Silverlight was now a "mature" technology. But with the Windows 8 Developer Preview, both Silverlight and WPF (Silverlight's Windows desktop-only big brother) are on the legacy side of things. The only saving grace is that Silverlight, WPF, and the new Metro UI and WinRT system are all similar, and in many cases it takes minimal work to turn a Silverlight or WPF application into a Metro/WinRT app.
5: Java 7
Java 7 finally shipped. As the .NET ecosystem kept marching on, it seemed like the Java community was mired in internal warfare, in no small part because of the Oracle acquisition of Sun. All the same, Java 7 did ship, and it made good strides keeping Java modern and relevant. By way of comparison, though, it certainly was much less of a wait than Perl 6 or C++11 have been/were!
6: iPad's domination of the tablet market
By this time, a lot of folks were expecting the Android tablet to significantly crack the walls of the iPad fortress. At best, however, Android marketshare can be considered merely a small crack. Will 2012 be the year of the Android tablet? Maybe. It could be the year of the Windows 8 tablet, too. Or it could just be the year iPad kicked everyone else out of the tablet game. Right now, if you want to develop apps specifically for tablets, go iPad or go home.
7: PaaS for every infrastructure imaginable
A few years ago, I started seeing platform-as-a-service offerings coming out. Other than the established Amazon Web Services, the reaction was, "Oh, that's cute" and that was about it. Today, there are PaaS offerings for everything from the mainstream (.NET, Java, and PHP) to the less common (Ruby on Rails) to the relatively unknown (OutSystems' Agile Platform). Funny enough, most of them all seem to be sitting on top of Amazon Web Services. All the same, we are now at the point where if you can put your application in the cloud in terms of regulatory, security, and performance issues, there is no reason why you can't do it. The platforms are there.
8: Inexpensive cloud tools replacing expensive desktop tools
Speaking of cloud, in the last year I've been pitched more talks about cloud-based tools than desktop tools. And you know what is interesting? These cloud-based tools are much less expensive and they are easier to use than the desktop equivalents. Many times, these vendors are just taking existing open source tools, making them easier to use and work with, and deploying them in the cloud. And that's a good idea. I can tell you, when I wear my system administrator hat, I'd much rather not have server sprawl (especially for an OS or tool I know little about) and just tell the development team to sign up for the cloud service. These tools are a winner and the future of the industry, especially for smaller shops.
10: ASP.NET WebForms downgraded
For years, ASP.NET developers have looked at developers in systems like Ruby on Rails with a touch of envy, as they weren't burdened with the mess of WebForms. While ASP.NET MVC is not new to 2011, this was the year that its usage really took off as the technology matured. Fewer and fewer .NET developers are turning to WebForms for new projects, and with good reason. While ASP.NET MVC hasn't exactly blown my socks off (partially because I always rejected WebForms and wrote ASP.NET in a very ASP.NET MVC-like manner anyway), anything has got to be better than WebForms. .NET developers are finally able to code with the same capabilities as their counterparts in the Ruby and Java world.
Honorable mention: C++11
I mentioned C++11 before, but it deserves a spot all its own. C++11 finally brings C++ into the modern world, and it's the result of a spec process that was "lengthy" to put it mildly. It was so bad, it was called "C++0X" for the longest time because no one knew when it would actually wrap up. Even with that open-ended name, it was finished more than a year past the validity of the name. All the same, C++11 may spur new interest in C++, especially since alternatives for low-level and native programming seem to be slowly fading away.
Other developer milestones?
Do you agree with the significance of the events listed here? What else do you think had a major impact on developers in 2011?
Justin James is the Lead Architect for Conigent.