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. Remember that Jeet Kune Do is merely a name used, a mirror in which to see “ourselves”. . . Jeet Kune Do is not an organized institution that one can be a member of. Either you understand or you don’t, and that is that.
There is no mystery about my style. My movements are simple, direct and non-classical. The extraordinary part of it lies in its simplicity. Every movement in Jeet Kune Do is being so of itself. There is nothing artificial about it. I always believe that the easy way is the right way. Jeet Kune Do is simply the direct expression of one’s feelings with the minimum of movements and energy. The closer to the true way of Kung Fu, the less wastage of expression there is.
Finally, a Jeet Kune Do man who says Jeet Kune Do is exclusively Jeet Kune Do is simply not with it. He is still hung up on his self-closing resistance, in this case anchored down to reactionary pattern, and naturally is still bound by another modified pattern and can move within its limits. He has not digested the simple fact that truth exists outside all molds; pattern and awareness is never exclusive. Again let me remind you Jeet Kune Do is just a name used, a boat to get one across, and once across it is to be discarded and not to be carried on one’s back.
Bruce Lee
After reflecting on this passage by the father of Jeet Kune Do, Bruce Lee, I realized that he’s not actually talking about just martial arts. He is talking about a very effective way of getting things done well. Whether that was to end your opponent in a fight as quickly and as effortlessly as possible or to get your software built and released as early and cheaply as you can. These principles so elegantly explained by Bruce Lee are what you need to achieve that. You can say that these principles are what make you truly agile. Thatโs agile with a small โaโ as I mean it in the literal sense. Not the one that forces you to stand up for half hour meetings everyday ๐.
You can say that these principles are what make you truly agile.
Mad Computer Scientist Ninja
If you actually replace all the places where he says “Jeet Kune Do” with “being agile”, the entire passage still makes total and complete sense.
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. Remember that being agile is merely a name used, a mirror in which to see “ourselves”. . . being agile is not an organized institution that one can be a member of. Either you understand or you don’t, and that is that.
There is no mystery about my style. My movements are simple, direct and non-classical. The extraordinary part of it lies in its simplicity. Every process in being agile is being so of itself. There is nothing artificial about it. I always believe that the easy way is the right way. Being agile is simply the direct expression of one’s feelings with the minimum of movements and energy. The closer to the true way of Software Development, the less wastage of expression there is.
Finally, an agile man who says being agile is exclusively Agile (with a capital A) is simply not with it. He is still hung up on his self-closing resistance, in this case anchored down to reactionary pattern, and naturally is still bound by another modified pattern and can move within its limits. He has not digested the simple fact that truth exists outside all molds; pattern and awareness is never exclusive. Again let me remind you being agile is just a name used, a boat to get one across, and once across it is to be discarded and not to be carried on one’s back.
Mad Computer Scientist Ninja
This really says a lot about how insightful he really is in terms of his craft. He understood that he did not need to create a new style of martial arts but instead take what is good and remove what is not from other existing practices and used them as his own. If that is not stackoverflow for developers, I don’t know what is ๐.
He makes it a point to spell out that Jeet Kune Do is just a name for what he does. It is not an actual martial arts style and as such there is no way for you to be a member of it. This means that you either are or are not. Similar to the virtue of being agile, there is no way for someone to be certified as being agile because there is no agile institution to be a member of. What that means is that no amount of training, reading or certification will make you agile. The same way, no amount of practice with Jeet Kune Do will make you a Jeet Kune Do black belt. That is because Bruce Lee does not even have a belt ranking system for it. No katas, no belts, no certificates. You are either agile (I mean, a Jeet Kune Do person) or you are not.
No katas, no belts, no certificates. You are either agile (I mean, a Jeet Kune Do person) or you are not.
Mad Computer Scientist Ninja
Bruce Lee even goes to say that he wants to free his followers from clinging to styles, patterns or molds. Waterfall anyone? What Bruce Lee has obviously known for a very long time is that traditions should be broken if they do not address the current problem. Having a belief system that not only allows this but also enforces it as a principle will make you move fast. Remember, it’s not the big that eat the small, it’s the fast that eat the slow.
It’s Not the Big That Eat the Small…It’s the Fast That Eat the Slow: How to Use Speed as a Competitive Tool in Business
Jason Jennings
Jeet Kune Do is not perfect nor is it the best way to be effective. It is the inevitable reality for those who are effective to be doing what a Jeet Kune Do practitioner does. This is because it is NOT perfect. A Jeet Kune Do practitioner will adapt and adjust accordingly to their current situation. That is why training with a “live” opponent is crucial. Bruce Lee put it very eloquently: “Boards don’t hit back”.
If you want to learn to be more agile, you need to train with a “live” opponent. You need feedback that what you are doing is actually working. The best person to spar with is the person who would actually be using your software. This is what Bruce Lee means when he says that katas are like “dry land swimming”. They may look nice and benefit the practitioner in a lot of different ways but it does not provide you with the immediate feedback of an actual opponent that is trying to gouge your eyes out. Or in the case of our software user, trying to ask for unnecessarily complicated requirements that don’t really help them at all. It is our duty as software engineers to guide users to the appropriate solution of their computing needs. Communication here is key where we need to be able to listen to what they need instead of just hearing it. Then be able to communicate back how we are going to help them solve that problem. Underlying all of this is a mutual respect that needs to be there to ensure that both sparring partners are engaged and are both growing thru the experience.
Simplicity. The guy says it as clear as day. Jeet Kune Do’s execution is all about simplicity. Minimal effort, maximum gain. It has been said many times over that simplicity is difficult but that does not mean we should not try to achieve it. Einstein repeatedly argued that there must be simplified explanations of nature, because God is not capricious or arbitrary. To which Fred Brooks says:
No such faith comforts the software engineer.
Fred Brooks
Writing software is inherently complex but the really good ones are written with simplicity in mind. Simple is not the opposite of Complex. Simple is hard but not impossible. Complex and simple are not diametrically opposed concepts. They in fact determine how useful a piece of software is. The more complex it is, the more features and capabilities it has. The simpler it is, the easier to use and extend for future proofing. It is easy to understand simple stories but that does not mean that they cannot be about complex systems. Good old Freddy put is simply:
The complexity of software is an essential property, not an accidental one.
Fred Brooks – “No Silver Bullet”
This should be a reminder to everyone that the work we do as software engineers is difficult. Only around 2% of the world’s population can code. These numbers are reminiscent of the literacy rate back in the 1800s. The fact that writing software is complex should not deter us from making it simple not only for the people who use our software but also to the other software engineers who will inevitable need to read, maintain and extend that software. It is our duty as software engineers to raise the level of quality we create not only for the current needs but also for the future.
Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.
Antoine de Saint-Exupery
“The closer to the true way of Kung Fu, the less wastage of expression there is”. The man knows what he’s talking about. Both him and Antoine de Saint-Exupery may have lived in totally different generations and circumstances but they speak the same truth. To be agile means to constantly work towards improvement. This applies not only to the development of the code but also to the development of the final product. Fred Brooks estimates that only 1/6 of the effort in writing software is the actual writing of the software. Half of it is in testing and the rest in planning. He also argues in “No Silver Bullet” that there is no order of magnitude improvement that can be achieved in the next decade with regards to that 1/6 of the work. I actually think it was funny that he proposed that object oriented programming might be a potential “Brass Bullet” alternative. If he only realized how most software developers today have taken that brass bullet and created horribly written software equivalent to weapons of mass destruction. To be fair though, he wrote that line 45 years ago, how could he have known? ๐
Any run-of-the-mill engineer can design something which is elegant. A good engineer designs systems to be efficient. A great engineer designs them to be effective.
Dave Akins – “Laws of Spacecraft Design”
Jeet Kune Do is what effective people do. It is a mindset of how things are done. You either operate under that state or do not. There is no magic formula that will make you agile, it is based solely upon how you do efficient and effective work. Jeet Kune Do is not meant to be an instruction manual of how to be agile. It is documentation of what agile people do so that hopefully others might learn from its lessons and become agile too. You cannot say that you are agile because you perform all the practices of story writing, sprint planning and stand up meetings. You can only say that you have become agile when you are actually working effectively and delivering value thru the code you write. As software developers, this is our Kung Fu.
Beware of false prophets. There are those who would claim that they can make you agile by simply doing certain exercises. This is what I mean by being Agile the noun.
Mad Computer Scientist Ninja
There is no shortage of snake oil salesmen in the software development world. Bruce Lee warns us of these people by saying that those who would claim that for you to be agile, you have to be exclusively following Agile methodologies. These are people who have limited their room for growth as they have set limits on what they can do (“self-closing resistance”). They will only think and act based on what the pre-ordained activities and ceremonies are set upon the big book of Agile (“… anchored down to reactionary pattern… bound by another modified pattern… can only move within its limits”). They will then claim that you are ineffective because of your lack of adherence to being Agile (the noun).
This is my biggest point of contention with the false prophets of the Agile methodology. It has been misconstrued to become an excuse for (certain) pencil pushers to harass developers. Daily stand ups are turned into status update meetings for the project manager when it is actually meant to be a collaborative exercise to improve “Individuals and interactions” as stated in the Agile manifesto. It is designed to improve “Customer collaboration” not by providing status updates to stakeholders but by having contract negotiations with them. “Responding to change” does not mean we will accept ANY change at ANY time. Finally, “Working software” does not always mean final product! I can go on and rant forever about this (I probably will on my next rant blog post) but I need to center my chi right now. Wooosaaah… ๐คฃ
In the end even Bruce Lee understands the fact that all of these principles and practices are really just a means to get to where you want to go. It is a boat to be used and then discarded as soon as you get to your destination. We only apply certain principles and practices when appropriate and change them as soon its no longer useful. It is not meant to be carried around everywhere you go. Doing so might make you Agile but NOT agile.