Published Sep 3, 2019

Episode 155: Johannes Link & Lasse Koskela on TDD

Johannes Link engages with Lasse Koskela in an insightful exploration of Test-Driven Development (TDD) and Behavior-Driven Development (BDD), delving into their origins, differences, and their complementary roles in software development. The episode covers practical aspects of mock object techniques and the transformative impact of TDD on team dynamics and developer psychology.
Episode Highlights
Software Engineering Radio - the podcast for professional software developers logo

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