Back to all posts

Programming Jeet Kune Do

Bruce Lee SmilingBruce Lee was classically trained in traditional martial arts.  He studied Wing Chung Gung Fu from Master Yip Man when he was a child.  Growing up he was a bit of a street brawler and was involved in several fights.  In college he studied philosophy, and in his adult life he became the super-star we know today. 
 
In his quest to become the world's greatest martial artist Bruce Lee rejected traditional martial arts; he called it the "classical mess".   He found it made him rigid and ultimately hindered him from responding directly & effectively. 

Bruce Lee created a new "style" which he labeled as "Jeet Kune Do".  However, in reality he rejected styles and rejected labels.  Bruce Lee adopted "having no way as the way" as his philosophy.  Only by doing this, he felt, could he purely express his art.

My Programming Philosophy

Although I have been a Bruce Lee fan for as long as I can remember, the story above only popped into my head as I was reflecting on how to describe my approach to programming.
 
Bruce Lee rejected dogma and recognized that loyalty to a "system" will forever impede your ability to truly express yourself.  It will keep you chained to a fixed point and limit your range of motion.
 
I direct this statement towards anyone who:

  • Refuses to code "by hand" in notepad or vi.
  • Refuses to use an IDE, code generation, or other productivity tools.
  • Relies solely on a GUI to get work done.
  • Refuses to use a GUI to enhance productivity.
  • Only uses commercial or ready-made solutions to a problem.
  • Refuses to use a commercial solution to a problem.
  • Refuses to use or evaluate other programming languages.
  • Refuses to use or evalute other operating systems.
  • Refuses to use or evaluate an ORM.
  • Refuses to recognize the usefulness of DB Stored Procedures.
  • Refuses to recognize that sometimes in-line SQL makes sense.
  • Refuses to use frameworks.
  • Refuses to build their own solution.

I'm covering a lot of ground in those statements.  There should be enough room there for me to insult everyone (myself included)...a little bit. 
 
It's very hard to keep a constant open mind; it's even harder when programming depends on conventions.  There needs to be "order" for everyone to stay sane and for the project to actually reach completion and remain manageable.  Ultimately, "conventions" help us cope with the chaos of our existence.  But at the same time, if we become too dogmatic about satisfying "conventions" they will hinder us.  We will spend more time trying to adhere to a "convention" than solving whatever problem originally inspired the convention. 

In Bruce Lee's world, that meant you were lying face down in a pool of your own blood.  In our world, it simply means we spend countless weeks being unproductive (and unhappy) in our jobs.
 
It is important to recognize that for each of the wildly diverse approaches that exist; someone, somewhere is being successful with that approach.  That doesn't make it "right" or "the best"; but it does mean there is something to potentially learn from it.  Provided we stay focused on "goals" and not "methods", we can learn from others and become more effective ourselves.  This does not mean we have "no conventions" rather it means we are not "BOUND by conventions".  It means we're open to improvements.
 
It makes me sad when people of "one camp" know very little about people in "another camp".  The choices they made for one project became their convention, which became their habit, which became their culture, which became their religion.  History is littered with wars that were fought over culture & religion.  With each of these wars, the progress of mankind has been impeded. 

I will never begrudge anyone their choice of technology or development environment; provided they made that choice with an open mind and a clear concept of what they were trying to accomplish and what they were rejecting.  As long as we are all trying to accomplish "goals" and not satisfy "conventions" then we are all, essentially, on the "same page".  Everything else is just details.  Albeit, important details.  :)

"In memory of a once fluid man, crammed and distorted by the classical mess."  -Bruce Lee


Comments  2

Rejoy (8 Mar, 05:26 AM)

cool analogy.. you should write more on the topic, littered with more examples and more Bruce Lee quotes ;-)


Zeus (3 Apr, 04:52 AM)

ditto... you introduced a terrific analogy which is worth exploring in greater depths


Post a comment!


DiscountASP.net   website uptime