Tuesday, March 15, 2016

A Fresh Coat of Paint for the Jong

Spring is just around the corner so I thought I'd do some early Spring cleaning and freshen up the look of this blog a little bit. You may have noticed that the banner image has been spruced up. I brought back the colored version and with the help of Gimp and a couple of filters, added some effects to reflect dynamism, circularity, and enlightenment through practice. I was really pleased with how it turned out.

I also edited the blog description to give a more accurate sense of what I'll be writing about here. I realize the description is a bit long but I also wanted to give a sense of the variety of topics as well as the eventual connectedness of everything I'm posting. I think the description covers all of the articles I've posted here so far.

Some of the terms up there may not be familiar to everyone so I'll give a rundown of what all these mean in the context of this blog.

Explanation of Terms


Patterns.  This will usually refer to software related concepts like design patterns, coding patterns, test patterns. Occasionally, I may write about learning patterns, organizational patterns, and behavior patterns. Anything else, of course, will just fall under the Merriam-Webster definition, which is "something that happens or is done in a regular or repeated way."

Metaphors. I love metaphors and analogies. People often tell me that I have a knack for making them. I guess I'm all right. I like using them because they help me make connections between different aspects of my life and experience. Metaphors help give me a sense of purpose and destiny, as though things were not just happening randomly. I guess it's just human nature to look for some kind of meaning and direction in things. It's too scary to think that we're just bouncing around in an infinitely large pinball machine that is the universe, completely at the mercy of chance and circumstance.

Agile Software Development. If you're involved in software development in any way and haven't heard about agile software development by now, you've either been living under a rock, in a coma, stranded on a desert island, or abducted by aliens. If you've wandered in here accidentally and are still reading this out of curiosity, agile software development is a way of developing software that values individuals and interactions, working software, customer collaboration, and responding quickly to change over most other considerations. 

You can read more about it in the Manifesto for Agile Software Development. As of this writing, that manifesto is just a tad over fifteen years old.

Craftsmanship. This, I believe, is a natural consequence of the kind of thinking that's involved in developing software with agility. You can also see it as a pre-requisite to agility. Whatever your perspective, software craftsmanship also has its own manifesto which you can find at manifesto.softwarecraftsmanship.org

I have signed both this manifesto and the one for agility. Software craftsmanship means committing to writing well-crafted software, steadily adding value, being a responsible member of a community of professionals, and developing productive partnerships.

ShokuninClosely related to craftsmanship, shokunin is a Japanese word that roughly translates to "craftsman" or "artisan" but it encompasses more than that. Some of the essence of the word as it is used in its native context is often lost in translation to English, similar to how the Martian word "grok" cannot be expressed adequately in any of our earthly languages by words like "understand", "intuition", and "immersion". I get a sense that "craftsman/artisan" is to shokunin as "understand intuitively" is to grok.

Kaizen (改善). Wikipedia defines this Japanese word as "improvement." In this blog, I'll use kaizen in the same way that the folks who subscribe to lean thinking and methods use it. The idea revolves around groups of people always doing things that will lead to changes for the better.

Zanshin (残心). This is a term used in Japanese martial arts and refers to a state of relaxed awareness and having a mindful connection to things in your surroundings. I guess the ultimate level of zanshin is when you become aware of your connection to the entire universe, as was said to have happened to O'Sensei Morihei Ueshiba, the founder of Aikido. I have been studying Aikido since 2004 and have found many parallels between its philosophy and the other things I write about here.

Genchi Genbutsu (現地現物). Another Japanese term you can read more about in Wikipedia. It means "go and see" and it's popular with the lean folks, who adopted it from the Toyota Production System.

Shugyo.  This term again comes from Japanese martial arts and it refers an "austere training" that serious practitioners undergo to develop their skills to the fullest. You can read more about it here: http://shugyo.com/what-is-shugyo/

Intentional Practice. Related to shugyo, it refers to practice that is done purposely in contrast to experience that is gained incidentally, accidentally, or through actually doing something. Intentional practice is different from on-the-job training. It's more like going to spring camp so you can work on getting better at specific skills without the pressures of being in actual game situations. 

For software developers, intentional practice is exemplified by things like going to code retreats and coding boot camps. I find it kind of ironic that doctors and lawyers call what they do as their "practice." On the other hand, we software developers call a lot of the things we do the same thing. Kind of scary when you think about it.

Aiki (合). This forms the root of the name of the Japanese martial art of Aikido (合気道) which was created by its founder, O'Sensei Morihei Ueshiba. It has roots in Daito Ryu Aiki-jujutsu, which is very effective but more suited for the battlefield. Aikido practitioners aim to be gentler and more humane in applying the same kind of techniques and strive for the higher ideal of mutual preservation (ai nuke) rather than destruction (ai uchi or mutual kill).

Random Connections. Finally, I mention this in the blog description because I find many similarities and relationships between Aiki philosophy and the things I do and the way I think when I'm doing software development. I feel that making these connections deepens my understanding of each of them and this allows me to appreciate them more fully.

And finally,

Jong. Short for muk yan jong, this refers to the wooden dummy that is shown in this blog's title banner. You may have seen the jong being used as a practice aid by Chinese martial artists. Its use in modern times was popularized mostly by practitioners of Wing Chun and Bruce Lee's Jeet Kune Do. I use it here to give a sense of connection between the ideas of intentional practice to sharpen my software development skills, shugyo, and my training in Aikido and related Aiki arts.

What's Still to Come


As I mentioned in a previous post, I have finally started working on a book about test-driven development. I am also eagerly anticipating word from the Agile 2016 conference program selection committee on whether they are going to accept one or both of my session proposals about TDD. If by some stroke of extremely good fortune that happens, then I will be posting more articles related to the TDD book and the presentations. In the meantime, I'll be keeping my fingers crossed until the end of March.

No comments: