notes blog about

Difficulties in software engineering:

The hard parts of building software are

not the labor of representing it and testing the fidelity of the representation. We still make syntax errors but they are fuzz compared to the conceptual errors in most systems.

If this is true; building software will be always hard. There is inherently no silver bullet.

Inherent properties of the irreducible essence of modern software systems:

Complexity

Conformity

Einstein repeatedly argued that there must be simplified explanations of nature, because God is not capricious or arbitrary. No such faith comforts the software engineer. Much of the complexity he must master is arbitrary, forced by the many human institutions and systems to which his interfaces must conform. These differ from interface to interface, and from time to time, not because of necessity but only because they were designed by different people, rather than by God.

Changeability

Invisibility

Past breakthroughs solved accidental difficulties


Source: Mythical Man-Month (1995), ch 16. No Silver Bullet—Essence and Accident in Software Engineering