Supreme Ultimate Software Engineering
A lot of people talk about the Chinese Yin/Yang symbol as representing balance, but I don’t think that many people actually know what the symbol represents.
The symbol, also known as the Taiji (yes, Tai Chi), is also referred to as the Supreme Ultimates. They are two completely opposite energies and both are necessary for movement and life. They are also highly relevant to software, management, and business. Yang is represented by the white swirl and Yin by the black swirl.
Yang
Yang energy is described as “masculine, obvious, visible, and direct.” A lot of more energetic kung fu forms are described as being ‘extremely Yang.’ For instance, the Fu Dragon Sword form and the Cyclone broadsword form are very Yang. The forms are filled with kicks, jumping, and powerful, flashy sword techniques.
Yin
Yin energy is described as “feminine, subtle, hidden, and indirect.” Many classic Taiji forms, particularly the long form and the Yang double edged sword form, are very Yin. Power is generated through the legs and waist and is not obvious unless the practitioner is in contact with you, which is why internal artists tend to say ‘the less you see happening on the outside, the more that is happening on the inside, and vice versa.’ Consider someone launching a haymaker punch versus pushing a refrigerator. One has a lot of wind up and mostly makes use of localized strength in the arms and shoulders. To push a refrigerator or a car you have to sink your weight, drop your elbows, and put your legs into the effort.
In my opinion, most of the Taiji Chaun you see in the United States is about 100% Yin. For a better, more balanced approach, look at either Chen Taiji practioners or Old Yang style practioners. You’ll see a mixture of soft, slow techniques along with devastating fa jin (explosive, concussive releases of energy).
Applications in day to day life
In terms of our everyday life, Yang is reactive, Yin is contemplative. Someone that is very Yang might habitually expend a vast amount of undirected energy, reacting to situations without thought. On the other hand, someone that is very Yin might spend all of their time planning and dreaming without ever actually executing on anything.
Applications in programming
One place this definitely shows up is in software engineering (Micheal Lopp discusses this at length here). If we were to look for two polar opposites in programming, I’d say that hacking is very Yang and that architecting is very Yin. Someone that simply blasts out code without taking the time to think about the approach that they are going to use is going to end up with a lot of redundant, brittle code. Someone that favors elegance and adherence to design patterns in every situation is probably never going to ship a finished product.
Clearly, the same kind balance the Taiji expresses is vital to programming. Contemplate, then act. Review what has changed since you started, revisit your plans, and act decisively again.
January 30th, 2008 at 11:12 am
This is an interesting comparison, and I can see the argument as both a practitioner of taiji, and a software developer. To me, hacking is acting with intent, but without direction. It’s like un-vectored force. Yes, you’ll get somewhere, but where? On the flip side, an elegant architecture never fulfilled an order. You have to have both thought, and action, in order to make software. If you want to carry the taiji argument to its logical conclusion, one could say that architecture, patterns, requirements, and design make up the root energy, or chi, and programming, unit testing, and refactoring make up the movement.