We often use the metaphor of smell to describe issues with code which haven’t necessarily manifested, but could end up causing serious problems (“code smells”).
Architectural and habitability smells can help guide us during low-level debugging. The goal of this session is to give participants the tools they need to help refine their own and others’ sense of code smell further.
Parallels will be drawn between techniques for refining actual sense of smell and improving debugging techniques.
First 40 minutes - theoretical overview
The difficulties of low-level, real-time debugging, including different types of trace and their advantages and disadvantages
Testing - where it works, where it’s hard, and where it’s impossible
Habitability and how it relates to bugs
Overview of lots of different “code smells", all with real world, embedded examples
Next 40 minutes - mob programming practical
Fun, real-world problem with a custom threading implementation. There will be no libraries involved here - a complete (albeit small) scheduler / RTOS will be provided that isn’t quite working correctly.
The group will be split into “mob teams” of 4-5 people and set up next to a large monitor each (which I will provide) so they can "mob program” together in order to solve the problem. Mob programming is a relatively new Agile technique which we regularly use to solve difficult problems. Each person in the team takes in turns to “drive” at the keyboard.
There will be prizes for the winning team.