Accidental (or incidental) complexity is complexity that arises in computer programs or their development process which is non-essential to the problem to be solved. While essential complexity is inherent and unavoidable, accidental complexity is caused by the approach chosen to solve the problem.
While sometimes accidental complexity can be due to mistakes such as ineffective planning, or low priority placed on a project, some accidental complexity always occurs as the side effect of solving any problem. For example, the complexity caused by out of memory errors is an accidental complexity to most programs that occurs because one decided to use a computer to solve the problem.
While accidental complexity is to be minimized in any good architecture, design, and implementation, excessive accidental complexity is an example of an anti-pattern.
Famous quotes containing the words accidental and/or complexity:
“The war shook down the Tsardom, an unspeakable abomination, and made an end of the new German Empire and the old Apostolic Austrian one. It ... gave votes and seats in Parliament to women.... But if society can be reformed only by the accidental results of horrible catastrophes ... what hope is there for mankind in them? The war was a horror and everybody is the worse for it.”
—George Bernard Shaw (18561950)
“It is not only their own need to mother that takes some women by surprise; there is also the shock of discovering the complexity of alternative child-care arrangements that have been made to sound so simple. Those for whom the intended solution is equal parenting have found that some parents are more equal than others.”
—Elaine Heffner (20th century)