Last week I volunteered as a mentor for the Code Club Cornwall: Mission to Mars Easter School. It’s a great project for teenagers interested in programming, electronics, and computer science.
Bert and Ernie, two Arduino-powered robots, offer the participants a chance to program self-driving ‘Mars Rovers’. Destined to auto-pilot around the surface of Mars. Functionality is developed using Agile methods and a series of stories. Starting from scratch, developing Bert and Ernie’s auto-pilot capabilities over 4 days.
Participants work in teams: mob-programming C++, creating breadboard circuits to replicate Bert and Ernie, using GIT*, managing a budget (paid per story), and developing on Rasberry Pis. It was great to see participants working together, learning and having fun. All in a very professional manner. A lot of progress was made, at a rewarding pace, over the 4 days.
My learning points:
- It’s a great way to learn to code and improve programming skills. A challenge for any level of programmer, beginner to advanced. Mob programming helps the team develop a solution and learn from each other. Bert and Ernie add tangibility, allowing participants to see their work in action.
- Not just programming, the course offers softer skills development/practice and simulates a professional working environment.
- Just do it! I’ve not programmed for 7 years, and not touched C++ for the best part of 13. As the lead mentor will attest, I was nervous. This soon faded as the tasks became more and more engrossing, and challenging. With a good level of competition between the teams. I’d forgotten how much fun programming can be.
- I’m overly dependant on IDEs, auto-saves, auto-completes, and development environments. It was interesting to use a basic editor, and we suffered a ‘classic’ IT moment when our Raspberry Pi crashed. 6 hours of work ‘lost’ because no one had saved (* yeah, we didn’t commit either)… Thankfully, recovery wasn’t too painful and we managed to assign blame on the lead mentor. As everyone in IT knows, if you can shift the blame it significantly ‘lessens’ the issues…
- A new way to conduct retrospectives! Brainstorming using the grid / 6 boxes shown below. I’ll pinch this for the team and our end of sprint retrospectives.
Next time I will:
- Focus less on the solution, and more on coaching the participants. It was hard not to get sucked into making the rover ‘perfect’. I forgot how much I missed programming and in some places over complicated things e.g. the rover needed to move forward 2m and I was driving the kids to make it programmable as a procedure that accepts a direction (forward/reverse) and a distance in MM. The objective isn’t a perfect rover, and a perfect rover shouldn’t be at the expense of the participants’ learning.
“There is nothing quite so useless as doing with great efficiency something that should not be done at all.” – Peter Drucker
- Risk an OO approach, and set it up from the start. Our C++ was very procedural. I will do my best to coach the participants in OO programming concepts next time. Creating motor, robot and other sensors / real world object classes, and some design up front to assist with this.
- I’ll brush up on my C++. Just the syntax, structure, and basic keywords would have helped. Thankfully the course lead was very patient.
Massive thanks to Bluefruit for the use of their office, and for Byran (course leader), Ben, Harvey and Tyler’s time. Harvey and Tyler are apprentices at Bluefruit who’d attended the easter school the year before! Thanks to Glen and Lyssa from headforwards. Please get in touch via Software Cornwall if you’d like to attend, like your kids to attend, or if you’d like to mentor (if I can do it, you can!). Can’t praise either experience enough. DO IT!
Thanks also to IBM, my manager, Jon and his manager, Anita, for their support in being a mentor.
For more information see the Software Cornwall website. Bert and Ernie are regulars at the Saturday Tech Jams. If you can’t make one of the Easter/Summer schools look out for them there and at the Royal Cornwall Show.