The central argument has been interpreted to mean that there will be no more easy answers to software engineering problems.
Table of contents |
2 To Quality 3 External links |
At the heart of the argument is the distinction between
accidental and essential complexity. Accidental complexity
is problems that we create on our own and can be fixed. For
example, the complexity of writing and optimizing assembly
code is accidental and can be eliminated by programming in Java.
Essential complexity is caused by the problem to be solved,
and nothing can remove it. If users want a program to do 30
different things, then those 30 things are essential and
the program must do those 30 different things.
The problems with software engineering, is that we have cleaned
up much of the intensional complexity, and the rest cannot
be changed.
Perhaps the one technology to make a most improvement was
high-level languages, such as Fortran and Java.Accidental versus essential complexity