'''CategoryAntiPattern''' ---- '''Problem:''' Software components and interfaces are haphazardly glued together with the programmatic equivalent to duct-tape '''Context:''' Multiple subsystems communicating with each other '''Forces:''' * You have several working solutions and do not want to change any of them. * Scripting languages and automated data transfers simplify putting things together across applications, platforms, geographic locations and time zones. '''Supposed Solution:''' * Things are combined and glued together in a way they were never thought to, and used for things they were not devised for. '''What Happens Next:''' * The programmer that built the machine leaves, it works fine for a while, and one day something breaks. Nobody knows where the problem is or how to fix it. Tiresome error diagnostics reveal one strange relation after another until the service person has in fact rebuilt the entire Goldberg machine mentally, and is thus the only person who knows how to fix it. * Then this person leaves and it happens again. '''Lessons Learned:''' * Devise entire solutions to problems and do not go for glueing together things that just might work at this time, make software that does not have several couplings and thus not so many weak spots where it could break. '''Example:''' The data comes in from a web form, is saved in a data base on the web server through a custom SQL-string as a BLOB (which is UUEncoded to be accepted in the field), then once every second hour, a cron job process these and purge the database from BLOBS, UUDecodes the BLOB, zips its contents and transfer it to another host using FTP, where it is unzipped, converted into a flat file and imported using a perl script into another target database where a trigger sets off the appropriate actions, splits the data and sorts it into different tables and eventually purges the data sent from the cron job from the temporary table where it arrived. '''Links:''' * http://www.rgmc.com/ - RubeGoldberg web page '''See Also:''' * Enterprise system? (and the usual obligatory spaghetti diagram) It *is* expensive to overhaul these things, after all! ---- See also: RubeGoldberg, BigBallOfMud