Tuesday, February 03, 2015

Future Proofing Digital and Mobile Technologies - MUST READ

When major life events or news happens, our mind seems to capture in great detail the memory of our surroundings.  Today may just be one of those days.  In this article, our technology guru Peter Rogers, tells you how to future-proof your IT environment based on the latest 2015 standards, architectures and development tools.  How is that for hype!   Enjoy!

Peter Rogers
At the end of last year a customer asked for a digital technology recommendation that would still be valid in 5 years. As a technologist who looks at 3 – 5 year roadmaps then I instantly realised the complexity of this task and it has lurked mischievously in my head waiting to be released as a Blog.

The Digital Space is being increasingly glued together by JavaScript, Cloud SaaS/PaaS/MBaaS and API Gateways, mostly utilising API driven approaches run over 4 tier architectures. The interesting thing for me is that both the ingredients and the methodologies are changing massively. Companies are finally starting to use user-centred design, human-centred design and ethnographic research. They are also setting up Agile centres of excellence in order to truly utilise an Agile software development methodology, as opposed to a glorified Waterfall approach (dressed up otherwise).

The core duct tape of the Internet is changing though, with the arrival of ECMAScript Harmony, so called due to the time it has taken to standardise JavaScript. For those who don’t know the ‘history of JavaScript’ we are currently up to ECMAScript 5.1 but it was only a relatively small change since the original version 3 many moons ago. You may well ask where ECMAScript 4 went and the answer is that it was lost in a monumental battle of standardisation which has held the language back for some 10 years. Last December they finally agreed the ECMAScript 6 specification (https://people.mozilla.org/~jorendorff/es6-draft.html) which is largely impenetrable until it is published sometime in Q2. In the meantime solitude can be found in lean publishing books (https://leanpub.com/understandinges6/read/) and dedicated Blogs (http://www.2ality.com/).

At the start of 2014, I predicted that the Digital Space was moving solidly away from unmaintainable web frameworks like JQuery and towards dedicated MV* frameworks such as: Angular; Meteor; React; Knockout; Ember; and Backbone. This prediction was solidly realised in terms of the recruitment market and soon companies were clamouring for Angular and Backbone resources. This led to a proliferation of excellent new eLearning companies like Code School (https://www.codeschool.com/) to manage the necessary training requirements.

There is however an even greater change coming and this was reflected by the shock and awe that Angular 2 caused when it was announced at NG-Europe. The syntax looked so alien that it nearly caused a global DDOS protest against Google (as opposed to Sony for once). However the core change was that it was built on top of ECMAScript 6 (ES6) and Web Components with few people knowledgeable on these topics. Elsewhere, Polymer (https://www.polymer-project.org/) was based around Web Components, Ember had adopted the ES 6 Module syntax and Rob Eisenberg had created a brand new framework called Aurelia (http://blog.durandal.io/2015/01/26/introducing-aurelia/) which was completely based on ES6 and Web Components.

ECMAScript Harmony (or ECMAScript Next) actually refers to ES6, ES7 and ES8. The seventh version of the language introduces important concepts such as: Object.observe (watch an object for changes); await (asynchronous functions); data types; annotations; and Array/Generator comprehensions. The eight version is believed to introduce Macros. There is not a single web browser that supports all of ES6 at the moment but we can still use the language by using a Transpiler (http://en.wikipedia.org/wiki/Source-to-source_compiler) such as Traceur (https://github.com/google/traceur-compiler) or 6to5 (https://6to5.org/) – the difference being the readability versus performance of the output.

I call the introduction of these 3rd generation frameworks (Angular 2, Aurelia, Polymer and Ember Module) and their reliance on the latest version of ECMAScript as ‘MV* Harmonisation’. This is because the harmonisation of JavaScript to the ES6 standard has meant a common agreed syntax for core framework constructs such as Classes, Module and Promises. If we also add Web Components into the mix then we can see Polymer introducing support today and Angular 1.4 offering an extension of the Directive syntax to look more like a Web Component. Technology often repeats itself and it is clear to see by the shock caused from Angular 2 that there is a whole new training regime required to prepare ourselves and the quality of JavaScript developer required just went up yet another notch. Indeed after learning ES6 and Web Components then Angular 2 made total sense to me and I really wouldn’t want to go back to the 1.x branch.

This is why I am learning ES6 right now and preparing eLearning material for when I need to do recruitment and training all over again. I remember the days of a single Angular book on the market and the situation is even worse with ES6 because I could only find one lean published book which was only 30% complete. The MV* Harmonisation learning curve is going to catch out a lot of developers, recruiters, architects, technologists and even CIOs, which all lead to a lot of non-future-proof decisions being made in 2015.

You can see that Traceur actually supports most of ES6, along with a few ES7 ‘experimental features’ and even supports Google’s new language ATScript (https://github.com/google/traceur-compiler/wiki/LanguageFeatures) which is the core building block for Angular 2. You can even embed Traceur into a webpage so you can have a code playground or a REPL (http://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop). You can find ES6 REPLs at: ES6 Fiddle (http://www.es6fiddle.net/); Traceur playground (https://google.github.io/traceur-compiler/demo/repl.html#); and 6to5 REPL (https://6to5.org/repl/). It is vital to have a play with the language and code playgrounds are a great place to do just that.

Future Proofing

With that in mind if I were to choose a future proof solution for the next few years then I would still be looking at using Angular 1.4 (out in time for NG-Conference) with the ‘controller as’ syntax (to facilitate classes), along with ECMAScript 6 (as opposed to the popular CoffeeScript option) and 6to5 in order to be able to maintain the code base with non-ES6 developers. You will need to upgrade the code when Angular 2.0 is released but then Angular 1.3 itself introduced the new one-time-binding which changed the syntax and template strategy. I would also be looking towards using more Cloud Platform as a Service offerings like Heroku and the highly impressive sounding Docker. I would have API driven approaches with end-to-end JavaScript running off Node and use MBaaS and API Gateways in tandem to provide data indirectly to Web Components.

I would personally not invest too much in solutions without a middle-tier that rely on data transformation algorithms without service tiers because business logic is only ever going to increase and this seems like an unnecessary architecturally restriction. Indeed I would steer away from ‘miracle 2 tier architectures’ (combining Cloud SaaS with Web Components directly) and look at 4 tier architectures complete with a service tier and a distribution tier for large scale scalability. I would also be looking at new Cloud SaaS offerings such as Sinequa (http://www.sinequa.com/en/index.aspx) which offers advanced search interfaces into Cloud hosted data; Couchbase (http://www.couchbase.com/); Firebase (https://www.firebase.com/); and Docker (https://www.docker.com/).

I would finally add that I would be looking at the next generation that have come off pure responsive web design projects and have seen the limitations of that purist approach but taken the learnings with them to the next generation of platforms that can wrap responsive behaviour into a solid framework with intelligent Cloud services, simple enterprise integration, and APIs providing abstract data sets to client side components.

Do you agree with Peter?  Let's hear your comments.

Contact Peter Rogers on LinkedIn

Kevin Benedict
Writer, Speaker, Senior Analyst
Digital Transformation, EBA, Center for the Future of Work Cognizant
View my profile on LinkedIn
Learn about mobile strategies at MobileEnterpriseStrategies.com
Follow me on Twitter @krbenedict
Subscribe to Kevin'sYouTube Channel
Join the Linkedin Group Strategic Enterprise Mobility
Join the Google+ Community Mobile Enterprise Strategies

***Full Disclosure: These are my personal opinions. No company is silly enough to claim them. I am a mobility and digital transformation analyst, consultant and writer. I work with and have worked with many of the companies mentioned in my articles.