Zen, Motorcycle Maintenance, And Producing Software

Posted November 21, 2008 at 8:43 AM by Ben Nadel

Tags: Life, Work

I am currently working my way through Zen and the Art of Motorcycle Maintenance by Robert M. Pirsig (thanks Joshua Cyr). I've got a lot more to go, but this morning, the main character said something that I thought was quite profound, especially for me as a software engineer. To paraphrase (as I don't remember the exact words), he said:

The true test of any machine is its ability to produce peace of mind.

I really like this a lot. Although he is talking about machines specifically, I cannot see any reason as to why this cannot be applied to the art of software development as well. I think that what I enjoy most about this outlook is that the "success" of a machine, or a piece of software, is not tied directly to what it does; rather, the success of these items is a sole reflection of how it makes the "user" feel. Does it produce feelings of tranquility and peace of mind?

When I read things like this, it reminds me again how important using methodologies like Interface-Driven Architecture (IDA) really are. IDA is about building software, but building the software is really a secondary concern of the process. The primary concern of Interface-Driven Architecture - its whole reason of being - is to produce peace of mind in the end user. Only once this peace of mind is achieved, does the machine (or software) then get extruded from this end-goal, in a sort of reverse fashion. With IDA, your software is successful because is passes this "one true test" before it is even built.



Reader Comments

Nov 21, 2008 at 9:23 AM // reply »
5 Comments

I wholeheartedly agree.
For many years I have preached the following...

Software needs to make the clients life better. Otherwise the application has missed the mark.
People need to feel that the tools they are given streamline a process and save them effort.
Getting stuff done should be fun, not work.


Nov 21, 2008 at 9:52 AM // reply »
7 Comments

@Ben - That book is truly a great read - the second half just screams. The follow-up, Lila, isn't as good, but makes a great, well, follow-up :)
@Jeff - I mostly agree, but I have to say I think we can run the risk of trivializing some aspects of 'work' by always trying to make work fun. Sometimes that peace of mind that Pirsig refers to comes from persevering through difficult and sometimes unfun (sic - sorry) work, and making it out the other side. Thats not to say we should purposefully make our machines hard to use, but I think we should always expect a degree of effort from users. Otherwise we run the risk of creating high-priests of technology or ourselves (plug for another great book series - Asimovs Foundation).


Nov 21, 2008 at 9:56 AM // reply »
7 Comments

interfacedrivenarchitecture.org opens on my mac as a blank, white page, the only image spilling off the bottom of my meager 19" monitor - genius.


Nov 21, 2008 at 10:15 AM // reply »
5 Comments

@Daren - You have a point.
I like to think that as developers we exist to solve a problem.
That means we address the needs and end goals of the client.
In that process we need to avoid torturing the people we serve.
The Tao De Jing says that "We are the ocean."
Lao Tze was speaking of management but the idea still holds water for us.
We exist to facilitate the successful completion of a business goal.
As such we exist at the bottom of the flow. "We are the ocean."
The work, the effort, the clients are the rivers that create and sustain us.

We should always remember that as developers we are only a tool, and that there is always a point of diminishing return.


Nov 21, 2008 at 10:27 AM // reply »
7 Comments

@Jeff - excellent metaphor - I may have to borrow it :)


Nov 21, 2008 at 10:49 AM // reply »
36 Comments

I reread it again on the flight out to MAX.

Analytical prowess, critical thinking, focus on quality... Lots of fun stuff in there, plus the story is quite interesting. Be sure to read the Afterward that was added a few years later. I wont give anything away, but it is important you read that fully (at the end of the book).

At max I was thinking I would get back into philosophy and find ways to tie that into my development time and blog about it. If only there were enough time!


Nov 21, 2008 at 11:04 AM // reply »
4 Comments

@Ben - I'm glad you're reading this book. I enjoyed it about 7 years ago myself after my dad, the philosopher wanna-be, recommended it.

"Peace of mind" is zen. It's clarity and simplicity, without clutter. Too often this is missed in the hype of the newest widget, fancy UI, or other bells and whistles. Listen to me... sigh... I sound soooo old. ;)


Nov 21, 2008 at 11:21 AM // reply »
51 Comments

That's one of those books I've tried reading several times but get stuck in the middle and never finish it. One of these days....

FYI - this book is online: http://virtualschool.edu/mon/Quality/PirsigZen/ - also see the Wikipedia entry for links to audiobooks, and more info.

And someone recently did a motorcycle journey following Pirsig's orginal route http://www.whitehorsepress.com/product_info.php?products_id=6042


Nov 21, 2008 at 11:58 AM // reply »
11,241 Comments

@Jim,

