I created a miniature web app for decoding Morse code called Morseless for the fun of it yesterday. It makes for a nice little case study in progressive enhancement.
Wikipedia has this to say on the subject of progressive enhancement:
Progressive enhancement uses web technologies in a layered fashion that allows everyone to access the basic content and functionality of a web page, using any browser or Internet connection, while also providing an enhanced version of the page to those with more advanced browser software or greater bandwidth.
It fits with the agile development strategy of making the simplest possible version of your app first, then enhancing it in rapid iterations.
The trick is that what the ‘simplest’ version of a site is might be a little less obvious what is simple. As a concrete illustration, here’s the first version of Morseless:
There is a form at the bottom of the page in to which you can enter some Morse code text and a button to press to show the same page again except with the decoded text displayed in the box at the top.
But I wanted to make the user experience slicker by showing the decoded text as you type it in, or after you copy & paste code in from another page:
In the context of agile development it makes sense to split this two versions in to separate user stories:
- User can enter Morse and see text
- User sees text as they type Morse
Then, if time were running short, if necessary the second story could be jettisoned or deferred in order to make the deadline. The result will not be as nice, but at least the site is usable. Trying to get the whole Ajaxified user interface to work in one go might instead lead to failure to have either version done in time.