Each and every time, the situation is the same: a big, messy code-base, few (if any) tests and many production issues. It’s no accident that, when he joined what would be the first XP team, the first thing Kent Beck said was: “*Let’s scrap it!*”
Even with a world class team, these problems can be almost insurmountable. And we don’t usually start out with world class teams. Learning all the XP practices is hard enough without a Big Ball (of Mud) and Chain holding you back.
So maybe we *should* rebuild. But the Agile way: incrementally, iteratively, and with close involvement from the business.
Using examples from practice, I’ll show that:
* We can set up a clear, loosely coupled architecture **around** the existing system, so we can replace parts *while its running*
* We are then free to use all our modern practices for the new parts, and start Continuous Delivery from the first sprint
* We can closely involve the business to surface the actually needed functionality, and build up Living Documentation in the process
* We can get even an inexperienced team using and accepting practices such as TDD and ATDD quickly