30: Eventually Lightning Strikes (Repeat)

Embedded.fm · 30 Nov 2016 · 57m

What this episode covers

James Grenning, author of 'Test-Driven Development for Embedded C' and founder of Renaissance Software, explains how Test-Driven Development (TDD) improves embedded software engineering by enabling developers to write portable, modular code before hardware is available. He argues that TDD forces early design decisions, such as modularity and interface segregation, which reduces integration bugs and allows engineers to test logic on a PC rather than waiting for target hardware. Grenning also discusses his teaching methodology, emphasizing that engineers should experience TDD themselves to understand its value in reducing late-stage debugging and managing legacy code.

Mentioned

Companies
Renaissance Software
Products
Test-Driven Development for Embedded C, SparkFun TinkerKit, Untapped
Also
Extreme Programming, Scrum, Kent Beck, Ron Jeffries, Bob Martin, SOLID, Legacy Code Challenge

Other shows on the same ground, closest first.

  • The Pragmatic Embedded Podcast · 36m

    Development is Better when it's Test-Driven

    Jeff Gable, an embedded software consultant, explains his practice of Test-Driven Development (TDD) to host Luca Ingianni, arguing that writing failing unit tests before application code forces good architecture and high coverage. Gable details how this discipline decouples embedded application logic from hardware-specific drivers, allowing tests to run on the host machine for rapid feedback rather than slow target flashing. He addresses the common industry resistance to TDD in embedded systems, citing the initial learning curve and the need for coaching, while recommending resources like the 'Throw the Switch' video courses and tools such as Unity, CMock, and Ceedling. The conversation concludes by framing TDD as an artistic craft of storytelling through code, emphasizing that the practice builds confidence and prevents regressions in production-quality software.

  • The Pragmatic Embedded Podcast · 1h 01m

    James Grenning on TDD

    James Grenning, author of 'Test-Driven Development for Embedded C' and creator of a new self-paced online course, discusses the evolution and practical application of TDD in embedded systems. He explains the ZOMBIE acronym for deriving test cases, the importance of 'tracer bullets' to address project risks early, and why mocking should be used sparingly to avoid brittle tests. Grenning also reflects on the shift from Extreme Programming to Scrum, arguing that the latter often alienates engineers by ignoring core technical practices.

  • The Pragmatic Embedded Podcast · 36m

    Writing Firmware without Hardware (featuring Matt Chernosky)

    Matt Chernosky, author of 'A Field Manual for Ceedling', explains how to write and test embedded C firmware on a host PC using Ceedling, Unity, and CMock to enable rapid Test-Driven Development (TDD). He argues that removing hardware dependencies allows for instant feedback loops, better architecture through hardware abstraction layers, and easier continuous integration. The discussion covers strategies for introducing TDD to legacy codebases, the role of automated unit tests in medical device compliance, and the importance of testing high-risk, changing code rather than aiming for 100% coverage.

  • The Pragmatic Embedded Podcast · 45m

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

    Jeff Gable and Luca Ingianni discuss the practical challenges of adopting Test-Driven Development (TDD) in embedded software, specifically addressing the difficulty of starting with a blank screen. They outline a process that begins with decomposing systems into modules, sketching test ideas as bullet points, and writing test outlines in plain English before implementing code. The hosts highlight how LLMs can help overcome the fear of the empty screen but create new traps by generating overwhelming or nonsensical test suites, requiring developers to review test code more thoroughly than production code to ensure it accurately reflects the desired module interface and behavior.

  • The Pragmatic Embedded Podcast · 32m

    The Matthew Test with Matthew Eshleman - Part 2

    Matthew Eshleman, founder of Cove Mountain Software, joins Jeff Gable and Luca Engineer to discuss Part 2 of his 'Matthew Test,' a framework for better embedded software. They cover the balance between upfront design and agile development, the importance of Test-Driven Development (TDD) in C/C++, and the value of investing in high-quality engineering tools. The conversation also addresses hiring practices, realistic scheduling under business constraints, peer code reviews, and the role of dedicated QA teams in preventing bugs.

The summary, chapters and topics are generated from the episode’s audio by this directory, not written by Embedded.fm. The episode itself belongs to its publisher.