Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / All-Topics

How to use Miyamoto Musashi’s Philosophy to Become Better Software Crafter

5.00/5 (4 votes)
27 May 2018CPOL8 min read 3.5K  
We all have our graveyard of unfinished projects and ideas. That is because it takes hard work to make good software.

Motivation is limited. Remember when you had that great idea about that app. Maybe you even started working on it. That app was your ticket to freedom, escape from 9 to 5 rat race, and the mean for you to become a millionaire. Where is that app now? Maybe you even started off hard and finished few features of your idea. But have you finished it? Did you accomplish everything you wanted to?

We all have our graveyard of unfinished projects and ideas. That is because it takes hard work to make good software. Making a ‘Hello Word’ and finishing that 101 course was never an issue, but making full-blown working application, that is competitive on the market requires a lot of work, knowledge and planning. And all those activities require motivation. However, it is not a standard “I will run for half an hour today and never again” type of motivation. For this project, we need marathon-type motivation, the one that lasts a really long time.

Image 1

In general, this is the motivation that we need to have in our every endeavor. If we want to succeed in our current workplace, be a good team leader, make a new app or start our company, we need long-term motivation that will get us through hard times. We need to reach that tough-professional mindset and then just stay at that level without burning out. I’ve found that this is a completely different challenge from all the technical stuff I needed to learn and do. This was the task I tried to solve this with philosophy. I am renewing this motivation daily, using lessons from the wise people from the past.

About Miyamoto Musashi

In the past, I wrote about Sun Tzu, Neitsche, and Marcus Aurelius. What has Miyamoto Musashi done in order to become part of this group? Well, he is one of the greatest swordsmen in Japan. Apart from that, he was philosopher, writer, painter and ronin. He is famous for never losing a duel, and there were sixty of them, and for inventing unique double-bladed technique. Of course, there’s also his book about the philosophy of strategy – The Book of Five Rings.

Image 2

Miyamoto Musashi was born into a samurai family in Miyamoto village in the Harima province. His full name was Shinmen Musashi no Kami Fujiwara no Genshin. Later, Musashi took his first name after his home place – Miyamoto village. His father was very hard on him, and left him or died when Miyamoto was nine or ten. He had his first duel when he was just thirteen.

After that, he won sixty more duels, becoming the samurai with a record number of duels won. To put things into perspective, next on the list is samurai Itō Ittōsai with thirty-one won duels. He also created a technique called – nitōichi (two swords as one), in which samurai uses both a large sword and a “companion sword” at the same time. By applying harder ways of training, he was able to control both swords in each hand, something that is quite regular in today’s movies but was unorthodox back in the day.

Throughout his book – The Book of Five Rings, he takes a philosophical approach to swordsmanship and war in general. He implies that the way of the Warrior is more than it meets the eye. He uses the term “true strategist” for someone who mastered many arts and areas away from the sword and fight, such as tea drinking, writing, laboring and painting.

Musashi’s quotes and applications

Finally, let’s explore some of the Musashi’s best quotes and see how we can apply them in our everyday work.

Do nothing that is of no use.

How many times have you tried to predict clients’ needs and completely overengineered your solution? For me, this happened hundreds of times. To paint you a picture, it ended up with me doing long hours to remove “features” that I predicted a client is going to need because they were messing up the whole solution. We have a pretty good principle as a part of extreme programming practices called – YAGNI. This is an acronym that stands for “You aren’t going need it”. It is good to be reminded of this.

Image 3

Another good principle from XP that can be translated to this is “do the simplest thing that could possibly work”. We apply this principle when we practice  TDD, continuous integration and refactoring. For me, this is a good example of how a simple line from a philosophy book reminds us that we shouldn’t overcomplicate our solution, that we should test it and that we should be careful with integration.

Think lightly of yourself and deeply of the world.

A while back, John Sonmez from Simple Programmer calleed attention to the problem in the industry that we have. To put it plainly, a lot of software developers are jerks. I get it, we are nerds that are well paid. We are intelligent, creative and a lot of us are hard-working. However, the truth is that a lot of us have overblown egos and act entitled. Especially when we are younger, we tend to be arrogant and look down on the colleagues and other professions. Point our finger at everyone who makes the smallest mistake or bug and takes ‘holier than thou’ attitude when we do the same.

We must remember that this is can change. Soon, we may not be the top dogs and as we get older, the brain cells that we rely so heavily on might betray us. Remember what Mike Tyson said after gambling away his whole success and wealth: “If you’re not humble, life will visit humbleness upon you.”. Remember, you might not be so important.

You can only fight the way you practice.

As we mentioned previously, Miyamoto Musashi invented the technique for fighting with two swords. Samurais usually had two swords, a long sword – heavier, longer swords for fighting long range battles, and a companion sword used for close range duels. To be able to use them both Musashi practiced with two long swords, holding one in each hand. Then, if he needed to use the companion sword in a real battle it was easier for him to do so.

Image 4

There is a nice line from the book The Developer’s Code: “In the end, regardless of where you are on the development hierarchy, keep coding. It’s where you’re most valuable.” It is good if you are progressing in a company that you are working for, you are a team leader or your business is taking a lift, never forget where is that rooted. Don’t forget to be ready if times get hard and not so bright as now.

Today is victory over yourself of yesterday; tomorrow is your victory over lesser men.

This is kind of a sequel from the previous quote. Continuous improvement of yourself should be one of the most important things in your life. There is always something new that you need to learn; technology is moving fast. Every day you need to calm your ego down and realize that you don’t know everything and that there is a lot more to learn. Remember, you can not learn something that you think you already know.

You should not have any special fondness for a particular weapon, or anything else, for that matter. Too much is the same as not enough. Without imitating anyone else, you should have as much weaponry as suits you.

Although a lot of software gurus, including John Sonmez whom I mentioned previously, are suggesting you should specialize, I am kind of against it. This quote reminds us that we should know a lot of things and I don’t mean  only technology-wise. To use another quote from Robert A. Heinlein – “A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects”.

Image 5

As a software developer, you should know good engineering principles, several languages, architectural patterns and so on. You should also be able to apply those to your client’s needs. When we are talking about clients, you should know how to charge your services, and how the economy works. Not to mention that you should balance all this with your personal life and family. Is it complicated? Yes, it is. Lucky for you, you are not an insect.

Conclusion

Miyamoto Musashi was one great samurai. His teachings remind us to stay down to earth, practice a lot and be prepared. Of course, the real goal here is to get yourself in the right mindset and make good software. You can use anything you like. This article, technical books or non-technical books. Be creative and be productive, that is the dream.

Boy, it was fun writing this article. Hope you liked it too.
Thank’s for reading!

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)