The Pragmatic Embedded Podcast

TDD: The Hard Parts - Getting Started with Test-Driven Development

Episode Summary

We're back talking about Test-Driven Development, just 10 episodes after our last TDD discussion. This time, Jeff and Luca tackle the practical challenges that trip up developers trying to adopt TDD - especially that awkward moment staring at a blank screen wondering "what do I even type first?"

Episode Notes

We're back talking about Test-Driven Development, just 10 episodes after our last TDD discussion. This time, Jeff and Luca tackle the practical challenges that trip up developers trying to adopt TDD - especially that awkward moment staring at a blank screen wondering "what do I even type first?"

Drawing from Luca's experience training embedded developers, we explore why TDD feels so unnatural at first and how to actually get started. We break down the process: from sketching test ideas as bullet points, to writing test outlines in plain English, to finally implementing actual test code. Along the way, we discuss how LLMs change the game - both helping overcome the fear of the empty screen and creating new traps when they generate overwhelming amounts of test code. Whether you're coding by hand or working with AI assistants, the key is maintaining control through deliberate, incremental steps and keeping your focus on module interfaces and test quality over implementation details.

Key Topics

Notable Quotes

"TDD is really just a Jedi mind trick of thinking about your tasks in a different way that makes it easier for you to come to good answers." — Luca Ingianni

"TDD is not how you build the map. It's how you have confidence in a quality implementation and protection against future regressions." — Jeff Gable

"I've gotten into the habit of reviewing my test code more thoroughly than the actual production code when using LLMs. Because the test code really tells me the shape of the production code." — Luca Ingianni

Resources Mentioned