Preferences are the corners we smooth to break-in our applications. Rounding and polishing the rough edges, optimizing our apps to meet our needs. Some preferences offer personal comfort by adjusting font size, tracking speed, or repeat rate. Others allow expression with a choice of color, desktop pattern, or ringtone. A computer’s most fundamental preferences control screen brightness, speaker volume, and energy efficiency. While the interconnected nature of our modern devices makes communication preferences like wireless network, email server, and screen name indispensable.
Applications that perform a single task well are like a straight line with very few rough edges. The path from point A to point B is clear, and the requirements needed to complete the job are straightforward. Very few preferences are needed. But as customers have demanded more features from their applications the line from point A to point B has splintered into a maze full of right angles and sharp corners. The view from entrance to exit is obstructed, and more preferences are required to smooth the corners and make navigation easier.
My two favorite text editors have two different approaches to application preferences. WriteRoom is a straight line text editor designed to minimize distractions. It does not have a formal preference pane to collect application settings. All of the user configurable preferences in WriteRoom are selected from the Menubar. No setting is hidden out of sight. When I write in WriteRoom I tune it like I would an old style radio. Choosing a theme is like selecting the station, adjusting the font size is like changing the volume. Once I have selected what feels right I begin writing. WriteRoom is a great text editor, but it lacks the complex features and advanced preferences to be my dedicated coding environment.
Coding in BBEdit is like configuring a television set. Not an old fashioned television set with two discrete nobs, one for selecting the channel and the other for changing the volume, but a modern television set full of hidden settings for picture quality, input source, and surround sound. BBEdit has a preference pane so expansive that it requires a search field to locate all of its hard to find hidden settings. When I code in BBEdit I know it is capable of handling every task I can throw at it. If I can’t find a preference using the integrated search I can submit a bug report and Rich Siegel will show me the hidden feature I am missing. BBEdit is a powerful application that offers a labyrinth of corridors for completing almost any task.
WriteRoom and BBEdit are two different applications, aimed at two different tasks, with two different approaches to user preferences. WriteRoom is a simple application aimed at distraction free writing with a minimal set of preferences. BBEdit is a complex coding environment targeted at software development with a extended set of settings. They are as different as an old style radio and a modern flat panel TV can be, and yet neither approach is perfect. Applications cannot become so simple that they only perform one task well. Preference panes cannot become so complex that they require a search field to navigate. The perfect amount of preferences falls somewhere in between.
By separating the preferences people use most from the ones they don’t, developers can streamline advanced application configuration and reduce confusion. We are already starting to see this approach with mobile applications that connect to a dedicated web service. Upon first launch users are asked to enter their service credentials. Once those credentials are verified a user never has to set that particular preference again. Instead of wasting screen space with settings we only set once developers can offer us immediate access to the preferences we use most to fine tune our day to day application experience.
The perfect set of preferences is like an office chair. The difficulty of assembly is only experienced once and is analogous to configuring the server settings on a modern mobile app. Once the chair is constructed preferences like height, recline, and rotation are only a convenient handle pull away. When developers design their next application I suggest they separate the preferences users need everyday from the ones they don’t. No one wants to put together their chair twice when all they were really reaching for was a little lumbar support.