Before his untimely death in 1973, Bruce Lee managed to shake up the martial arts world with his theories of combat and training. Why? Because he felt – much to the chagrin of his peers – that the traditional martial arts were too rigid and formalistic to be practical when applied in an actual fight.Lee referred to this rigidity in the martial arts as a “classical mess” that wasted time and energy. His real concern was that concentrating on a specific style as the only way of fighting prevented someone from becoming a truly capable fighter. This is because focusing solely on any one style of fighting restricts your options.
For example, a style like karate leads to specialization with punching and kicking techniques, but a karate man is unable to handle a wrestler if the wrestler succeeds in getting the karate man on the ground. Conversely, a wrestler is helpless against a karate man if the karate man is successful at keeping the wrestler at arm’s reach.
Bruce Lee was regarded by many as being years ahead of his time. And while computers were in their infancy by today's standards, much of what Lee advocated regarding the martial arts can be applied to software development. For instance, do we spend too much time and energy on our own stylistic “processes,” losing sight of what software development really is?
As an industry, we’ve certainly had our share of silver bullets. We’re not alone in this respect. The martial arts industry has its silver bullets, too. Pick up a martial arts magazine and peruse the ads. You will find someone advertising a “fighting method” that is guaranteed to make you a “killing machine” by using one simple move. No need for all of that hard training!
If you believe that, I’ve got some land to sell you… Or perhaps a “killer software development productivity technique,” hmmm…
Getting back to the subject at hand, it is interesting to examine how Bruce Lee resolved the stylistic issues involved with the martial arts. His journey resulted in the development a system that he called Jeet Kune Do.
Bruce Lee was clear on one point, stating: “I have not invented a ‘new style,’ composite, modified or otherwise that is set within distinct form as apart from ‘this’ method or ‘that’ method. On the contrary, I hope to free my followers from clinging to styles, patterns, or molds.” In short, Jeet Kune Do is not a style of fighting, it is a system.
Lee stressed that you didn’t want to assemble techniques from a variety of styles and slap them together to form a new style. The goal as a martial arts practitioner means that you should discover what works best for you, because what works for one person will not necessarily work for another person.
Lee was all about exploration and continual learning. Recognizing and respecting that everyone was different, he felt that practitioners should interpret and evaluate techniques for themselves, adapting the techniques is necessary to meet their own circumstances. The caveat was that those decisions should be based on realist combat, because those decisions should have a strong basis in reality.
Lee sought to understand the true nature of fighting; he sought to understand what each style had to offer, but in doing so he strove to avoid being trapped by the limits of any one style. His approach of “absorbing what is useful” and discarding anything that was merely ritualistic is great advice to this day.
Bruce Lee’s research and thinking was all about how to become a better fighter. He wanted to understand the knowledge, skills, and attributes that went into being a great fighter.
When it comes to software development, it’s all too easy to devote time and attention on the process – the style – of software development, and too little time focused what it takes to produce great software in the first place: good, capable people and teams using proven, professional practices.
Does process alone make a team a high-performing team? What advice would you have for someone who wants to become a better programmer? I would HOPE that it isn’t along the lines of, “Follow process XYZ and you will become a great programmer!”
In the end, follow Bruce Lee's advice: Examine what others have to offer, take what is useful, and adapt it if necessary. I'll close with an old quote: "The style doesn’t make the fighter, the fighter makes the style." Or should I say: The process doesn’t make the developer, the developer makes the process.
A few references about Jeet Kune Do and Bruce Lee:
http://en.wikipedia.org/wiki/Jeet_Kune_Do
http://www.worldjkd.com/
http://en.wikipedia.org/wiki/Bruce_Lee

2 comments
"...and too little time focused what it takes to produce great software in the first place: good, capable people and teams using proven, professional practices."
March 13, 2010 at 9:35 PMIt seems to me that "proven professional practices" is in opposition to the freedom described in the rest of the article.
The idea is avoid over-emphasizing process and procedure over other important qualities. Professional practices are important because they have been vetted in real-world scenarios. And by practices, I specifically was thinking more along the lines of TECHNICAL practices (OOD/OOP, TDD, etc.) when I wrote that line. You don’t want to ignore what others have spent time and effort developing and refining. It isn’t practice that makes perfect, it is perfect practice that makes perfect.
March 14, 2010 at 7:25 AMIf you develop bad habits, not only will those bad habits prevent you from getting better, it will be difficult to unlearn those habits later. Look towards the experienced professionals to provide expert advice and guidance. I’ve seen actors that portray boxers punching heavy bags, dropping their hands when they punch. A professional fighter would not practice that way, it reinforces a bad habit that will get them killed in the ring.
The other real danger is that people have a tendency to discard things without understanding them or even trying them. This includes the process of developing software. We’ve adopted Agile/Scrum development, and I’ve heard and read that all too often, teams are adopting Scrum, but… They’ve discarded important aspects of Scrum without fully understanding or working with what they’ve chosen to ignore. In these cases, people are too rooted in what they are already doing, prematurely discarding what others have to offer.
Post a Comment