Practice programming like you practice martial arts

I have been taking a zen meditation class, which consists of one hour of meditation and one hour of buddhist teaching. I haven’t felt all the physiological benefits of meditation yet – I struggle to stay awake during meditation, but the buddhist teaching has been pretty interesting.

In one class, he used a quote from Enter the dragon to explain how you should not take the buddhist teachings literally.

Don’t think. FEEL. It’s like a finger pointing at the moon. Do not
concentrate on the finger, or you will miss all of the heavenly glory.

It made me think of my journey to reach 2nd-degree black belt in TaeKwonDo. It took me about three years in Korea, and as opposed to many TaeKownDo schools in the US, it was pretty intensive. Everyday, we start with practicing the same kicks and punches – white belts to black belts. You can tell the difference between kicks from white belts and black belts, but where the difference is starkly obvious is during sparring. So, how are they different? Higher black belts can do without thinking. It’s almost their 2nd nature or sixth sense. Their response or counter attack is very quick that sometimes their counter kick/punch lands before the opponent. Even as a 2nd-degree black belt, I still had to think about what opponent does and how I would react. I believe it comes from constant practicing.

When I think about good developers I have witnessed/interacted with, they seem to see beyond surface of problems and are capable of coming up with adequate and correct solutions quickly. As I write more and more codes to solve more requirements and bugs, I began to recognize the pattern and past mistakes I have made which in turn has been enabling me to write better codes with less mistakes more quickly. I have been told that the best way to good at coding is by coding a lot and reading good codes. It’s probably not the case for all developers, but I believe the practice indeed make many developers better.

I’ve practiced a lot of coding at Hacker Dojo (Dojo means a training place) and Ruby Koans (paradoxical questions to reach sudden intuitive enlightenment) helped me a lot in learning Ruby. Their similarities with martial art practices are quite keen.

I will leave another quote of Bruce Lee, that’s also very relevant to coding.

Quote-Ten-Thousand-Kicks-Bruce-Lee