We (Clean Coders) are Samurai.

No, we don't carry katanas, nor do we fight in duels to death. But we do practice Bushido - the way of the warrior - Software Craftsmanship.

For the Software Craftsman, writing code is not just a job; it's a way of life.

I have long been a proponent of Software Craftsmanship.

Miyamoto Musashi

Miyamoto Musashi is the most famous samurai (the original kind from feudal Japan), having emerged undefeated from 62 duels... most of them to the death! So good, was Musashi, that he famously arrived for a dual with a wooden sword he had carve from an oar on his boat ride over. Basically, he showed up to sword fight with a stick, and won.

After a long life as a warrior, and as a swordsman, Musashi adopted a reclusive lifestyle, living in a cave, while he wrote his magnum opus, The Book of Five Rings. In this book he documented his philosophies and his way, and shortly after completing it, he died. That was nearly 400 years ago.

Mushashi was a Craftsman. I often compare his craftsmanship to that of Software Craftsmanship. He exemplifies Bushido, having lived the way of the warrior. His dedication to his craft is legendary. And this is how I knew Musashi, as a legend, until recently.

You see, 4 years ago, my younger son, and later my wife, inspired me to join them in Kenpo Karate. It has been a joy to learn with my family, re-enter the world of martial arts, and practice with the amazing people of Legacy Martial Arts. In preparation for our black belt test, there is some optional reading. To my delight, Master Calentog selected The Book of Five Rings, or rather a translation by Stephen F. Kaufman - Musashi's Book of Five Rings for Everyone. What a great excuse to learn more about Musashi and know him by his own words (translated)!

What follows is a light overview of Musashi's Book of Five Rings. I've selected a few poignant quotes from each book and added a bit of commentary.

Looking in the Mirror

I was struck within the first few pages of the Book of Five Rings. These words, written 400 years ago, by a man I know only by legend, sound so familiar... they sound like... me. Aside from the craftsmanship we share, I have nothing in common with Musashi. We come from different times, different countries, different professions, not to mention that I have not been in a single duel to the death, let alone 62 of them. Yet, over an over again, I found myself shocked at how familiar his words hit me.

Here is an example from The Book of Earth:

"To become well-rounded, it is necessary to see other forms of discipline, and yes, adopt some of the principles into your own craft. Why? Because you will eventually notice all things are the same except for specific characteristics."

Compare that to an entry I wrote for "The Wondering Book - Zeitgeist of the Software Craftsmanship Movement":

Micah's Wondering Book Entry

The Book of Earth

By far, the most verbose of the 5 rings, is about fundamentals. Fundamentals not of swordsmanship, but of any art or craft. I had assumed all 5 rings would be about sword fighting, or battle. I was wrong. The topic is mentioned fleetingly two or three times in the work. The wisdom shared by Musashi is applicable to craftsmanship at large.

"If there is no discipline? How can there be a true realization of an ideal?"

Discipline is the divider between professional software developers, and hacks. Ask anyone at Clean Coders about disciplines, They'll rattle off a long list: Test Driven Development, Continuous Integration, Collective Ownership, etc. These allow our teams to "work in harmony", as Musashi puts it, and ensure quality. Software developers without disciplines cannot assure quality and will find themselves lost in a mess of code.

"Everyone is responsible for their own tools."

Yes! No tool will fit your need better than a tool you make yourself. Maybe there's an open source library that you can modify, or less commonly, a paid product that will solve your problem, if you can afford it. But don't fear the opportunity to build your own tools.

"A technician must be proficient with all the tools of the trade."

I cringe when people label themselves as a "Java Developer", "Frontend Developer", or "SPECIFIC SILO HERE Developer". Why limit yourself? Hear Musashi! Be a Software Craftsman; Fear no tool nor technology!

The Book of Water

Water has a natural flow, as does "the spirit of the thing itself", in our case, the spirit of Software Craftsmanship.

"Practice and performance are the same thing."

First, practice. Do you practice? That is, do you write code off hours, on your own time? Practice is essential if you are to progress on your road to mastery. Furthermore, you must practice the way wish perform on the job. Even on your side projects, utilize the disciplines you use when you get paid to code.

