Episode 155: Johannes Link & Lasse Koskela on TDD

Topics covered
Popular Clips
Episode Highlights
TDD Cycle
Test-Driven Development (TDD) is a methodology that emphasizes writing tests before code, allowing the design to evolve through the testing process. explains that TDD involves a cycle of writing a test, coding, and then refactoring, which helps in creating a natural rhythm for good object design 1. He notes that while TDD can guide design, it doesn't inherently teach good object-oriented design skills. shares his personal experience, stating, "It definitely feels awkward to work without tests," highlighting his commitment to TDD even in challenging environments 2.
Practical TDD
In practice, TDD can be applied across various programming environments, though some, like C, present unique challenges. recounts experiences where developers used shell scripts for refactoring in environments lacking modern IDEs, demonstrating TDD's adaptability 3. He describes the impact of longer feedback cycles in compiled languages, which can alter the TDD process, requiring developers to adapt their workflow. Despite these challenges, Koskela asserts, "I haven't seen an environment where I wouldn't consider TDD being beneficial," emphasizing its universal applicability 4.
Team Impact
TDD influences team dynamics by potentially increasing productivity and fostering a safety net through comprehensive testing. observes that teams adopting TDD often become faster, though he acknowledges that other factors like team size and codebase growth also play roles 5. He stresses the importance of maintaining test code quality, suggesting that principles of good design apply equally to test and production code. Koskela reflects on his journey with TDD, noting, "Nowadays it feels weird if I don't have the test covering my back," illustrating the confidence TDD instills in developers 6.
Related Episodes


SE-Radio Episode 283: Alexander Tarlinder on Developer Testing
Answers 383 questions

Episode 167: The History of JUnit and the Future of Testing with Kent Beck
Answers 383 questions

Episode 6: Model-Driven Software Development Pt. 2
Answers 383 questions

Episode 86: Interview Dave Thomas
Answers 383 questions

Episode 26: Interview Jutta Eckstein
Answers 383 questions

Episode 101: Andreas Zeller on Debugging
Answers 383 questions

Episode 224: Sven Johann and Eberhard Wolff on Technical Debt
Answers 383 questions
Episode 103: 10 years of Agile Experiences
Answers 383 questions

Episode 119: DSLs in Practice with JP Tolvanen
Answers 383 questions

Episode 180: Leading Agile Developers with Jurgen Appelo
Answers 383 questions

366: Test Automation
Answers 383 questions

Episode 17: Feedback and Roadmap
Answers 383 questions

Episode 31: Agile Documentation
Answers 383 questions

Episode 2: Dependencies
Answers 383 questions

Episode 133: Continuous Integration with Chris Read
Answers 383 questions














