To keep code young and flexible for a long useful life, design has to
be reconsidered and revised with each new behavior added. Consequently,
refactoring is a step in the TDD cycle. Even with that emphasis, code
can deteriorate into the incomprehensible. Just saying refactor, does not
cause it to happen. It takes skill to identify code and design problems;
it takes skill to envision improvements; and it takes skill to transform
code while keeping it working the whole time. In this talk we'll explore
the three essential skills to keeping code young.