"It is of major importance to use the best tools available for your craft."

A lot of developers start off by learning Javascript. Why? Because it's easy to learn. Too often they stop there. Is Javascript the best tool? Sometimes, for code that has to run in the browser. More often than not, Javascript is a terrible tool, and other programming languages do a much better job. Always be on the hunt for better languages, editors, shell commands, and tools in general.

"Watch as artisans, professionals, and great performers, in the midst of their work, emote with hand gestures and body shifts."

It is a joy to watch masters at work. The precision, finesse, efficiency... it's beautiful. Whether it be martial artists sparring, grand masters in a game of speed chess, or a wood-worker building a table. I am mesmerised by this type of content on YouTube more then I'd like to admit. Add to that, Software Craftsman performing a code kata. Regardless of the craft, the mastery, or lack thereof, is instantly apparent.

The Book of Fire

Fire is passion, and the fire must be fed to excell at your craft.

"Conflict is required for personal growth in every situation where you seek to rise to the highest levels of excellence."

We must leave our comfort zone to grow. Imagine a programmer with 30 years of experience, working on one piece of software, in the same language, using the same tools, year after year. Is he a master? Probably not. He likely has 1 year of experience, repeated 30 times.

Journey is part of craftsmanship. We must be adventurous in our craft, try out new techniques, always learning.

"It is continuous seeking of "the spirit of the thing itself" to reveal more of its own perfection in you, as you, and through you.

As Master C. says: "A Black Belt is a White Belt who never quit." Perseverance is a ubiquitous trait amongst master craftsmen. Seek out challenging problems. Maybe you're intimidated by functional programming languages, or embedded code, or GUI programming. Embrace those fears and conquer them.

"Every beginning has an end, and every end has a beginning. Once you attain a new freedom of mind, spirit, and soul, you will find the end of one path is the beginning of the next path"

What a comfort that is; to know that there will always be more to learn, more to grow, more fun to be had. This is especially true in software, where the scenery is always changing and if you don't keep moving, the industry will pass you by.

The Book of Wind

A delightful list of all the things you don't need to care about.

"Many would propose to teach you "fluff rather than stuff". In the mastery of any art or discipline, absurdities will abound."

There's no way to avoid the fact that mastery requires hard work and years of dedication. That doesn't stop people from looking for shortcuts. Perhaps the most recent shortcut I see programmers reach for, is AI. Yes, AI can be a great tool. I use it from time to time. But in its current state, AI can confidently take you down the road to failure. It takes a skilled practitioner to identify the warning signs and avoid the pitfalls.

"Bragging and foolish behavior may be entertaining to others and permit them to laugh at your gestures."

We all know that guy. It's embarrassing. Unless you're Steven Segal or Hulk Hogan, who's job it is to entertain and make people laugh, humility will serve you well.

"It does not matter what others think about your approach to life and work."

This is a valuable lesson I learned as a teen from my Jujitsu sensei, Mike Sabo. It is a heavy burden to care what people think about you. The moment you stop caring, a weight is lifted from your shoulders and you become free. And once freed, you can flourish as yourself, and as "the spirit of the thing itself".

The Book of No-thing, No-thing, not Nothing

I am still chewing on this book, and I fear I may need the rest of my life to digest it.

Thank you, dear reader, for making it this far through my blog. Please consider reading Stephen F. Kaufman's book - Musashi's Book of Five Rings for Everyone. I am going to encourage our Clean Coders book club to put this one on top of the list.

Now, rather than try to explain no-thing, I will leave you with these quotes.

"My entire philosophy of strategy is summed up in this short book of no-thing. It is not confusing when you think it through."

"The universe is emptiness, which is no-thing."

"Regardless of understanding my Book of Five Rings, you will come close to understanding no-thing, when you realize and accept that there is nothing outside of you that can ever enable you to get batter, stronger, richer, quicker, or smarter."

"In the Way of the warrior, there is no such thing as thought other than the intellectual power you need to understand this terminology."