Sunday, 1 January 2012

Moving from 2011 to 2012, seriously!

I have done several new year posts (for 2008 and 2009) in the past. Reading them today once again made me remember the saying "be careful about predicting when future is involved".

Both posts clearly show I was a keen believer of Rich Client Platforms especially Adobe's Flex. The rise of iPhone which is followed by iPad and other mobile devices crippled the plugin based web platforms. Adobe who should already been working on mobile version on Flash, was never accepted on iOS but also failed to deliver a reliable Flash Plugin on other platforms. Finally this year Adobe discontinued mobile Flash in favor of focusing on Air.

The fall of the plugin based platforms let HTML5 get even more attention. Even Microsoft who still does not have a real HTML5 supported browser, killed Silverlight and announced HTML5 would be the main development platform for Windows 8 (aka Metro apps).

Despite all the trends there are still a lot of IE6 and 7 (also 8!) users which would make html5 hardly be used in real world projects. However many new web frameworks make use of available features and try to mimic the not supported ones. Still HTML5 might be too bleeding edge unless your project only aim to run on mobile since most of the mobile browsers do fully support most of the HTML5 features.

Android despite all patent issues, still on the rise. With the latest release of version 4.0, the ice cream sandwich, finally both phones and the tablets started running on the same operating system. However the version fragmentation became more visible. Even most of the phones still on sale are still based on version 2.2 or 2.3. Although many vendors announced upgrade plans, even most popular devices failed to updating 2.3. Besides the OS fragmentation, Android devices still lack nice designs and good build quality. Currently the only up to date device on the market is Galaxy Nexus and there are several nice designs such as Sony Experia Arc and Sensation XE/XL but still lacking updated os version.

Meanwhile Apple is still having their glory days. Although there were no major updates, iPhone 4s became a huge sales success. Everyone is waiting for the iPad3 which is rumored to have retina display. Although Apple is rumored to stop selling Mac Pros, Macbooks are getting popular than ever and if you ever had worked on one you would probably know why (if not, please try one! seriously).

Social media and apps are hot. Facebook and Twitter might have already taken the lead but apps like foursquare showed there might be room for more. So Google did not hesitate to jump in with Google+ which became the fastest growing network ever.  

So here are some keywords for 2012:

  • Don't count on plugin based platforms (Flash, Silverlight and even JavaFX). At least for the next few years the web will be HTML...
  • Learn Javascript! Although many frameworks might help you to generate js, still it is best to know the real thing.
  • Invest in mobile! Forget about JavaME (seriously), even if you are lazy to learn Objective-C, you can easily start coding on Android.
  • If you are an existing Flex/Actionscript developer, try out Flex for mobile! It is currently the easiest and most reliable way to build apps on both android and ios from one source.
  • If you are not then no need to spend time on Flex. Instead learn coding on native or html5. Take a look at PhoneGap and SenchaTouch.
  • NoSQL is hot. Give it a try!
  • JavaEE6 became even more lightweight and exciting with WebProfile which made using Spring obsolete. You can use either TomEE or Glassfish which boots up just as fast as plain Tomcat.
  • Invest in HTML5! Instead of starting from scratch try HTML5 Boilerplate and Bootstrap from Twitter.
  • If you are keen on HTML5 on real projects, take a look at Modernizr.
  • Unless you are a CSS master, try out {less} which might become a good HTML5 companion.
  • CoffeeScript is getting popular. Again unless you are a Javascript Ninja, it is worth to try.
  • Scala seems to be a good choice for next language to learn, well even Joshua Bloch says so...
  • If you are brave enough to stay on the bleeding edge Play! is a great alternative web framework which also has built in support for scala.
  • If you are looking for a solid, proven web framework while still able to use HTML5 features, GWT would be a wise choice. 
  • Dart is new but it is worth to follow. Even if the Dart VM fails to be widely adopted it still has the option to cross compile to Javascript and the Google guys are experienced in doing that!