The Matthew Test with Matthew Eshleman - Part 1

The Pragmatic Embedded Podcast · 27 Jul 2022 · 38m

What this episode covers

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.

Most relevant to

established companies

Topics

Mentioned

Companies
Toshiba, Airbus
Tools
Git, Gitflow, J-Flash, Qt Creator, Jenkins, GitHub Actions, Bitbucket Pipelines, FogBugz, Jira
Also
Matthew Test, Joel Test, Joel Spolsky

Other shows on the same ground, closest first.

  • Embedded.fm · 1h 03m

    53: Being a Grownup Engineer

    Jack Ganssle, author of 'The Art of Designing Embedded Systems' and long-time embedded industry expert, argues that firmware engineers must adopt disciplined engineering practices rather than relying on 'heroic' hacking. He discusses the necessity of requirements gathering, design reviews, code inspections, and rigorous testing to ensure safety and reliability, citing the Toyota unintended acceleration case as a failure of process. Ganssle advocates for measuring metrics like bug rates and lines of code to benchmark performance, and critiques the misuse of Linux in deeply embedded systems and the confusion between the maker movement and professional engineering.

  • Embedded.fm · 1h 05m

    53: Being a Grownup Engineer (Repeat)

    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.

  • Embedded.fm · 53m

    16: Democracy Is the Worst Form of Government

    Curtis Cole, a veteran embedded systems engineer and former VP of Engineering at Leapfrog, argues that Agile methodologies like Scrum and Test-Driven Development (TDD) are effective for embedded software when adapted to hardware constraints. He explains how user stories, sprints, and story points allow teams to manage unknown requirements and deliver incremental, usable prototypes without compromising the final product's stability. Cole emphasizes that Agile is merely a process tool; success depends on hiring skilled engineers who prioritize quality, testing, and modular design over mere speed.

  • Embedded.fm · 1h 19m

    211: 4 weeks, 3 days

    Dennis Jackson, Director of Firmware at Element Science, discusses how software engineers can transition into embedded systems by building personal projects using low-cost hardware like STM32 Discovery boards. He advises new hires to read James Grenning’s Test Driven Development in Embedded C and Elecia White’s Making Embedded Systems, emphasizing that understanding build systems like Make and continuous integration is as critical as writing drivers. Jackson argues that the distinction between firmware and software is fading, urging engineers to apply general software best practices like unit testing and static analysis to embedded constraints. He shares his interview philosophy, which prioritizes problem-solving and code quality over syntax, and highlights the importance of establishing a reproducible build environment to ensure reliable production releases.

  • Embedded.fm · 57m

    109: Resurrection of Extreme Programming (Repeat)

    James Grenning, founder of Wingman Software and author of 'TDD for Embedded C', discusses the resurgence of Extreme Programming and Test-Driven Development (TDD) for embedded engineers. He explains how TDD prevents bugs and improves code quality, contrasting it with the micromanagement often associated with modern Scrum. Grenning also details his methods for teaching TDD, including the use of CyberDojo for remote training and 'Training from the Back of the Room' techniques to engage students.

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