Review of "Zen and the Art of Motorcycle Maintenance"
You may have come across any number of articles with the following pattern:
- Zen and the Art of Software Maintenance
- Zen and the Art of Management
- Zen and the Art of Meaningful Meetings
- Zen and the Art of Remarkable Blogging
- Zen and the Art of Management (again!)
- Zen and the Art of File and Folder Organization
- Zen and the Art of Centering web page elements
To my knowledge, the source of this pattern is the 1974 book Zen and the Art of Motorcycle Maintenance by Robert M. Pirsig. It is neither about Zen nor about fixing motorcycles though. Instead it is a lot like Sophie's World: The story is just a pretense to nerd about philosophy for hundreds of pages. But where Sophie explores the history of western philosophy, Pirsig mostly writes about his own ideas.
The study of the art of motorcycle maintenance is really a miniature study of the art of rationality itself. Working on a motorcycle, working well, caring, is to become part of a process, to achieve an inner peace of mind. The motorcycle is primarily a mental phenomenon.
He begins by explaining the difference between "classic" and "romantic" thinking. The classic approach to understanding e.g. a motorcycle is to analyze it, look at the individual parts and their relation to each other. The romantic approach on the other hand is to look at the motorcycle as a whole and admire its beauty.
If you are a software developer like me you probably have a lot of experience in the classic approach, dissecting a problem and splitting it into individual modules and functions.
Many people, the "romantics", are not interested in this work. They see it as dull and uncreative. I get a bit offended by that. I see a lot of creativity and even beauty in my work. But it is really hard to explain to a designer how code can be beautiful.
Pirsing argues that the difference between classic and romantic thinking is not actually that great: The classic approach splits things into its parts, but not indefinitely (even if the smallest level may be atoms). The romantic approach does not split things, but it still splits the world into individual things. So actually, the difference is just the level at which the splitting stops. So now the questions is no longer whether we should split. It is: How should we split?
This thought sounds familiar from software development, too. The real challenge in programming is not to find some implementation, but to find the most elegant abstractions for a problem.
Interestingly, I was even more reminded of concepts from feminist theory, particularly the concepts of situated knowledge by Donne Haraway and especially agential cuts by Karen Barad.
The real cycle you're working on is a cycle called yourself. The machine that appears to be "out there" and the person that appears to be "in here" are not two separate things. They grow toward Quality or fall away from Quality together.
This book drags on forever and many of its metaphors are plain awkward. Still, it is the best book I have read in ages. Many of Pirsig's observations are spot-on. Even if many of the thoughts are not new (anymore), I have not yet found a text that explains them better.
It should also be noted that the roadtrip plot is actually quite atmospheric and nice to read.
I can just repeat what many others have written before: If you have not yet read this book, you should definitely get a copy!