There is no one "root of all evil" in software development. Design is hard in many ways. People tend to underestimate the intellectual and practical difficulties involved in building a significant system involving software. It is not and will not be reduced to a simple mechanical "assembly line" process. Creativity, engineering principles, and evolutionary change are needed to create a satisfactory large system.
Bjarne StroustrupC makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off.
Bjarne StroustrupDestructors for virtual base classes are executed in the reverse order of their appearance in a depth-first left-to-right traversal of the directed acyclic graph of base classes.
Bjarne Stroustrup