Writing clean code using test-driven development (TDD) involves: 1. Writing small, focused unit tests before writing the code to make them pass; 2. Iteratively writing just enough code to pass each test, then refactoring the code; 3. Following principles of clean code like using meaningful names, short functions that do one thing well, and formatting for readability. The presentation demonstrated converting Roman numerals to Arabic using TDD, highlighting benefits like producing readable, maintainable code with test coverage and living documentation.