Anyway, I was going to use this opportunity to talk about designing a wizard with a programmatic tabbed table, but a quick search shows that some very smart people have already talked about this. So, rather than re-hash what Chris and Bill already detailed so well, I thought I'd just take a minute to explain the reason why I use a wizard-based approach in many applications.
I know it's hard to believe sometimes, but your users don't really care about the work of beauty that is your backend code. They're not interested in how it works, that you're using the latest ajax technique or that you've been able to optimize the database to fit 20% more data. Nope...they care about one thing when using your application...how easy it is to get in, get their work done and get out. I see my ultimate goal as a designer to make the UI of my applications so transparent that users "just get it". You want to try to get the interface out of the user's way so they can just perform the task at hand and get on with what actually makes the company money.
Especially in Lotus Notes, this is oftentimes easier said than done. Many interface elements are unintuitive (I'm talking about pre-Notes 8, of course), menus offer a confusing array of choices, the context menus are too long :-), etc. Whenever I am faced with a design that is going to require the user to either a) have some advanced knowledge of the Notes client interface or b) require several steps that would invariably mean that I would have to write documentation, I immediately turn my thoughts to building a wizard.
Let's take a very common example: importing data into Notes from Excel or some kind of file. We do this all the time. I decided a long time ago that never again do I want to try to explain the steps of importing data "the hard way" to a user. You know what I'm talking about.
1) Make sure you know where your spreadsheet is on your hard drive.
2) Go to the File menu and choose 'Import...'. No, the File menu. See it up there in the top left corner of your screen? No, below that little icon...Yep...that's it.
3) OK...now in that dialog box, select 'Lotus 1-2-3' as the file type. Wait, you did save your spreadsheet in 1-2-3 format, right?
We've all been there...
Enter the wizard. Wizards are a great device for walking a user through a multi-step process. In the case of importing data, I put the burden of work on myself as the developer rather than the user. In my mind, the user should be able to just say "Here's my file; now go do the work!". Yes, this entails more effort for the developer and I'll say yet again that I believe 100% that this extra effort is worth it. I understand we live in a RAD environment, but that doesn't excuse us from making the user experience the best it can be.
There's a million and one ways to do something like this, so I won't be displaying any code. I would like to show you some screens to illustrate what I'm talking about though.
In one of my applications, this is the first screen the user sees when they select the option to perform the monthly processing task.
Here, they are prompted to begin the import. Because of timing issues with the ERP system, they need to do this step manually, after they receive notification that the import file is available. Behind the scenes, my code is checking if the file is really there, verifying that it is valid, performing the actual import, etc.
Once the import is complete, I want the user to make sure that the data looks OK. It could be that the technical processes all worked correctly, but perhaps the data is bad for some reason. This step allows the user to apply their specific business knowledge to make sure it is safe to continue.
In the final step, the user kicks off the agent that does all the heavy lifting. Although there are many things going on here, the user's job is easy from a standpoint of interacting with the application. "Click three buttons and I'm good to go."
Going back to the application I mentioned at the very beginning of this post, here are some screens from a dialog-based wizard.
Notice that removing the buttons from the dialog makes it look nice and clean and certainly "non-Notes like". (Hint...using simple photos in place of clipart or plain pages can help make a design look more polished and professional. Bonus points are given if the photo helps convey the meaning of the current context.).
In this particular application, it was necessary to allow the user to import e-mail addresses from their contacts and their mail file into the database. Again, we made the multiple steps involved to do this seem really easy to the user, which makes them really happy. Users perform this task infrequently, so an additional benefit with this app is that by having the wizard available, the user doesn't have to remember how they did the import the last time or (even worse) have to dig through their mail file to find the instructions!
Wrapping up, the purpose of this post, as with many of my rantings, is to try to encourage you to keep the user experience in mind as you build your applications. Off-loading the hard work to the technology is what makes us valuable and allows our users to be more productive and do value-added work. In the end, this is a win-win situation for us all.