Before moving to Tallahassee, I'd volunteered a few times, most notably for Novartis Community Partnership Day. My experience up to that point was that volunteering was a highly organized event in which each person is given a job to do. In my mind, there was a master list of volunteers, and the day before, an organizer would review the list, give each person a job, and write up instructions.
I've since learned that that's a fantasy.
In October of 2018, Grace and I drove out to Mexico Beach, FL to help hand out necessities for families affected by Hurricane Michael. When we arrived, the "POD" (point of distribution) was laid out like a combined grocery-department store: canned goods were under one tent, baby needs in another, and hardware under a third. There was structure, but not quite organization -- goods were coming in all day and needed to be sorted into their respective tents, but it was important to make sure that all tents remained staffed so people could pick up their goods.
There were two tricks that I noticed were helping the operation the most:
- If you saw something that needed doing, you had the authority to do it. There were too few organizers for the number of volunteers that day, so it would have been impractical to give the detailed instructions I had imagined. Instead, it was important to simply keep moving towards the shared goal. Even without instruction, odds are your "best guess" would be about 80% right, and the remaining 20% didn't really matter.
- There were a couple of times when I genuinely ran out of things to do. Maybe there was a lull in traffic at my assigned tent (hardware), or maybe I was relieved from directing traffic but my previous job had been taken by someone else. In these cases, I'd walk up to the nearest person and ask what they needed help with. This is a habit I've kept, and I've started to express this as a shorthand; sometimes when I'm helping Grace with chores, I'll walk up to her and state, "I have an empty pair of hands". This means I'm willing to help with whatever needs doing.
These strategies helped the team that day, and I've since brought them to other volunteering situations as well.
I've adopted these as part of my teamwork strategy, too. When I see something small in a codebase that's not quite right or has a
/* TODO */ comment, I'll take a moment to fix it, even if my current work isn't directly related. In addition, I try to check in with teammates and see what I can do to help them. Sometimes these conversations have sparked moments of true joy, where we've discovered that something tedious for one person is exciting for the other. Both of these habits have improved code quality and teamwork for the projects I've been on.
The next time you're working on a shared codebase, consider adopting a volunteer mindset. Chances are you'll create a better product while making everyone's lives easier.