Course code: MEDT-1
  • Years with company: 18
  • Years programming: 40
  • Primary programming language: C
  • Other programming languages: C++, Ada 95 (!), Assembly (rare)
  • Unit test harnesses: Home-grown (my own)
  • Something else: I have been developing on embedded systems & protocols nearly my entire career. I've been so focused on work the last 10+ years and been surprised by Git, DevOps, and Rust, e.g. I have some catching up to do - including with test frameworks and TDD.
  • Test practice now: I use debug trace statements to follow the execution path and, when needed, log variable values. I use a tool to send messages to exercise the paths/features I'm interested in. Such testing is not readily repeatable.
  • Target system: ARM M3/M4 MCUs controlling some discretes & peripherals (Bluetooth, USB, I2C, SPI). Soft real-time.
  • Dev tools: Keil MDK, Segger System View, VS Code, Coverity static analysis, MS TFS, custom tools.
  • Build time: 31-60 seconds
  • Coding standard: We use an edited version of MISRA C. We need to adopt the updated MISRA C now.
  • Function too long: a) When the cyclomatic complexity is over about 50. When I have to scroll the screen more than 3x.
  • Code reviews: Independently performed by one or two individuals, usually by diffing versions.
  • Code time: 55
  • Test time: 20
  • Debug time: 25
  • Favorite thing about dev: The creativity, learning something new, the challenge of doing it well. Documenting/specifying it.
  • Least favorite thing about dev: Getting into something over my head.
  • Tdd knowledge: Just the basics. I used to think it wouldn't work for embedded systems.
  • Why are you attending: I think TDD is a good way to combine test with development. I like that it's a process, not a tool.