Zen, Motorcycle Maintenance, And Producing Software

Posted November 21, 2008 at 8:43 AM

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.

Post Comment  |  Ask Ben  |  Permalink  |  Print Page



Learning ColdFusion 9 - ColdFusion 9 tutorials, samples, examples, demos

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 »
5 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 »
5 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 »
5 Comments

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


Nov 21, 2008 at 10:49 AM // reply »
32 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 »
49 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 »
6,516 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 »
6,516 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 »
49 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 Comment  |  Ask Ben

Recent Blog Comments
Nov 20, 2009 at 11:32 PM
Five Months Without Hungarian Notation And I'm Loving It
I've used headless camel case for years for not only ColdFusion variables, but also SQL tables and fields... pretty much everything involving code. I also subscribe to the "don't abbreviate and clea ... read »
Nov 20, 2009 at 11:00 PM
Five Months Without Hungarian Notation And I'm Loving It
@Marcel, Yeah, I always err on the side of longer but more readable variable names. As for the camel casing of CF methods and the headless camel casing of custom items, I get around this by always ... read »
Nov 20, 2009 at 10:56 PM
Five Months Without Hungarian Notation And I'm Loving It
I use the following and love it: my.namespace.MyComponents.functionMethodsOrUDF() CONSTANT_VALUES_OR_PROPERTIES One thing I always try is to CamelCaseBuiltInColdFusionFunctions() so others can tell ... read »
Nov 20, 2009 at 5:38 PM
Learning ColdFusion 8: CFImage Part I - Reading And Writing Images
Hi Ben, Great article. I've been looking around to see if ColdFusion image engine can programatically create the following "wrap around" effect: http://www.creativepro.com/article/photoshop-s-she ... read »
Nov 20, 2009 at 5:35 PM
Maintaining ColdFusion Sessions Across SMS Text Message Requests Without Cookies
@Dave: I talked to Gert he suggested: <cfhttp method="get" url="http://{some cf website}" result="stuff" addtoken="yes" /> Note the addition of cfhttp attribute addtoken. That should persist y ... read »
Nov 20, 2009 at 5:23 PM
Maintaining ColdFusion Sessions Across SMS Text Message Requests Without Cookies
@Todd, Ahh, gotcha, yeah that makes sense. ... read »
Nov 20, 2009 at 5:17 PM
Maintaining ColdFusion Sessions Across SMS Text Message Requests Without Cookies
Ben, sorry if I didn't make this clear. You can make it work like that if you want, just put <cfset session.foo = 1> (and <cfset application.foo = 1>) in your OnRequestStart() and it reve ... read »