What I learned from my dog, my kids, and the open source community about being a better person November 22, 2011
Participation & contribution, clear expectations & consequences, and respecting energy levels are what it's all about.
8 years ago, I dropped out of the start-up rat race, got a dog, got my wife pregnant, and then embarked on some long range personal growth including starting the Lift Web Framework project.
Archer arrived on December 10th, 2003. Archer is a Collie Dog... a smooth coated collie. Collie dogs are generally smart (Archer is) and very sensitive (Archer is.) They love being members of the pack... part of the team and they do well with positive reinforcement. They groove on having a job, doing their job, and getting praise. This methodology is the philosophy behind Siruis Puppy, where we went to learn to make Archer a happy member of our pack.
I learned how to form commands for Archer that he'd understand and how to catch him doing what I wanted him to do and giving him positive consequences (rewards) for desired behavior. I learned that puppies need to play and learn about each other... that puppies speak dog much better than I do. I learned that letting Archer get in tussles with other dogs was part of his growth and socialization. Archer is a remarkably well socialized dog. He loves to meet new people and dogs. He interacts with happiness and enthusiasm to almost any animal. He's polite to cats and small dogs. He has been able to get almost every dog he's ever met to play with him. He's also good at ignoring the barking, aggressive dogs (something I'm still learning.)
A lot of what I learned from Archer... from watching him at the dog park... I applied to my kids. From the very start, we were positive with the kids. We got on good time-rhythms with the kids so they knew that they could expect food, sleep, etc. at particular times. We worked to wait for desired behavior before giving positive consequences (e.g., paying attention to them when they stopped screaming rather than yelling at them for screaming.) When the kids got into the pulling glasses off faces phase (@divaseq and I both wear glasses), we told them the rules ("Glasses stay on faces") rather than a knee-jerk "No."
Rewards for the kids is mostly family-time and our attention. Punishment, negative consequences, is usually disengagement. If one of the kids is not doing good listening, not behaving in a way that we've asked them to behave, we ask them to sit on the stairs or go to their room. Behaving poorly has the consequence of being separated from the group until the individual can align their behavior with expected family behavior.
Natural consequences is critical. When my son knocked over a full box of K'Nex the other morning, the consequence for him was to pick it up... every single piece. It took a lot of time and he really disliked the task. He's been more careful since.
Letting the kids "skin their knees" is another part of the consequences thing. We let our kids make mistakes, get hurt, and explore their limits. Sometimes I'll point out that what they're doing could have a suboptimal outcome. They generally ignore me. When that suboptimal outcome results in a negative consequence (running too fast and falling down), they get to learn a lesson from experience rather than just from my words. No, we don't let them spark up flame throwers or do wicked dangerous things. But they do use sharp knives to help us cook and they do use the stove. A couple of nicks with the knife and small heat ouchies and they are a lot more careful... and they are becoming quite skilled in the kitchen.
And yes, we try to set out clear expectations. We tell the kids what we want them to do, the way we want them to behave. We do this with words and with our own actions. We say, "Please" and "Thank You" and ask the kids to be polite and do the same. We watch for the kids doing the right thing and thank them for behaving in a polite way.
The dog and the kids have really done well by being part of the pack, the family, the team. But does this work for adult humans?
Yes, yes it does.
The Lift community is remarkable. Lift is remarkable. It's different. It breaks the standard MVC paradigm and it relies on an obscure language, Scala (okay, Scala is less obscure than it was 5 years ago when Lift began its life as Scala with Sails.) Lift's documentation is weak, so for people to want to use it, they must really, really want to use it.
But it turns out that the Lift community and the Lift codebase work the same way as my dog and my kids work.
We value politeness in the Lift community. I've had more than one rant on the subject. Why? Because with politeness as a foundation, we can explore lots of different ideas and concepts. We can include lots of people in the conversation. Sometimes we talk with code and sometimes we talk with English, but the conversation can be broad ranging and can lead to a better result because we've all participated in it.
We can each be the giants whose shoulders we each stand on (there's a turtles all the way down meets MC Escher thing floating around my brain with this one... I'll flesh out the metaphor at some point.) We can share and grow and learn from each other. The value of participation and contribution, being part of the team, the pack, the community, has concrete benefits (more, better code and *ahem* documentation) as well as the non-tangible benefit of making everyone in the community feel better about themselves and about how they spend their time.
Sometimes, we get community members that don't belong in the Lift community (just like Archer will occasionally meet a dog he doesn't want to be around.) Generally, those people self-select and go elsewhere, and the community continues to be a place where people title emails like "Unexpected behavior with anonymous function" rather than "Bug in sucky Lift."
I have learned from the community that care and feeding, setting expectations, rewarding excellent participation with recognition, and spending time with those who do exemplify the community leads to a community of beauty and excellence.
The thing I'm working on now is recognizing the energy levels and energy flows. The kids wear their energy levels on their sleeves. The dog... well, he's a dog and he doesn't really give me a very good read on when he's looking for a walk, a nap, some quiet petting, or some dog-on-dog time. The Lift community is most interesting from an energy perspective. Sometimes, the Lift list is all newbies asking noob questions. Sometimes, it's a bunch of folks working towards a deadline. Sometimes people need new features and sometimes they need better documentation and every once in a while, I get the sense that the collective Lift list needs a beer and the chat.
I am learning about my energy flows and how my energy levels are influenced by those around me and how I influence those around me. I am feeling out how, now that it's official that I'm just a Lift committer, not the BDFL, is impacting the Lift community as a whole and the Lift committers. It's interesting to see how my family reacted to the last month of my "shipping mode" and "code mode" energy levels as I got Visi.Pro launched. It's also very interesting for me to spend more time in the Lift community and feel the community energy now that it's public that I have two children (Lift and Visi.Pro), not just one.
But I've learned so much and grown so much as a person by learning from my dog, my kids, and the Lift community.
I have learned that positive participation... being part of something... is tremendously powerful. I have learned that asking for what you want and saying "Thank you" when you get it gets you more of what you want. I have learned that being part of a family, pack, community motivates dogs and humans to do amazing and beautiful things.
I am so Thankful (this is a Thanksgiving post after all), about how each of these constituencies, family, groups, packs, teams has taught me to be a better person.