Software Crystal

Here's an anti-pattern, still in a rough form. Inspired somewhat by FallingWater.

A designer has a lot of time and opportunity to put his/her perfect design into place in the system. It not only solves today's problems, it solves all the ones in the future that the designer can think of too. But here's the problem: it does so in a way that requires the original structure of the design to be preserved. Like discussions of FrankLloydWright, whose houses "cannot be altered because all its parts are too rigidly designed and built". As soon as something comes up that was not anticipated by the designer, the brittle "crystal" that was so carefully crafted starts to come apart. Or if new developers aren't completely indoctrinated into the crystal's wave patterns, they start introducing harmful variations.

I'm not sure what the analogous physical structure for a "good" open, organic system is (maybe a cell or organism?), but that would also be good to characterize. (See OrganicSimplicity.)

Anyway, the results of the SoftwareCrystal can often be very sad. The designer sees his creation polluted with all these foreign appendages, and users and developers are frustrated by slow progress.

Contrast BigBallOfMud. Also see JoelMosesOnAplAndLisp.


Sounds like MonolithicDesign.

Sounds like the "Cathedral" in TheCathedralAndTheBazaar.


The story at the bottom of ZenConcepts suggests to me that SoftwareCrystals are what form when you KillYourDarlings. -- KarlKnechtel

EditText of this page (last edited September 13, 2003) or FindPage with title or text search