Alex Bundardzic has written a nice piece on achieving simplicty when developing software. He also points to the post on 37 signals on similar lines. Like other times, I have commented on Alex’s post, but later I thought that this topic warrented a post here.
What About Flexibility?
However I feel it is a incomplete without its possible side effects. The biggest one being lesser flexibility. Of course flexibility itself can be the evil sometimes, but design of any software is (or should be) done with enough flexibility. One of the most classic divisions in the Linux world is over Gnome ‘s simplicity and KDE‘s flexibility. Another instance is the popular messenger gaim opting to reduce the number of preferences to make it simple.
Reducing the necessary flexibility can kill the application and sometimes its usability. There are logical sets of customization units that can need to be equally flexible, e.g., to let the user select a font, the change of typeface, font size and the decoration all has to be provided in a word processor. Howerver, this flexibility might not be necessary for writing posts on a blog as the presentation is controlled by the theme.
What is required is to keep a balance between enough flexibility and possible simplicity (through usability). Beyond this balance these folks are ready to wage a war with each other. One of the ways I like to achieve this balance, in case of preferences, is to provide default values. Allow the user to make fewer choices by providing default values for things (s)he does not care about. So that the other (s)he will have more or lesser choice. Using the combination of flexibility and default values you can provide different levels of choices to different users.
Another way can be to provide themes of preferences that users can choose. Something similar to desktop themes or blog templates and themes. The user profiles should be used to identify the different combinations of choices to package as a theme.
Documentation A Must
I think this is the biggest effort cost of providing flexibility. Without supporting documentation it is just another bundle of controls and dialogs for the user. Usable and extensive help can provide the necessary education to the user about the application.
I am a believer of the Less Is More paradigm, but it is imperative to decide on how much less. This will by and large be dependent on the user profiles the application is expected to serve. Over the long term a software with the right formula of flexibility, simplicity and functionality will be successful. However, it is important to see that the formula will not be the same for every project, it will vary and will depend on lots of factors. It should result in a software as simple as possible with enough flexibility to provide the expected functionality.
Copyright Abhijit Nadgouda.