The qualities of a great web application
I aim to make Calcatraz into a great web application. To do so effectively it is important to understand the qualities a great web application exhibits. So what are they? Here are a few things I have thought of:
A web application should be quick: quick to load, quick to respond to user input, etc. However, I don’t think that calling the required quality ‘speed’ would be entirely accurate. There are instances when things can be too fast – an error message not displayed for long enough, for example. In general, events should happen at the appropriate time. If the user does not need a time lag, then there should not be one. I think the correct word is ‘punctual’ – the app should do things at, rather than before or after, the right time.
A web application should be minimal. Not in the sense of leaving out important features, but more in the sense of containing no unnecessary parts. Anything which does not perform a necessary function should usually be removed. Where several parts perform similar functions they should be generated by the same code.
Example: The 37 Signals guys do this really well. See BaseCamp for instance.
There is a quote ‘any sufficiently advanced technology will be indistinguishable from magic’. I think this applies to great web apps. Components of the application should be worked on and crafted to such an extent that it is no longer possible for the user to readily comprehend the underlying process. Alternatively it should be surprising – as in it offers something obvious but that no one even conceived as being possible.
Example: PHPAnywhere – coding is suddenly mobile.
Use of the application should be easy. Even complex parts of the application should be straight-forward to use without prior knowledge. This requires not just simplicity, but an understanding of human psychology. By understanding the mind and it’s quirks, an experience can be tailored to it.
A great web app will be unlimited in the sense that users do not hit upon limits while making use of it. That doesn’t mean the app can do anything in the world, but it does mean that it can do anything in its domain. This requires general mechanisms for extending the application upon its lines of functionality. An example is Google Analytics, while it doesn’t capture everything you need to know about your app, it can be readily extended to do so.
Example: Twitter – while the app is incredibly simple in itself, it is being put to an incredibly wide range of uses.
An application should be the product of user feedback. While it should not necessarily address every bit of feedback (as good for one user may be bad for another), it should be shaped and moulded into the form and function which delivers the most value to the most users. It should continue to evolve over time with changing needs.
As well as just responding to user requirements, a great application will predicted future requirements. New functionality will appear before a user realises they need it. Only genuinely useful improvements will be made – those that enhance and improve the user’s experience.
The application will be on-hand wherever the user requires it. It should be unobtrusive, but always available and easily invoked.