TDD for Embedded C
2017-02-13 22:07:27 UTC
Most useful learnings:
The practice of coupling production-code development with writing test-code that exercises said production-code. In hindsight, it seems like this should be a fundamental part of programming, taught from the very beginning.
Concepts v exercises:
Presentation v discussion:
If you could find a way to spend less time battling people who are resistant to the concepts of TDD. It felt like a lot of time was spent in fruitless debates where attendees just wanted to keep doing things their way. I understand that this isn't your fault, and the fact that this is my only complaint is really a testament to how good the course was.
The exercises were good. Perhaps let the attendees know that they are free to implement an struct where convenient, BEFORE starting an exercise where one will be used. Engineers hate doing irrational things, and it is disrupting/frustrating when we find ourselves creating separate variables instead of passing around a nice little struct, only to later discover that a struct is permissible.
James' mastery of software engineering is admirable, to say the least. It inspires one to open their mind and trust what he is teaching. If you have a doubt, or an approach you think is better, he will invariably have the perfect anecdote to highlight where you went wrong. He keeps the course on schedule and seems to care a lot about what he is teaching.
Bring it on!
Yes. The course did an excellent job of highlighting the problem (bugs, difficult-to-manage code, poor test-coverage), detailing the solution (TDD), and walking the attendee through every part needed to start implementing tests independently.
Challenges to applying:
Setting up the development tools to work with CppUTest can be a massive headache. At the time of writing this, I still don't have a functioning environment for building tests on my machine.
The usage of James' frankly-awesome "Cyber Dojo" website makes it incredibly easy to start writing test-cases, compiling, and running them. It is a brilliant educational tool that strips away a lot of the "noise" that would otherwise obscure the lesson in a typical development environment.
Legacy code workshop:
Recommend to others: