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.
Looking For A New Job?
- Software Engineer at Fairfax County Public Schools
- Senior Coldfusion Engineer - Can work remotely at Eventsquid LLC
- Hiring Senior Cold Fusion Engineers at Giva, Inc.
- Web Developer at Association for Computing Machinery
- SQL/ColdFusion Database Developer at NADAP
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.
@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).
interfacedrivenarchitecture.org opens on my mac as a blank, white page, the only image spilling off the bottom of my meager 19" monitor - genius.
@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.
@Jeff - excellent metaphor - I may have to borrow it :)
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!
@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. ;)
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
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.
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. :)
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.
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.
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 :)