In the end, you get rated on your software's ability to meet your customers' goals. All the Agile practices wrap around one core, inner loop: writing the software. In this hands-on session, we explore that inner loop. How do you write fluid software? How do you test first and design last? How do you get a good design to emerge, every time, even when your first ideas are guaranteed to be wrong? We will explore the engine that makes Agile go: TDD and Refactoring. You will do these in both basic and advanced cases. And we'll do it in the real world, indebted code and all.