53: Being a Grownup Engineer (Repeat)

Embedded.fm · 28 Sept 2016 · 1h 05m

What this episode covers

Jack Ganssle, author of 'The Art of Designing Embedded Systems' and 'The Embedded Systems Dictionary', argues that embedded software development has failed to adopt true engineering discipline, relying on 'heroics' rather than process. He cites the Toyota unintended acceleration case, where Michael Barr identified 11,000 global variables, as evidence of the catastrophic costs of poor software practices. Ganssle advocates for rigorous requirements gathering, static analysis tools like LDRA and Spark, and metrics-driven benchmarking to reduce debugging time and improve code quality. He contrasts this disciplined approach with the 'hacker' and 'maker' cultures, emphasizing that safety-critical systems require proven processes rather than ad-hoc coding.

Mentioned

Companies
Toyota, iRobot, ARM
Tools
LDRA
Also
Jack Ganssle, Michael Barr, Spark, Ada, Circuit Cellar, EDN, IEEE, Capers Jones, James Grenning, Joel Spolski, Steve Leapson

Other shows on the same ground, closest first.

  • The Pragmatic Embedded Podcast · 39m

    Christmas Special

    Hosts Jeff Gable and Luca share war stories from their careers in embedded systems, highlighting the pain of manual testing in helicopter avionics, the chaos of managing requirements with Word and Excel in Dropbox for medical devices, and the technical debt of massive #ifdef blocks in legacy machine tool software. They discuss the industry's slow adoption of modern software practices like version control and CI/CD, contrasting embedded development with web development standards. The episode concludes with book recommendations including 'The Phoenix Project' and 'Team Topologies', and reflections on the future of IoT security and agile adoption in hardware.

  • The Amp Hour · 1h 08m

    An Interview with Jack Ganssle (2nd)

    Jack Ganssle, author of the Embedded Muse, discusses the evolution of embedded firmware, highlighting the shift toward cloud-connected platforms and the acquisition of RTOS providers like FreeRTOS by Amazon and ExpressLogic by Microsoft. He critiques the current state of vendor-supplied software, praising Renesas' Synergy platform for providing fully tested, guaranteed software components, while noting the decline of legacy RTOSs like VxWorks. Ganssle emphasizes that firmware development requires rigorous design and quality processes, arguing that jumping into code without solid requirements leads to catastrophic failures, as seen in recent medical device and aviation incidents.

  • 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 · 38m

    The Matthew Test with Matthew Eshleman - Part 1

    Matthew Eshleman, a principal embedded software engineer and consultant formerly at Toshiba, joins Jeff Gable and Luca to discuss his 'Matthew Test,' a 15-step checklist for evaluating embedded software teams. Modeled after Joel Spolsky's Joel Test, the episode covers foundational practices such as using source control (specifically Git), automating build and release processes, and implementing continuous integration. Eshleman argues that unlike web development, embedded engineering requires 'reasonably complete specifications' and early risk management due to the high cost and long lifecycle of hardware changes.

  • The Pragmatic Embedded Podcast · 33m

    Technical Debt in Embedded Systems Development

    Jeff Gable and Luca engineer discuss technical debt in embedded systems, defining it as trading present velocity for future maintainability. They identify specific forms of debt, including poor hardware abstraction, untracked hardware revisions, and the lack of automated testing. The hosts argue that while prototyping may justify debt, safety-critical products require rigorous refactoring and visible tracking of these issues to avoid slowing down development teams.

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.