Today is a good day to code

The Art of Mastery and Software Development

Posted: December 31st, 1969 | Author: | Filed under: Uncategorized | No Comments »

The Art of Mastery and Software Development

Picture of IrvinFor the past few weeks I've been reading about business in the book The Art of Business. In the book the author, Raymond T Yeh quotes the movie “Hero,” and cites the 3 levels of swordsmanship. In the book he uses the 3 levels to describe the road to the art of mastery.

The art of mastery is the level at which the warrior, or in this case programmer, works within his Tao. At this level the warrior is capable of, my favorite quote from The Art of War by Sun Tsu, winning without fighting. The goal of the programmer in this framework is to write software without regard to programming language, or difficulty of realizing the design. The master programmer can solve problems in the business with the view of the business in its entirety, not just solving the problem as it exists at that moment.

The three levels are as follows:

  • Sword and Man are One
  • Sword in Mind, No Sword in Hand
  • No Sword in Hand or Mind

I find that these three levels can be applied easily to the art of programming. The interesting thing is that most developers stop at the first level, where “Sword and Man are One.” By that I mean that they learn the language, its syntax, and its nuances. Perhaps they even begin to learn the fundamentals of software design, but they stop there with that one language. They never really learn the art of programming, they merely know how to program. They can find ways to solve most business problems with their language, even if it isn't the best one for the issue. That many stop here does not mean that they are bad programmers, or even that they are not experts, they are simply not masters.

The second level is the level at which software developers begin to embrace programming as a whole, as a method of solving life's problems and inefficiencies. At this level programmers will have branched out and realized that language is just syntax, at the heart of software development are philsophies of learning and thinking. They begin to realize that the software that they write is just an extension of the way they think. They also realize that the pursuit of the second level has begun to change the way they think. I believe that I am in the middle of the second level, but I still have a long way to go.

The third level of “No Sword in Hand or Mind” is one that very few developers will reach, usually because they will have been promoted to a higher level in the organization or will have started their own company. Software engineers that reach this level will think more in solving life's problems through software. They will not care about particular languages or methodologies, and can move between them easily. Their approach will always be balanced perfectly between complexity and performance. They will rarely need to refactor any of their code.

Its sometimes hard to put your goals in perspective. For most people the level where “Sword and Man are One” will be more than enough. However, those who truly yearn for learning and belive that their quest for understanding the art of programming will never be complete, should study “The Art of War” by Sun Tsu. It is truly a must read for everyone, but especially those working in some type of enterprise where there are many ways to accomplish success. And yes, working for a Japanese company has helped rekindle my desire to understand eastern philosophy, and apply it to my life!