Sunday, 2 March 2014

Graceful degradation - not so 'graceful'

"Graceful degradation, well, is not so graceful" were the words of a young entrepreneur who is a co-founder of a mobile first design based startup. Driven by curiosity, I decided to dig into the subject a little. This article is simply a mix of my opinions with what I read and heard about.

Mobile first design, Graceful Degradation & Progressive enhancement   

Put in simple words, mobile first design is a software design strategy in which  software is designed initially for the mobile environment instead of following the traditional method where software is designed and developed for desktops and then support for mobile is provided eventually. With the increasing number of mobile web users, the mobile first method has been adopted by many software companies these days. But why? You'll see.

Graceful degradation is simply the route which the traditional method adopts. Fully functional web applications are developed for a desktop environment with support for many browsers. These applications are then 'degraded' for a mobile environment with lesser features. Let's take Facebook for example. If you use Facebook's desktop website and the Facebook mobile application almost equally often, you wouldn't fail to notice that many features in the main site aren't provided in the mobile application. The 'Get notifications' feature for instance is missing on the mobile application. But why? The answer is, if a web application/website were to be ported to a mobile platform with exactly the same behavior as in a desktop's browser, it would simply end up being too complex or heavy resulting in lesser responsiveness

Progressive enhancement is the exact reverse of the graceful degradation strategy i.e., developing for small platforms with minimal (but primary) features and then gradually adding functions as required while continuing to develop for more complex platforms. Mobile first development can be thought of as an instance of progressive enhancement.

Why progressive enhancement is better than graceful degradation

The advantage of progressive enhancement is that an application would be developed with most of it's important functional requirements, and gradually more requirements can be added as we continue developing for bigger platforms which provide more support for better features. The hard part of cutting down on features does not have to be done here. Also, the user wouldn't notice any 'degradation' in the application. If Facebook were to follow mobile-first design and release their mobile application first, eventually when they release their desktop site I wouldn't be complaining about the missing 'Get notifications' feature on my mobile application. Instead I would be excited to see new features on their newly released website! In case of Graceful degradation, many features of the application may need to be cut down to keeping responsiveness of the application in mind. Well, not so graceful isn't it? That is the idea.

If you would like some illustration, statistics and more detail visit my reference article.