I have been reading through a rather lengthy Microsoft document regarding UX (User eXperience) design and standards.
There are many great suggestions that I have started to adopt. But something occurred to me last night while working on my solution and I wanted to solicit some ideas and possibly have a short discussion on the topic of features and the Windows Forms Application UX.
Last night I was driving home from the office after spending quite a few hours on a handful of wizard forms and a concept that would allow users, on first run of the application, to setup a brand new data source. They are effectively presented with two options, create and use a new SQL Database, or create and use a new MS Access Database. Each selection carries on to a different form in the wizard asking the appropriate questions for the data source type and then finally executes a final form that creates, and inserts some default data into whatever data source type they selected.
I designed the forms using the UX guide that Microsoft published, which suggests that wizards only be used for tasks that are infrequently performed. Setting up the initial data source seemed like something that needed to be done on first run and never again. A wizard seemed logical.
The concern is though...is it necessary to offer it on first run or even at all?
My initial goal was to create a system that allowed flexibility, giving the user the ability to use whatever data source they were most familiar with. For some users an MS Access file is much more familiar than a daunting SQL Server that could carry a lot of overhead. But I figured both should be offered because larger users with multiple clients might prefer a SQL system because of the performance.
The UX guide however also suggests:
What does “power” really mean in terms of software? An application might be considered powerful if it is jam-packed full of features, having a tremendous breadth of functionality in an attempt to be all things to all users. Such a design is not likely to be successful because an untargeted feature set is unlikely to satisfy the needs of anyone. This is not the type of power that we are after.
[...]Simplicity is the most effective way to achieve ease of use, and ease of use equals use. Complex, hard-to-use features just don’t get used. By contrast, simple, elegant designs that perform their function well are a joy to use. They invoke a positive, emotional response.
For example, consider the wireless networking support in Microsoft Windows XP. Microsoft could have added a wizard to walk users through the configuration process. This approach would have resulted in ease of use but not simplicity, because an unessential feature (the wizard) would have been added. Instead, Microsoft designed wireless networking to configure itself automatically. Users ultimately don’t care about the configuration details, so long as it “just works” reliably and securely. This combination of power and simplicity in wireless networking technology has led to its popularity and rapid adoption.
Obviously in a multi-user environment, which is where my application could potentially run, an Administrator account needs to be created for the user, so some first experience interaction would be required before the application could be used.
I just wonder if, instead of presenting the options to use the various data source types I should do something more automated. I mean, if a SQL server doesn't reside on the PC that the software is being installed on, why would I offer it as a choice? Maybe to give them the option of installing it? That should be done at setup, not on first use right?
Also, if the application is able to detect a SQL server on the PC, and I decide to make that the default choice for storing data, I might run into issues that might make users unhappy and might end up with me getting in trouble. The last thing I want is my application to start creating databases and tables on a server without some sort of user interaction.
I just wonder...for the average user...what's the best choice here?
I do know that a feature Microsoft Outlook includes (the business contact manager) uses the MS SQL 2005 server. When you install the contact manager, it installs the server and then uses the server. It doesn't even really tell you it's going to do it. It just...does it.
Any thoughts? Experiences? Suggestions?