On Brittleness

On Brittleness -- ThinkingOutLoud JeffMantei 20001204


Brittleness is a property of materials that causes them to break rather than bend when stressed. By analogy, the same property may be applied to systems.

An organizational example: when it is easier for someone to get a raise or more desirable work assignments by leaving the company than by going through internal channels.

A system is brittle if a small change in operating conditions, inputs, or some other factor causes the system to fail completely rather than experience GracefulDegradation.

Brittleness is different than rigidity. True rigidity, at least in materials, actually requires a small degree of flexibility to maintain the integrity of the material under stress.

Perhaps this page can become a documentation of the AnalogyMining? of physical brittleness and rigidity.

There are also some peripheral ideas here that beg for exploring. (I hope I can pin them down enough for others know what I'm after.) For example:

[I hope folks don't mind this kind of ThinkingOutLoud on Wiki - please let me know if you do (politely of course, please :-)]

-- JeffMantei 2000-12-04

It may be better sometimes for a system to fail completely. At least then you know something is wrong. --AndyPierce

Depends on the failure mode. If it shatters into a million pieces (analogy: writes random blocks all over your disk), it was no use at all. If it just dents a bit, you can probably hammer it out. --DanBarlow

The question is "how much damage does it do when it breaks?" If it corrupts valuable production data, it's bad. If the failure is visible to the user, but no data is corrupted and an easy workaround is available, then it's not as much of a problem.


Perhaps this is related to how many different people/organizations you have to deal with, and how detail-oriented they can be expected to be. If you're designing hardware specifications, you can be more brittle, because your audience is a bunch of engineers who know how to read a spec doc. If you're designing a macro language that you want every office employee in the world to learn, you might want to allow more flexibility.


A big issue with inappropriate generalization is that the system is flexible in some ways, but brittle in others.

In other words, given that a certain set of "flex points" are built into the software, changes that can be served by flexing at that point can be met by minor changes to the program, or even just changes to the control data. But "unexpected" types of changes cost lots of time and money to implement -- they violate the abstract model the software implements or require changes at "inflexible" points.

Highly data driven programs (including many hard-and-soft-layers scripted programs) illustrate this well: If your change fits within the program's "model," the change will be trivial to implement -- typically requiring only a small change to the control data (or script). But once you step outside the model, you hit real change resistance and high costs. -- JeffGrigg


See also: WorseIsBetter, AlternateHardAndSoftLayers


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