Essence & Accident
On Out of the Tar Pit
Some thoughts on accidental vs. essential complexity triggered while reading Out of the Tar Pit by Peter Marks and Ben Moseley
Quoting Brooks they separate Essential from Accidental complexity:
- “Essential complexity is inherent in, and the essence of, the problem (as seen by the users)”
- “Accidental complexity is all the rest - complexity with which the development team would not have to deal in the ideal world (eg. complexity arising from performance issues and from suboptimal language and infrastructure)”
This is actually not Brooks’ definition of accident and essence, and it seems I can trace back this misunderstanding to another definition by N.Ford.
Brooks actually talks about the essential complexity of software development, irrespective of the problem or usage software is put to use:
The essence of a software entity is a construct of interlocking concepts [..] This essence is abstract, in that the conceptual constructs is the same under many different representations.
The complexity of software is an essential property, not an accidental one
Brooks, The MMM, p.182 sq.
In essence (ha!ha!) what Brooks says is: “No matter how sophisticated your tools may be, developing software is complex”. It uses this uses this assertion to undermine various efforts to reduce complexity of software through languages, patterns, tools (eg. software).
Looks like another form of the irreflexive nature of most formalisms: No computational formalism is powerful enough to talk about itself.
Then they derive a methodology from this initial requirement that we need to deal only with the essential complexity, methodology which goes through another form of formal declarative requirement language meant to ignore accidental issues of how the system is about to perform anything
The problem is that:
- reality bites you very quickly
- the solution quickly becomes part of the problem
Any technical device, and software makes no exception to it, changes its users and the way they interact with the “world”. They create relations between various things, various beings that were previously unrelated, while at the same time sending other beings into oblivion.
This is at the heart of Activity Theory, among many others (see also Habermas, Simondon, more recently Stéphane Vial and of course Latour).
“It is not the business of the user to know what they want” - S.Jobs. Users don’t know what they want until they see it, and when they see it they want something else or different
Software is a by-product of technical acts, the result of various acts and transformations forming a network extending over space and time. In Latour’s term, they are leftovers from the passing of [TEC] beings within some group of people, a specific folding of materials and immaterials other beings that, when completed and put to use, produce some efficicent effect.
Essential/accidental dichotomy is another avatar of [DC], double-click, the evil spirit of modernity that aims at suppressing all mediations to enforce its binary view of the world (somewhat ironical when dealing with software!): Users are separated from developers, usage from development, ideal world of perfect function from real world of bits and bytes.
But for anything to happen, a mediation must occur, things need to be moved, put in correspondance, changed, carved, designed, transformed, and not only inanimate and “material” things but also people, rules, ideas, laws, beliefs…
Complexity is always the result of some history, some web of interaction between constraints, desires, organizations, projects, physical laws. If it must be reduced it is not because of some idealistic image of what could be done but to meet the intrisic truth of the technicalities: fitness, quality, elegance, simplicity and a form of obviousness and obliviousness. Good technical objects are those which make themselves invisible after being tamed and accurately and efficiently mediate some other course of actions.
Remember: “There is no silver bullet”, “there is no free lunch”. We must take care of the technical detours lest they produce some monster behind our back.
Thinking in terms essence/accident is just a way of rejecting what is properly technical, with its own risks and rewards, in the name of the value of simplicity.
To take another perspective on it, it is just as if all situations were amenable to the Known/Knowable half of the Cynefin quadrant, the ordered part of existence, ignoring exerything Complex or Chaotic.
Latour talks (in AIME) about Habit [HAB] as “the mode of existence of essence”: Essence is what is left when we forget how we got there, when this path lies just beneath the surface of our consciousness in order to not encumber it but ready to be brought back at first need (eg. when circumstances change possibly conflicting with habits).
This implies that there is no essence, there is no fundamental truth from which everything derives, there is no transcending that would not be explained or explainable by some course of action, beyond our habits