TDD for Embedded C++
2018-11-29 21:20:44 UTC
Most useful learnings:
I've covered most of the material before in your book and other places. I can't think of a single specific thing I learned but I liked getting an overview of the process, going through the exercises and being able to ask you some questions.
Concepts v exercises:
Presentation v discussion:
The online presentation poses some challenges. It seems tricky for people to know when/how to ask questions and make comments and seems hard for you to not get feedback from the crowd. I'm not sure what to do about this, though.
Maybe if the coding platform had support for pair programming, remote participants could work together. I thought about trying to do a slack code pairing with the person I was assigned to pair with but I was afraid screen sharing the editor in a web browser wouldn't work well enough. It's been hit or miss when I've tried that kind of thing in the past. But I think it would work if the tool provided a shared editor (not via video sharing) and we opened a separate slack call for chatting.
The exercises were good but I might have liked to work through an example of some "legacy" code, maybe something with some system calls in it to see how fixing up that kind of code would work. I guess I'm thinking of something similar to looking at our code but using some made up code so we can do it in the online version.
You did a great job showing how to do TDD and explaining why it's a better way to work. I've done various forms of TDD over the years but it was useful to see it walked through, step-by-step in C++. I hadn't thought about using the compiler the way you do to check that each change actually compiles before going on to the next one.
Yes, we're already doing it.
Challenges to applying:
My team is onboard with this kind of approach and we try to follow it. The place where doing this kind of TDD gets complicated for us is when we have dependent modules that have to be built separately. So you get some tests in one module to work, but then you need to go over into a different module and work on the tests there. It would be nice to improve our TDD infrastructure so it could build multiple libraries that depend on each other in the same TDD loop so you don't have to work on the tests in one, then restart the build system in TDD mode for the other library.
Thanks, that was very helpful.
Legacy code workshop:
Recommend to others: