Course code: WEB-33
  • Years with company: 6
  • Years programming: 21
  • Primary programming language: C++
  • Other programming languages: C, C#, PowerShell, Python
  • Unit test harnesses: Unity (ThrowTheSwitch), MSTest/VSTest
  • Something else: MSc in Computer Science. Originally more of a C# developer (still actively developing with for non-embedded), dived into embedded software engineer for space systems 14 years ago for a CubeSat project.
  • Test practice now: Unit Testing, low-level functionalities on embedded hardware (manual runs) and high-level functionalities on x86 HAL (partial emulation) in CI Integration testing with test procedures remotely commanding embedded software and verifying result of execution. Partial integration testing with software running on x86 emulation.
  • Target system: Spacecraft subsystems, either FRAM-based MSP430 (12Mhz, ~40KB firmware size, ~12KB data memory), or Cortex-M3 (100Mhz, ~64KB firmware size, 64KB RAM).
  • Dev tools: Visual Studio with VisualGDB extension GCC toolchains (x86, MSP430, ARM) and VC++ (x86)
  • Build time: 11-30 seconds
  • Coding standard: C++17 with strict subset (no dynamic allocation / no heap) -Wall -Wextra cppcheck static code analysis Short and clear code, "every line must be there for a good reason".
  • Function too long: Contains code that can be shared with others or duplicates existing. Contains more than one "functionality". Lost track of what it is exactly doing before reaching end.
  • Code reviews: Through pull requests for major features, not always for smaller. Lot of room for improvements.
  • Code time: 50
  • Test time: 20
  • Debug time: 30
  • Favorite thing about dev: Creating something, innovating. Finding clever solution to challenges.
  • Least favorite thing about dev: Uncertainty of what is needed, changing requirements. Dependency on other parts not always in your control (libraries, hardware, etc.)
  • Tdd knowledge: Principles and theory from studies, lack practice.
  • Why are you attending: Practical TDD deep dive, how to improve our standards and test skills. Both as a developer point of view (what should I do correctly) but team lead too (how should I coach others, what should I require from team).