The Motorcycle Cop
As I drove home today I noticed a motorcycle cop had pulled someone over. I was reminded of a motorcycle class I took from the local police department around Summer of 2005. It was a great experience and one of the things that stuck with me was a comment from one of the officers about speed and skill.
In a nutshell, he said something like the following:
Most people think going fast is impressive, but going slow requires skill.
To be clear, he was talking about giving demonstrations. Going slow is more difficult because of physics.
However, for spectators, speed is interesting, and slow-driving skills are only interesting to fellow riders.
My mind then jumped to the thought of practicing slow to move fast.
This lead me to think about Tai Chi. I’ve been practicing since around August of 2015. At the beginning I was lucky to not bump into other people while I tried to do the form. Now I occasionally fill in for my Sifu.
There’s a lot going on when I practice. I’m about 3 years in and at a pretty deep level I’d say I’m nearly a beginner. I have memorized a version of the Yang Style long form.
I am not able to apply or remember much of what I’ve learned at any given moment. At some time through the form I’ll likely remember much of it, assuming I’m not distracted. The slower I go the more I can recall what I’ve learned so I can make continuous adjustments.
My body is to the point where it takes care of several of the details for me. What comes next seems “obvious” and “natural.” All I need to do to confirm that the next thing is neither “obvious” nor “natural” is do try doing the form on the opposite side. When I do that my only hope is to slow down to the point of stopping to figure out what is next. And I still mostly fail on the other side.
I practice Tai Chi as walking meditation. I get more from practice when I practice slower. The more I can increase the time it takes while moving continuously, and therefore slower, the more I get.
To an onlooker, it might look like there’s not much going on. It’s not obvious. It’s slow. It must be easy. But the internal internal experience is nothing like the outward appearance.
My Real Job
Back to my drive home. I was getting close to home by now, and the idea of going slow to go fast lead me to think about coaching technical practices.
A way I find helpful to learn a new language is to actually type it. Each language seems to have its own cadence. I often fall back on typing C when I’m working in another language and get distracted. I can tell by the sound of the spacing, how my hands are moving, etc. what language I think I’m typing.
Once I’ve learned the basics of a language, I can start thinking at a higher level. Maybe I go to the basics like coupling and cohesion, or assignment of responsibility, the SOLID principles, deign patterns, language idioms, test-first, and so on.
When I move to this level, I do the same thing I did at the language level. I take time practicing techniques, problems, and even keyboard shortcuts to get this higher level of thinking connected to my kinesthetic memory.
One great way to do that is is through code katas, or maybe full on programming problems. I have a few in my back pocket I lean on. Having accidentally practiced repetition on a single problem for years because I was teaching in the 90s, I have quite a bit of experience with a few problems. More importantly, I have practice practicing and learning how to make small variances in a solution to see what happens.
As a consultant and a coach, I see many people reluctant of “new” ideas like refactoring as described by Martin Fowler, or legacy refactoring as described by Michael Feathers.
Often work is too swamped to “waste” time learning the basics. However, much like luck is “good” if you work in a way to have enough space/flex and can respond to events, and “bad” if there’s no room to breath. Taking time to step back and practice things slowly, deliberately, and continually enables moving much more quickly. Trying to move quickly in a code base without this practice might work, but I think it’ll overall be slower.
I find that when I’m able to pair with someone and have them give the techniques a go, more often than not I see people learn that many of these techniques and ideas are actually not too scary, are much more light weight than then seem at first, and can really be effective.
We need to go slow enough to have the time to learn some “basic” (pun intended) ideas, and allow our System 1 thinking to learn patterns so we don’t dismiss ideas that in the past we’d skip over because of how we’ve learned up to that point.
As I arrived home, I looked forward to capturing these ideas. I’ve recently started blogging again, so I started capturing my thoughts.
I have also spent a bunch of time learning about the system I’m using (Jekyll + Google pages). I’m combining practicing writing again, with figuring out how to customize by blog.
I don’t have an end to this blog per se. Mostly, it’s a few random associations and connections from a few domains. So I’ll end with a few questions:
- What is something you do that from the outside might seem trivial, but from your internal perspective, is rich and rewarding?
- Is there anything for which you go slow now so that you can go fast later?