This post is a recount of my experiance after recently securing an opportunity to attend James Grenning’s training course Test-Driven Development for Embedded C and follow up workshop on Legacy Code.

Course

The training consisted of a 3 day course on Test Driven Development with an acute focus on its application to the world of Embedded C and a balanced mix of presentation, interative discussion and hands on, practical exercises. A range of concepts were covered, starting from the first contact fundementals of unit testing and quickly ramped up to more advanced spy & mocking techniques, refactoring and agile system design.

All exercises were partaken with one or more fellow attendees. This was not only a valuable opportunity to interact and bond with colleuges from different parts of the orginaisation but provded a fresh and relaxed atmosphere for antendees to experiment with pair programming while at the same time gaining practical experience in appying the concepts presented throughtout the course.

Workshop

The workshop was based on the novel concept of the instructor guiding attendees as they prepared a peice of an existing, real world legacy code base with which they interacted with on a daily basis as part of their jobs and reigned it in under a test harness; creating an environment in which attendees can apply the concepts, methods and techniques acquired during the preceeding few days of training to their everyday work right away.

The realities of this workshop idea was everybit as challenging and audacious as it sounds. However I was very suprised and pleased to discover that the instructor and his assistant possessed the abundent levels of experience and expertise necessery to make such an exercise a resounding success despite examining three completely seperate legacy code bases during the limited time period of the workshop.

Book

James Grenning has also taken the time to share his knowledge an insights into Test Driven Development and Embedded C in the form of a book also entitled Test-Driven Development for Embedded C. I thought it was a good read, and I say that having read over 50 technical books in the past 2 years. I would definitly regard it as essential reading for anyone working with embedded systems.

Overall I am very pleased with the course. I went in with the vague goal of “learning something”. I came away with firm grasp of Test Driven Development, its benefits and associated methodologies and more importantly with a clear view of how I can (and will) apply these techniques to my technical projects, both at home and in the office.