Tuesday, September 02, 2014

Mobile Application Development Philosophy - Less is More

Peter Rogers
Cognizant's Principal Architect
What happens when you mix a mobile app development expert, time, programming philosophy and a Spanish airport?  The answer is in the following guest article by Peter Rogers.

Missing your flight, for the first time ever, and sitting alone in a Spanish airport gives you a lot of time to think.

I have been focused on and teaching JavaScript recently and found myself reading 'JavaScript The Good Parts' and was impressed. Written back in the 90s this is still considered the best book on the language. The premise is simple you take the good parts of a programming language and only use that subset. Anything confusing, error prone, insecure or low performance then you just pretend it doesn't exist.

Looking at the new features in Harmony (ECMAScript 6) then I cannot help but think the language is going in the wrong direction. In fact I feel very much the same way about Java in recent years. It seems that we start with a nice simple language: Java 1.1 (worked fine for me); or ECMAScript 3; and then we try and turn it into something else.

If you look at the later 1.6 versions of Java then you will see all of the worst parts of C++ creeping in there. Likewise Harmony appears to be aggressively pursuing pseudo-classical inheritance when all true JavaScript architects know that prototypal inheritance is the true strength of the language.

Just to annoy all the Apple fans, I also see the same problem in Swift. What starts off looking like a sensible combination of CoffeeScript, Harmony and Python; ends up going function crazy with every permutation known to man and in doing so becomes less than the sum of its parts.

Perl was probably the first language to demonstrate that more is less and Lua, Basic and SmallTalk were arguably the first to demonstrate that less is more. Something has certainly gone wrong with modern iterations of programming language where they are desperately trying to extend themselves to cover all the best bits of other languages. In reality a programming language should be reducing itself to its best parts rather than increasing itself to others' worst parts.

The only winner here is HTML5 and that's actually due to politics not rational intention. Since the mandate for HTML5.0 Recommendation to come out this year then the working group have been rapidly employing modulerisation in order to create smaller sub-standards out of the main specification. Anything that they can't explain or fix goes into 5.1 and any time the sand runs low in the timer then out comes another module, at the expense of Canvas.

In programming sometimes we all forget that less is more, even though that's the basic premise of coding guidelines.

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
Join the Linkedin Group Strategic Enterprise Mobility
Join the Google+ Community Mobile Enterprise Strategies
Recommended Strategy Book Code Halos
Recommended iPad App Code Halos for iPads

***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.