Nat Pryce considers that we cannot write the perfect code because it is never fully prepared for the coming change, so he suggests embracing impermanence & continual imperfection.
Michael Stal discusses system architecture quality, how to avoid architectural erosion, how to deal with refactoring, and design principles for architecture evolution.
Jason Gorman presents how developers can learn TDD to the point of transforming the knowledge acquired into habits by exercising a number of practices followed by peer evaluation.
Ralph Johnson discusses principles, practices and tools relating to software development starting from already existing code which needs refactoring, maintenance, and sometimes architectural change.
Joshua Kerievsky demos Parallel Change, a way of refactoring meant to reduce time spent in red when code does not compile and tests do not pass. He also talks about Narrowed Change and takes questions
Dan North discusses an example of rearchitecting an application without rewriting it from scratch, and explains general strategies for a holistic rearchitecture.
Martin Fowler & panelists explore the myth that agile methods mean an absence of design. Design still happens in agile projects, but it shifts from an up-front phase to a continual evolution.
Bob Martin presents the first of his five principles of object-oriented design, which aim to address a fundamental problem - the management of dependencies between classes.