As I mentor two teams through the Young ICT Explorers competition I’ve had the significance of dealing with hardware driven home to me anew.
Teaching kids about programming is something I’m passionate about: But coding by itself tends to give the sense that our World is cleaner and more ordered than it really is. Toss some hardware into the mix and you get a real sense of the frustrations of dealing with a messy universe.
Over the last few weeks my teams have had to overcome a variety of issues including:
- Firmware updates on micro-controllers when the manufacturers instructions are (a) in barely intelligible English and (b) plain wrong;
- Finding out that when you get power and ground cables the wrong way around on cheap components they make a burning smell and stop working;
- Spending frustrating hours trying to find a fault in your code, only to realise in the end that the sensor you’re trying to read from never worked and then having to wait 10 days for a replacement.
- Finding that there’s not an inexhaustible pit of money (otherwise known as a budget) for new components and so sometimes clever workarounds are required.
- Discovering that not only can you not get a component to work after many hours of trying, but that it turns out no one else in the world seems to have got it working either (a lesson with a sub-lesson in dodgy retailing and consumer protection laws).
While the frustrations are palpable, the sense of achievement in overcoming them is commensurately rewarding.
Coding by itself has its own frustrations, but when the kids have a problem in a program it’s almost invariably that they have made a syntax mistake or something like that. A bit of detailed proofing will almost always find the bug. However, stick the hardware into the mix and there are numerous variables outside their immediate control from the sort of basic issues outlined above through to vagaries like the ultrasonic sensor giving strange readings when it bounces off a curtain.
Dealing with these things in an everyday classroom amongst a large group of kids would, to me, be unimaginable. But with a couple of enthusiastic small groups there are enormously beneficial lessons in coding, engineering, patience and resilience to learn. You really need a goal to get through the frustration to the learning, though, and that’s where project-based activities like Young ICT Explorers are really invaluable in providing a context.
While I’m looking forward to my teams finishing their projects and returning to the nice ordered world of pure coding, I know I’ll continue to look for opportunities to give the kids nice messy, real-world challenges like these in the future.