Almost all activities in contemporary software projects try to predict the future — analyzing, architecting, programming, testing, budgeting, and scheduling. Since nobody can yet reliably predict the future, those activities cannot possibly work as well as desired.
Unknowns: Unknowns lie at the root of all software problems, otherwise someone could just fix them. Unknowns make bugs and enhancements inevitable.
Bride-of-Agile: Sponsoring-organization obligations to projects concern politics and resources. Bride-of-Agile practices include working through continual change, fostering diversity and debate, and dealing with problem stakeholders.
Determinism versus Emergence: Determinism enables productive use of existing tools and practices. Emergence provides opportunities to write new programs that will benefit others. Recent skirmishes between Waterfall and Agile extend the 2500-year-long battle within philosophy and science over causality and free will.
Polish versus Rot: The Sunrise problem sheds light on the concept of good enough for now. Quality improves through polish — analysis, programming, and testing. Quality worsens through rot — changing expectations, usages, and technologies. Technical debt embodies the economic tradeoffs of deferring polish and rot.
Coping with Surprise: Subjective search underlies Agile and Bride-of-Agile practices, helping everyone to be less wrong and to cope with surprises. Plans are essential but, alas, even the best laid plans go oft astray.