Bruce Lee on Software Development
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.
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.
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.
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 of 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.
More articles from Dave Moran you can read on his blog: http://softwareresults.blogspot.com
One of the agile principles is “People Over Processes”. I have never understood why it doesn’t come naturally to everyone.
Mohit,
Agreed, valuing people can in fact be a struggle! (In some places.) I’ve seen instances in years past where individuals and organizations grab hold of the process itself and valuing it more than anything else, including the people.
You have connected the style concept very well by using Bruce Lee as an example. My view of the logic understood is the following.
The style you are talking about here and the analogy of Bruce Lee is an individualistic style,i.e its a fighting style. A one on one, or a one on many. The person is concentrated on oneself and one’s abilities. Port this logic on to a developer and you will have disaster written all over in a team working scenario, because you just have a peron who thinks he is ‘God’s gift to Man Kind’.
Taking in the fighting analogy, the US Marine Corps keep insisting, they rather have a team player than a Rambo. Leaving behind individualistic styles may be suited for some industries (like martial arts) , but in a team working environment, it is better to have a collective effort, for which you should not have much desire to leave YOUR mark behind, but the TEAM’s mark.
Process only ensures that if in the middle of the ‘fight’ (read project delivery) this ‘Bruce Lee’ quits or ceases to be associated with the project, the rest of the ‘not-so-Brucelees’ should be able to carry on the ‘fight’ and win it. I would bet on a well laid out process any day than an individualistic ‘Bruce Lee’. Being process driven is the only key to scalability and quality.
But again, that’s just my side of the view !
Mohan
Mohan,
Thanks for your comments! Just to explain the logic – motivation really – behind this. Like most things in life, balance is important. The important thing is not to follow any one process or approach to the extent that it blinds you to the full realities of software development. I’m advocating (philosophically in this post) that software development requires knowledgeable, competent, capable professionals. Process alone will not make a team successful. A team of competent professionals following a reasonable process, however, will be successful.
Bruce Lee stirred things up, and he was genuinely concerned that people were being led down the wrong path; a path that denied the realities of actual fighting by following rigid styles that were both limited in scope and lacked flexibility. Granted, the fighting Lee was talking about was geared towards individual combat. I agree with you that individualistic programmers do not fly well in a team setting, and I fully agree with your comment about the military, Teamwork in military units is essential. But they also demand that each person knows their jobs and can perform up to the expectations of the team. I personally wouldn’t want to go into battle with a unit full of incompetents at my side!
Here are my two cents.
1. Start with a filed-proven, simple-yet-structured, and tailor-able set of essential processes (like Requirement Gathering, Software Design, Conducting Reviews, Writing Code, Making & Executing Test Cases, Logging Defects & Tracking to Closure, Version Control, Build Management, Delivery / Release Management, Change Request Handling, Bug Fixing, etc.)
2. Let people adopt these processes in real-life situations
3. Make necessary changes to these processes based on real-life situation feedback
4. Goto step-2
No software engineering methodology prevents you from following the above core algorithm.
Dave,
I agree with your comments. There needs to be a balance of ‘Person and the Process’. The reason why I commented the way I commented, is the following;
– S/W development is getting more and more complex with newer technologies hitting the market
– Everytime there is a new technology in the market, its ‘HOT’ and the price for the skill rises and there is huge labor turnover
– More over these little ‘Einsteins’ need to be handled with kid gloves, lest they find the company not worthy of their contribution.
Given the above facts, if the person is also a ‘Bruce Lee’; who knows everything in a team without any processes, then he becomes the real ‘GOD’ for that project.
In my experience, I have seen that good manpower planning, training and succession planning takes care of these issues. From a S/W methodology perspective, good documentation processes as given in ISO or CMM goes a long way.
I agree with you that there is no point going in to a battle with incompetent teams. But having a process where supplies and refills come in when people fall would be a life and death differentiator.
Very good thought / discussion points.
Mohan
Mohan,
Thanks again for your comments and discussion. That is what this is all about! I appreciate it.
Regards,
Dave Moran
I truly appreciate this post.Really thank you!
I cant imagine some of the web sites My spouse and i have been brought to by stumblupon (basically today this web page) I was trying to spend a couple of obnoxiously boring 60 minutes away, when stumbleupon landed me here. What a exceptional resource site you have I’m so delighted to have located it I have just passed the last twenty mins working through some of your articles, and have furthermore bookmarked some of them. I will defiantly be returning in order to learn a little bit more when i have atiny bit more time.
Gratulations man, radio gogo talked about your blog on 11 pm. Header was your blogpost Bruce Lee on Software Development | Bridge-Blog. Well work. bye
Your blog is interesting and I keep reading it. Bruce Lee is indeed a good martial arts artist and nothing or no one can change that.