The title of this column comes from the story of Aladdin in "The Thousand Nights and One." At the point in the story where this phrase crops up, the evil wizard has come through town offering to trade brand new lamps for dirty old ones. Of course, what he's really after is Aladdin's magic lamp. The wizard does get Aladdin's lamp, which leads to much anguish and confusion and, of course, a more interesting story.
We often get to repeat this story in our business. The vendor comes into town offering to swap their brand-new shiny technology for our worn out, dirty, obsolete technology. And, of course, we do.
To switch metaphors in mid-stream, this is very different from the way a doctor works. A doctor will tell you, when prescribing medicine, what the possible complications are. Every medical practitioner realizes that each new cure comes with its own set of problems. The usual problems are unfortunate side effects, interactions with other medications, allergies, and a subset of patients who don't respond to the new therapy.
We seem to repeat the Aladdin story in our business. New technologies are presented as being free from problems. Each new software miracle is supposed to eliminate our backlog, increase our productivity, prevent bugs in our programs, clear up your acne, and get me a date on Saturday night. The reality is more like the doctor's story: Some things get better, other things get worse. More importantly, some things can't be done at all under the new regime. Lately, I've been thinking more about the side effects of new technology than I have in the past.
I remember installing a new Access system to replace an existing paper-based purchasing system. I had a lot of fun explaining all the benefits of the new system. One of the users, though, pointed out that they were giving up a significant ability by losing the paper-based system. One of the things that this group did frequently was pull out the file drawer and flip through the file folders, reviewing the orders due for the coming week. This was a simple thing to do and gave them a feeling for what was going to show up on the receiving dock in the next few days. I guess that, given the amount of time they'd had the paper system, I shouldn't be surprised that they used it very well.
No new technology ever supplies all of the features of the one it supplants. Users moving to Access from some other database are distressed to find that they can't add records to a table anywhere at all -- records must be added at the end of the table. These users had developed "legacy knowledge" around using their old toolset. A certain amount of training is required to "untrain" the users from their old expectations. After a while, they'll take it for granted that records are added at the end of a table.
Systems departments also have "legacy knowledge." If you have a systems department that's been using a particular toolset for a while, they'll be very good at using it. They'll understand all the error messages ("Oh, yeah, that message means that when you assigned the object variable in a previous line that you left out the Set command."). They'll know what does and doesn't work ("Well, the manual says you can do that -- but you can't."). And they'll know what you can do with the tool that isn't in the manual ("Let me show you a neat trick").
More importantly, no one in the department will be writing a totally new program. Instead, programs will be pulled together, at least in part, from bits and pieces of other programs. Sometimes those bits will be purely virtual ("Oh yeah, you write that routine like this") or just used as a starting place ("Take the order inventory program and turn it into"). While this is hardly code reuse, there's a lot of efficiency in that "legacy knowledge."
I think that abandoning our "legacy knowledge" is one of the major side effects of adopting a new technology. So far, for me, the benefits have outweighed the costs, so maybe it's just because I'm getting old (just got my first set of bifocals) that I'm thinking about this more. But, like good doctors, we need to consider the side effects and costs associated with any treatment.