One of the counter intuitive things that we observed early on in the days of object oriented programming was that developers with no previous programming experience often picked up concepts like inheritance, encapsulation and polymorphism much more quickly than seasoned programmers, and became productive earlier than their more experienced counterparts.
Does this same sort of thinking apply to software and systems development processes? I'll tell you why I think it does. For the past three years I've been a mentor for a US FIRST Team (Team 811, the Bishop Guertin Cardinals). During this time period, I've seen high school students with little to no technical experience instinctively adopt many principles that experienced Agile teams would recognize. For these kids Agile development is like using an iPad - they take to it naturally because it just makes sense, given the context of what they are trying to do.
For those that don't know about FIRST, it's a great organization, whose goal is "to inspire young people to be science and technology leaders, by engaging them in exciting mentor-based programs that build science, engineering and technology skills, that inspire innovation, and that foster well-rounded life capabilities including self-confidence, communication, and leadership."
At the high-school level, FIRST robotics teams spend six weeks every year from January thru March building 120lb robots that compete to solve challenges on a 27X54 playing fields with two teams of three robots each. Serving as a FIRST mentor is the most fun I've even had volunteering, even if it is "hard fun".
Six weeks to ship...
Could you build a 120lb robot to solve a daunting challenge, and program an embedded National Instruments controller in C, Java or Python? Could your current development processes support going from zero to ship in six weeks? For many of us, we'd still be fighting with the purchasing department to get the base environment installed. And it's not like it's a simple problem: Safety issues abound - a 120lb robot traveling at speed can break a leg if it ploughs full steam into someone during the testing process. Pneumatics and gears present their own challenges, along with lathes and drill presses and bandsaws.
That's where FIRST mentors come in, we make sure that safe working condition exist and offer some guidance in how to get from zero to ship. What's interesting for me as a mentor is to watch how many of the challenges I've seen on my own teams over the past 20 years manifest themselves on our FIRST teams. The difference however, is that the kids tend to spend very little time focusing on their problems - they don't have the time because their deadline will not shift. They tend toward high performance behavior because they have no other option.
So what does this have to do with you, and with Agile development? Over the next few weeks, I hope to blog about the collaborative design process Team 811 uses to get from zero to concept in three days. From there we'll focus on our minimum viable product - a functional robot. From there we'll try to get to a competitive robot, and beyond. What I think you'll see is that high-school age kids "get" Agile development concepts, they are more natural to novices than established systems techniques, especially iterative and waterfall development. If a 10th grader can get these concepts, then maybe it's not so hard after all.
One last note - if FIRST sounds interesting to you, find a way to get involved on a local basis. Many companies like PTC, Microsoft, FedEx, JC Penney, BAE, and Coca Cola are deeply involved with FIRST as part of their corporate social responsibility initiatives. Others companies sponsor teams on a local level. But above all, it's knowledgeable mentors that make the difference for teams on the ground. It's easy to find a team near you, and they all need to write embedded code to make their robots run.
More as build season progresses...here's an overview of the challenge we'll be trying to solve, Rebound Rumble.
Posted by Jeffrey Hammond