I can understand getting stuck in it. The story is very interesting as is the philosophy; my issue is just he jumps around a bit too much. Granted, my mind has been very busy lately, but with so many jumps, my mind will start to wander. I'll finish it this time, but I think I will need to re-attempt it later when my mind is not so saturated with racing thoughts.


ike
Nov 24, 2008 at 4:00 PM // reply »
78 Comments

I have to agree with JeffG too... I remember a conversation I had with a friend a while back in which I mentioned "software that's fun to use" being described in a "white paper" and he kind of wrinkled his nose and said "no, there is software that does that, but they're called games". He obviously missed the point that productivity suffers when software is not fun. :)


Nov 25, 2008 at 3:20 AM // reply »
14 Comments

Ben, it's a few years since I read the book, but that's the passage that still sticks in my mind. But I interpreted it slightly differently: rather than peace of mind for the user of the machine, I understood it as the mechanic who experiences a sense of calm when the machine has been well engineered.

Like the notion of "code smell", I find this is an intuitive way of knowing when you've done a good job and achieved the optimal balance between simplicity and complexity.


Nov 25, 2008 at 8:07 AM // reply »
11,241 Comments

@Julian,

I think these are all related. Yes, something can be quite well engineered and that in and of itself can bring a sort of peace to those who have a "classical" understanding of the machine. However, when the machine can be appreciated by those who have a classical understanding as well as those who have a romantic understanding of it, then I believe that will bring about even more peace of mind.


Nov 25, 2008 at 8:41 AM // reply »
51 Comments

My big difficulty reading this book is I get divided between reading as a motorcyclist or a philosophical book. :)

I was trying to put my motorcyclist point of view into words but just can't. Just go sit down in front of an older BMW airhead and REALLY look at it for awhile. That's Zen :)



Post A Comment

Comment Etiquette: Please do not post spam. Please keep the comments on-topic. Please do not post unrelated questions or large chunks of code. And, above all, please be nice to each other - we're trying to have a good conversation here.

Please review the following issues:

Author Name:


Author Email:

Author Website:

Comment:

Supported HTML tags for formatting: <strong>bold</strong>   <em>italic</em>   <code>code</code>







  • Help Wanted - Find Your Next ColdFusion Job
Ben Nadel's Company - Epicenter Consulting Recent Blog Comments
May 22, 2013 at 5:35 PM
Script Tags, jQuery, And Html(), Text() And Contents()
This is still an issue 2 years later. jQuery is supposed to remediate these cross browser issues, no? I have been unable to find any statement from the jQuery team calling this behavior "by de ... read »
May 22, 2013 at 12:44 PM
Ask Ben: Query Loop Inside CFScript Tags
In cf10, if you call a function that has: local.result = {}; local.result.msg = ""; local.svc = new query(); local.svc.setSQL("SELECT * FROM..."); local.obj = local.svc.exe ... read »
May 22, 2013 at 12:29 PM
Strange Interaction Between DeserializeJson(), ArrayContains(), And Database Values In ColdFusion
@Ben: What version of Java are you using? Also, did you test users.id to see what Java reports as the data type? I wonder if it's not a Java primitive data type, but getting returned as something ... read »
May 22, 2013 at 11:47 AM
Strange Interaction Between DeserializeJson(), ArrayContains(), And Database Values In ColdFusion
@Dana, Awesome - so it looks like this bug was fixed in ColdFusion 10. Thanks so much for double-checking that. ... read »
May 22, 2013 at 11:37 AM
Strange Interaction Between DeserializeJson(), ArrayContains(), And Database Values In ColdFusion
When I c&p and run on cf10, I get: Selected User IDs: 1,4 User 1 selected: YES - YES User 2 selected: NO - NO User 3 selected: NO - NO User 4 selected: YES - YES User 5 selected: NO - ... read »
May 22, 2013 at 11:27 AM
Strange Interaction Between DeserializeJson(), ArrayContains(), And Database Values In ColdFusion
@Tom, Good thought, but no dice. Both of these still exhibit the same behavior: users.id[ users.currentRow ] users[ "id" ][ users.currentRow ] It's just something whacky happening with ... read »
May 22, 2013 at 11:07 AM
Strange Interaction Between DeserializeJson(), ArrayContains(), And Database Values In ColdFusion
Could your problem be that "users.id" is actually an ARRAY, not a single value? Perhaps try it again with "users.id[1]" (I only have CF8 here at work). ... read »
May 22, 2013 at 7:52 AM
Nested Views, Routing, And Deep Linking With AngularJS
Hi, Just a quick thank you. As it happens, for my own purposes, the pending ui-router work being done in native angular is likely the one I'll adopt, but your exploration, code and documentation of ... read »
InVision App - Prototyping Made Beautiful With Prototyping Tools