• Course: TDD for Embedded C/C++
  • Date entered: 2025-08-25 00:58:37 UTC
  • Course rating: Excellent
  • Most useful learnings: How to actually apply the mindset change. Being self-taught I find myself locked down to "my way" and extremely hard to pivot. A course like this is exactly what I need to understand that there are other ways to go about coding.
  • Concepts v exercises: Good balance
  • Presentation v discussion: Good balance
  • Course improvements: While this was a general TDD course, giving a 4th day on unit testing on different platforms (SIL/PIL/QEMU/Renode (etc)) all leading to HIL testing. This obviously would expand the general cost, buy in etc from customers (like me) and become more about unit testing methodologies than TDD generally. Though it could always be a 1-2 hour post-course video that we gain access to etc. This is possibly entirely outside of the scope of the system, but I think its the final piece for a lot of people for how unit testing propergates through the system more than just SIL testing.
  • Exercise rating: Excellent
  • Exercise improvements: Generally it was just a lot of information that was really well presented and I think James did what he could to show us as much as possible within such a short period. If felt long, but turned out short! I don't think they should be improved much more, perhaps a few more discussions on mocking hardware and how it would translate to the actual hardware. Perhaps a temperature sensor example as well, something like a normal I2C sensor etc.
  • Instructor comments: Really good work, great guy and great execution. Couldn't imagine how he or the material could present better. Great passion for TDD and it really shows in how he explains stuff and his general teachings.
  • Better prepared: Much better
  • Start tomorrow: Currently exploring toolchains that we use and how best to bring in unit testing frameworks into them. Ideally with the long term goal of being able to develop SIL on the native machine and have a permanent HIL testing suite in the corner of the office. We are currently investigating how these transitions occur with the goal to bring up TDD off the back of this. This is all based on Zephyr RTOS's testing suite.
  • Challenges to applying: Learning curve. Working out what can be tested and what cannot. Blinking a LED or displaying on an LCD cannot be since it only has visual feedback, though everything functionally in the lead up to it in logic can be. Additionally discovering if things like setting up our BLE comms can be tested, Nordic supplies us with tools to do this, but huge learning curve for our IoT products.
  • Other comments: Whether this was remote or in person, this was really well done and the result would be the same. I was impressed with the delivery, the tools, the general support from James jumping between rooms when we were working through projects and developing with different people each time.
  • Legacy code workshop: No
  • Recommend to others: Yes
  • Quote permission: Yes