In his latest blog post, Michael Feathers argued that object oriented programming languages offer some built-in features that facilitate testing and are therefore more recovery friendly than functional languages. Proponents of functional languages expressed strong disagreement with this statement, which provoked a very passionate debate in the blog community.
Alberto Savoia has written a series of four articles describing "characterization testing" - the process of writing unit tests to understand and work with legacy code.
One can't always start from scratch with Agile - sometimes it's used to salvage troubled projects, but Emanuel Gaillot notes that "What's tough about XP is, the more you need it to get your project in a better shape, the harder it is to start doing it." Can a team really afford to switch in the middle of a troubled project? Gaillot recently shared his approach to gradual XP implementation.
Ian Roughley shows how to use logging seams to easily create unobtrusive unit tests around legacy classes, without needing to edit class logic as well as avoiding behavior changes.