Agile techniques focus on small iterative steps in the development cycle, each step adding functionality to an initially simple code base. Yet, real-life projects must often operate in the context of vast amounts of legacy artifacts, including data. A recent article looks at working with legacy data in the context of agile development methods.
If you open a typical agile software development tutorial, you will often see a series of short steps, each step adding functionality to an initially very simple program. While such Zen-like approach can be calming to one's mind, many real-world projects must contend with a messy amalgamation of legacy artifacts, including legacy data.
In a recent java.net article, John Ferguson Smart discusses various strategies of dealing with legacy code in an agile process:
[...] In the real world, software development projects are rarely done in a vacuum. Your company or client will inevitably [...] have an existing IT system in place. It may be a CICS mainframe application still maintained at great expense by some large IT corporation. It may be a fully fledged ERP solution, or an in-house client-server application built with whatever technology happened to be the flavor of the month five or ten years ago. It may just be an Access database application designed by a canny user. But it will exist.
What are your strategies of dealing with legacy code?