I'm a coach of a middle school Lego Robotics team, competing in our local FIRST Lego League competition. I'm interested in bringing Agile methodologies to our team. From what I've been seeing, it seems like a good fit, and would really help teach the students how things work in real world software engineering. The problem is that I'm a bit shaky on some aspects of adapting Agile to a software+hardware problem.
Here's what I have so far:
- In the competition, the robot is set up on a table with many Lego structures. These make up missions worth varying number of points. The robot leaves a Base area, does something (ideally one or more missions) and returns. This sounds a lot like a "user story", and I'm already planning to get the students to write what they want the robot to do that way. All the missions basically become the backlog!
- I'm also going to use Planning Poker to estimate how hard they'll be to build and program for. Our team only meets for 1 hour per week, though. What would be the best way to set up the time estimates? I'm thinking that the smallest unit should be 1/2 an hour, and would go up from there.
- These missions tend to be pretty complex sometimes, and benefit from being broken down into simpler tasks. Should we worry about that when writing up user stories? (Doesn't seem so...)
- As coach, should I act as project owner? Or should a student on the team be tasked with determining which missions or combination of missions is most important?
- Given that our team is small (8 students), would one Scrum Master be best? Should that be me, or a student?
- Given that our team is small, is it fine for students to be testers and developers as needed? (I'd like to avoid giving them excuses for downtime.)
- Since we only meet 1 hour per week, would a sprint length of 1 month be best?
- I've also been looking at the concept of test-first design, and while it seems great, I don't understand the terminology. How would I get my students to design the robot and its programs test first? Would it even be appropriate? What kinds of tests (unit? acceptance?) would work well?
I know these are a lot of questions. Any help you all could give me would be greatly appreciated. Thanks!
(Also, if you'd like to read about this teaching experiment, I'm blogging about it at gettingteachingdone.net.)