Wag The Dog Anti Pattern

From the phrase, "the tail wagging the dog." Common vernacular referring to a symptom or side effect having more consequence than the original cause or effect.

Historical observations:

In brief: a technology which should be treated as an "auxiliary" or "supplement" or "service" to an application and which has nothing at all to do with the (business) logic or the UserStory, becomes pathologically coupled to the heart of said application.

Typically, the force behind this is either the SilverBullet or ThisIsHowItsAlwaysBeenDone? aura surrounding the technology. Or it could be marketing by some vast corporation. (Hmmm, now that I think of it, maybe EJB is an example!)

I left a note in JavaServerPages about this, then figured I ought to put something here just to hold the place.

I'm a newbie at formally defining (anti)patterns, so I'll wait and see - if this doesn't sink into the WikiBlackHole?, I'll take a stab at it. Unless one of the PatternElders? steps in....

-- Tom Rossen


Examples

Right off the top of my head, I can think of one: modem dialup as the only access to a particular service, even long after the Internet has been well established as a conduit.

The actual context was (is) a collection agency whose collectors needed credit bureau data for individual cases. Although the modern way would be to submit the requests ad hoc via internet, the enforced method was batched via a dialup modem connection.

The result is that turnaround times are never better than 24 hours, and require a convoluted batching submission process having modules running on the workstation, an intermediate aggregation box, and finally on the machine that actually has the modem.

Although there were (are) substantial business reasons to speed the process up, the enforced dialup conduit plays hell with any new system design.

-- GarryHamilton

Hey - I like your example -- TomRossen

This isn't wagging the dog, it's simply a bottleneck. Now if, say, the support manager for dialup access support was placed in charge of the production support for the actual application being accessed, that would be tail the wagging the dog. But that's managerial -- certainly they have their own antipatterns, but we're talking mostly about code antipatterns. I can vaguely imagine some instances of an obscure specialized API coming to be used to control a whole system, but it's sort of contrived. Know of any actual examples? Maybe INT10H in DOS?

... isn't wagging the dog ...

Well, if it were just a quirk of system evolution, yes. However, here's an industry (Credit Collections) that has a real motivation to have timely access to data. There are hundreds -- thousands -- of these customers for this data. Market-driven economics would dictate that the supplier (Trans Union) make the data access more efficient, but TU was making the rules. Because of contract agreements, the customer couldn't just go down the street and get better service. The supplier dictated how the customer would access the data, and imposed this bottleneck.

I would argue that this is a form of WagTheDog. -- gh

What about MacromediaFlash? As a web developer, I frequently have to structure whole pages around the technical problems created by the .swf media given to me by the "designers" who will not see their art spoiled by horrid "jaggy" text. Flash in menus, flash forms, flash animations, flash advertisements... "Just put in some filler text, and the designers will come up with something in Flash." In serious applications, flash goes from mis-use to a technical obstacle.


EditText of this page (last edited February 8, 2007) or FindPage with title or text search