Software Architecture Principles by Bruce Lee – 4

The techniques, though they play an important role in the early stage, should not be too restrictive, complex or mechanical. If we cling to them, we will become bound by their limitation. –Bruce Lee

This lesson highlights the limitations of any approach, architecture, or methodology.  All methodologies and architectures have limitations; this is natural.  We learn techniques and patterns in order to provide the framework in which we as practitioners (developers) operate, but we must always be aware that all of them have limitations.  The mental framework that our experience gives us prepares us to know which technique to use when the appropriate situation arises.  We should never begin any endeavor favoring a specific technique, solution, or tool.  We should use the best tool at the appropriate time for that unique situation.

Walking into a sparring match (or combat) expecting to win with a right hook is similar to walking into a solution expecting to use a specific pattern and implementation.  In both pain is sure to follow.


Software Architecture Principles by Bruce Lee – #3

“Any technique, however worthy and desirable, becomes a disease when the mind is obsessed with it.” – Bruce Lee

Some may think this whole software ideas from Bruce Lee thing is crazy, but I feel that this quote will resonate even with skeptics.  Every few years we see this.  It’s the “shiny hammer” syndrome that many developers become taken with.  This single concept has ruined more software than anything else I can think of. 

Remember when Linq came out?  People went overboard with it in a combination of fascination and idealization that mostly resulted in obfuscation and performance degradation (I almost channeled Don King on that one).  The end result was a train wreck. 

Ultimately all the new features we get on any platform are just tools and we pick the right tools for the right job.  The same holds true with design patterns and transports.  The fervor over ‘REST in the enterprise’ is an example of the shiny new hammer at work.  Learn the tools and learn when and where to use them. 

Software Architecture Principles by Bruce Lee – #2

“There is no mystery about my style. My movements are simple, direct and non-classical. The extraordinary part of it lies in its simplicity.” – Bruce Lee

Simplicity is of utmost importance in good software architectures – as it is in Jeet Kun Do.  All things should be simple.  Power and flexibility naturally extend from simplicity if for no other reason than that there is less to “get in the way”.  Simplicity is a common and recurrent theme in Bruce Lee’s writings and teachings.  It is also common in the writings of every leader in software architecture going back decades. 

What exactly simple is can be very subjective in code, but complexity usually smacks you right in the face like a one inch punch.  The only real teacher is experience.  Hopefully after a few bumps and bruises you know what works in your software architectures.