The FIRST Robotics competition has come again to California, PA, and once again I’m here, working with a team this time, doing their best to win the thing. They’ve spent a quarter of the year building a machine to do the tasks, a quarter of a year building and tuning and testing. The first practice run was an objective disaster; nothing the robot was designed to do worked, a critical piece of infrastructure (a camera that identifies the target on the field) utterly failed to work as designed (and tested, in the relative quiet and comfort of the machine shop). The team was disheartened, downtrodden, yelling at each other.
One of the team’s teachers pulled them together and talked about how important it was to not let the situation change who they were to other people and to each other. That relationships last longer than the moment; we can’t let the moment pull out the worst in us. He used me as an example; I mentor this team, but I have no personal ties to them. I joined, originally, because they were closest to where I lived (then, because long-term plans are for other people, I moved). “Mr. Tomczak doesn’t have to be here,” he said. “But he’s here because… Well, he has his own reasons. But how you act impacts those reasons.”
And I was suddenly quite glad for the COVID masks we’re all still wearing, because for just a moment, it hit me…
… why am I here?
I know why I was here. I started volunteering the year after I graduated high school. We’d competed for two years on a team I helped found. The event itself meant a lot to me; it had been a terribly formative experience, gelled for me that the computers I enjoyed for fun I was good at, that I could make them do things. I volunteered because I was hungry for more, but it’s a high school project; you can help a team, but you can’t be a team member. Closest I could get to the sun. Volunteering was good… I got to be present, field-side, the year the team I help found took their first championship match in Virginia. And when I moved to Pittsburgh and a regional event began there, it felt good to build something from the ground up again. We were scrappy, and it was some hard years; a lot of things didn’t work, the venue was a challenge, teams were frustrated, we couldn’t afford internet access from the venue so I was uploading scores to a national database every night from my dorm via a USB drive.
FIRST has a hell of an energy. It’s patterned after a sporting event extremely on-purpose; the people who founded it believe strongly that “a society gets what it celebrates.” They wanted to build a “superbowl of smarts” to combat a perception in the ’90s that American math and science scores were tanking relative to our international peers. Maybe they were bailing the ocean—maybe they still are—but they had to try something. So they grew the project from a small event of a dozen teams in New Hampshire to an international program with thousands of teams worldwide.
The first team I tried to mentor was in college; it didn’t go well. I had no car, and they had needs I couldn’t help with. We’re both in a better place now. The first team I mentored successfully did so during a half a year as an intern in Philadelphia. I regret that I don’t remember the team’s name. I barely remember much from that year. But they did a great job. I’ve since mentored two other teams, both for convenience reasons; one was down the street from my office, the other (used to be) close to where I lived. It wasn’t about the team; I mean, I felt I was helping in the abstract; giving students a chance to experience something that had meant so much to me at their age. But it was also very much about staying close to that thing; seeking the energy of those amazing two years when I was there, when it was our machine that ran and died on that field.
I’m not a teacher. I’m an adequate mentor; definitely room for improvement. And I know, now, that I can’t give students a life-changing experience like I had. Every life is different; what changes people isn’t up to me. It’s not always up to them. Is it good enough that I can help them, or am I trying to give them something I can’t give? Am I just being selfish?
Why am I still here?
This year, our team tried something new. There’s a target on the field, an over-sized basketball hoop about seven feet off the ground, mid-field. If you can bulls-eye it with a thrown ball, it’s worth 2 points. The team decided to go for it. And they decided to add a camera that recognizes some reflective tape on the target and auto-aims the shot. I advised against it. Have a plan B, I said. Image recognition is a crapshoot. I showed up to the meeting and they’d already bolted a prototype to the robot, they’d figured out the math from another team’s research—it was messy and full of undocumented numbers, but dammit it worked—and they were excited. It missed, consistently, but the basics were there. An amazing mentor to me once passed on the lesson that he got from his own mentor—if students blow your expectations out of the water, do not set the bar high or low. Do not set the bar at all; they’ve just demonstrated you have no idea where the bar should be. So I advised they have a plan B to manually aim the shot, but I encouraged them. They tested, and tweaked, and tuned, and rewrote the whole thing, and it broke, and they fixed it, and they rebuilt the shooter, which invalidated all their math so they fixed it again… And it worked. Shot after shot, fire-and-forget. They were so excited to show it off.
And they were so frustrated and angry. So I pulled some of them aside, and I passed on every lesson I’ve learned from twenty years of software engineering about how much it sucks when the plan doens’t work, and how people are more important than machines. How this is the closest this team has ever been—as far as I know—to having a working aim camera. How sometimes, we have to know when to change plans. And how that’s okay.
And they listened. I think I made progress on the people-more-important-than-machines part. I don’t know. But they were hell-bent on getting that damn camera working. It works for other teams; it can work for them.
So they tuned, and went out, and it sucked again.
And they tuned, and went out, and they got one shot in.
And they talked to other teams, and got support from other programmers—tips on what to do, things that didn’t work, configurations that seemed to be happy today, it’s hard to say why, image recognition is one part science, two parts art, and three parts nobody changing the bulbs on any of the stadium lighting…
… and they landed a shot. Fire-and-forget.
And then another. And now they’re so spot-on center target that they’re bouncing out. They have to tune for off-center shots to make sure the balls stay in the goal.
… and damned if this might not actually work.
Last bit of tuning before practice closed, and they’re pretty sure they’ve excluded the stadium lighting. There’s still some noise from diffuse and mirror reflections and other cameras, but…
I’m not a teacher. The team has two excellent teachers who see them every day of the week, who actually do the heavy-lifting of nuturing young people into young adults. And I don’t know if this will be a life-changing experience for any of them. I’m a weekend warrior who gets to show up a few times a year, be a walking dictionary of half-remembered control theory and things that didn’t work, and go back to my day-job. I can tell these students about feedback loops, but I can’t teach them faith—not in me, not in themselves, not in anybody or anything. But… I can step back to let them fail, then watch them fail, then tell them I think they’ve failed and it’s time to try something else…
And watch them prove me wrong.
And I think I know why, now, I am here.