Few forces limit your ability to deliver the way that legacy code does. Even if you do everything else well -- understand your market, design your product, communicate with your colleagues, test-drive every feature -- if you have to work with legacy code, then you will eventually have to pay back some random amount of time by both working around some parts of it and rescuing others. Even the decision when to work around it and when to rescue it will distract you from delivering new features. You need to practise working with legacy code, and what better way to practise than at a Code Retreat? (http://www.coderetreat.com)
At Code Retreat, you focus on the craft of software development by working on a very simple exercise with a wide variety of people and in a wide variety of ways. You practise test-driven development, focus on the Four Elements of Simple Design (http://link.jbrains.ca/simple-design), then work with an ever-changing set of challenge constraints (http://link.jbrains.ca/ZiQrPn).
Legacy Code Retreat runs a little differently. Yes, you work in pairs, you work in 45-minute sessions, and you (mostly) throw away your work when you're done, so you get to focus on the techniques that will help you most. These techniques help you fix the problems that usually stand between you and practising test-driven development in and around legacy code. We give you a code base to start from (in 14 programming languages so far) and we guide you with the techniques that have helped us most in our work. Most importantly, you spend most of your time practising and talking about what you've learned. Thousands of programmers have enjoyed Code Retreat around the world, and now even hundreds of programmers have told us that they enjoy Legacy Code Retreat. Once you've attended one, you'll never practise the same way again.