THE SQL Server Blog Spot on the Web

Welcome to - The SQL Server blog spot on the web Sign in | |
in Search

Buck Woody

Carpe Datum!

Wizards are evil – wait, no they aren’t!

SQL Server contains many “Wizards. Wizards are simply programs that collect information based on user choices. The Wizard’s screens explain each step and the choices on that screen. Based on those answers collected from the user, the Wizard performs some task. What could possibly be wrong with helping a user this way? Well, plenty.

Wizards hide complexity from the user, which can prevent them from learning the process behind the Wizard. Wizards can also enable the user to choose the wrong options too easily – especially if the user doesn’t read the screens.

For instance – in the example that’s always mentioned, the Maintenance Wizard, the screens present not only “Shrink Database” (which you should never do) but it presents both REBUILD and REORGANIZE options for the Indexes. Of course, Microsoft isn’t sure which you need to do, but some users select both – which isn’t necessary.

And then from time to time there’s a bug in the code and the Maintenance Wizard doesn’t work properly. For this reason, some experts have recommended that we remove all of the Wizards.

But I don’t agree. I think Wizards have their place – given two conditions. Number one, they always need to work. And number two, the users need to read the options carefully so that they make the right choices. The Wizards do a good job of making sure the process can be scripted, and many of them drop you off (like the Maintenance Wizard) with a package that can be changed later. So don’t give up on the Wizards. Let’s fix them. In fact, tomorrow I’ll talk about an idea brewing in my head, and it involves actually increases the number of Wizards!

Published Monday, December 14, 2009 8:55 AM by BuckWoody



Adam Machanic said:

Hi Buck,

Your argument, it seems to me, can be restated as follows:

If Microsoft's wizards weren't full of bugs and inconsistencies, users who are advanced enough not to need wizards could use them.

It doesn't make sense to ask users to "read the options carefully so that they make the right choices." Users who use wizards are doing so because they do not know the "right" choices, and they're not going to read carefully because they expect the wizard to make the right choice for them.

December 14, 2009 12:15 PM

SQLvariant said:


What about "Migration Wizards"??  Come see what the Migration Wizard did to my cubes and tell me how to undo it, then I'll be able to entertain the thought.


You've got a great point, a lot of times I use a wizard to generate the code for me so that I can just edit the code that it spits out.  I have only used code directly from a wizard twice in the last year and I regretted it both times (still in the process of regretting the second time; but it sure did a lot of leg work for me).  I never used wizards early in my career.  Maybe it's a deep rooted trust issue but I always inspect the code that the wizard spits out.

December 14, 2009 1:18 PM

Peter said:

It's sad, but my first thought when seeing this on Twitter was "Not all - some are Lawful Good".  Gotta take a break from the RPGs sometimes. :)

That being said, Wizards definitely have their place, even for advanced users. I use the Export/Import Data Wizards constantly because they're just a whole lot easier than trying to set up a new SSIS package to transfer data to/from one or two tables. I'll agree that the Maintenance Wizards need some work, but they're really helpful for people who just need to do some basic work and don't have a DBA and can't necessarily afford a contractor to come in. The Shrink option should be taken out as a regular task and perhaps the example you gave above could be an either/or option, but they're still good to get started.

Even better are the ones that help you to generate a script so you can learn a little more about what the wizard does behind the scenes. I really like the ability to script just about anything for those items that I just don't use frequently.

As for always working, that should be a given. I don't know how those slip through the cracks, especially the ones involving backups.

December 14, 2009 1:24 PM

Alex K said:

Unfortunately some wizards provide choices I don't really care about. The following is a must read from Joel Spolski:

"    Every time you provide an option, you're asking the user to make a decision.

Asking the user to make a decision isn't in itself a bad thing. Freedom of choice can be wonderful. People love to order espresso-based beverages at Starbucks because they get to make so many choices. Grande-half-caf-skim-mocha-Valencia-with-whip. Extra hot!

The problem comes when you ask them to make a choice that they don't care about. "

For example, in 99% of the cases when I open the Indexes wizard, I just want to see the list of columns, both regular and included. I would rather just open a tree node for a list of columns, just like I do under the Table node.

December 14, 2009 2:20 PM
New Comments to this post are disabled

About BuckWoody

This Blog


Privacy Statement