Saturday, April 23, 2005

Wizards... and such

Wizards... I think they're the one of the worst things ever added to a development environment. While they certainly make it fairly easy to crank out a quick form, report or SQL statement, they increase the complexity of later changes 100 fold.

It's like all the other 'all-in-one' stuff so prevalent these days, yeah, they do 'everything', but, they do no particular thing well!!

Maybe I'm just a dinosaur, someone who takes pride in an application well crafted. To me the feel of a new subroutine 'clicking' in to place in an application is as satisfying as a new hand-crafted part sliding perfectly in to place on my Car or Bike.

Why am I upset about this, when I never use them? Well... simply because every single project I've had to work on in the past six months was initially developed using the 'Wizard' features. Every single item that the client wanted changed... you guessed it... was a limitation imposed by the original use of the 'Wizard'. I'm certainly capable of pulling all the wizard code, and replacing it, but, it all adds time to the project that gets us no closer to the desired end result.

I could develop a 'replacement' class to over-ride the existing 'wizard' classes, unfortunately, that could easily impact systems I'm not even aware of somewhere else in the organization. Not exactly a result that will endear you to the client, or lead to additional work!

So 'Wizards' to me, are like the Wizards we read about in folk-lore... Thought highly of in their time, but, in time were seen for the 'smoke and mirrors' magicians they really were. Nothing substantial in their various offerings, just a lot of flash. When things were really put to the test, they ended up blaming the 'gods' for being angry when they couldn't produce results!

One interesting thing to me, is my newest site has 'Wizards' in the name (and far less content as at this point it's really just a placeholder) and it gets more hits a day than all the other established sites combined... Maybe I am a dinosaur... and the rest of the world still believes in wizards!!


Firehawk said...


As someone who assists people with computer questions on a daily basis, I can say that wizards and their ilk are both a blessing and a curse. For some, who want to follow the template/wizard formula exactly, they can greatly speed the process and allow a novice to turn out a good-looking piece of work without learning the nuts and bolts of the program in question.

If, however, they want to diverge from the wizard's hard-wired format, then things get really ugly. In certain circumstances, I've found that there's almost no way to salvage a project after a wizard-based action has gone very sour.

Any time a program does a lot of work "behind the scenes", there are going to be times when you're going to be extraordinarily peeved at the end result. I find that I've come to rely on some automatic functions by virtue of their speed and ease, but they can sometimes be a curse to the user, as well.

I can only imagine how wizards would complicate the programming task, since they'd be planning ahead into an uncertain future. It would be like writing the second book in a trilogy before starting on the first, a project doomed to constant re-working and anguish.

Thanks for sharing your views. Happy coding.

Braleigh said...

Good to have you back in the blogging world, Bill. As Firehawk was so generous as to suggest you either blame or praise me for his comment several posts ago, I think I'll just shrug off my lack of computer knowledge and, guilt-free, pretend that I said EVERYTHING he just said. Wahahaha!

Bill said...

That's exactly the problem firehawk, a blessing in the correct situation, but a curse if the requirements change!!

Unfortunately, after more than 20 years of developing systems I learned that the requirements *always* change. In the early days I often thought that a 'code generator' could speed the development process. Especially the mundane stuff that's in every application.

Unforunately, while wizards can do that... they most often come with the 'hard-wired' actions you descibe and need to be completely extracted and replaced once the application needs more than those basic functions.

A better choice these days is to build a base class of application tools that contain the proper 'hooks' for later extensibility.

Sadly, a lot of development projects don't budget for those provisions.

Also... no need to 'blame' anyone for their input here. :)

One of the things I really like about blogs is the open forum they provide, for all opinions, even the ones that may not agree with mine!

Thank you both for stopping by!