“In the beginner’s mind there are many possibilities, but in the expert’s there are few.” – Suzuki

As programmers of an application or feature, we quickly develop our own preconceptions as to how the software should work. Every day that we spend working on something, the use patterns of that feature become more and more hard wired into our brain. The end result is often a piece of software that works the way that we would expect it to. However, once that software gets released into the wild, many people are going to be using it, all of whom have never seen or touched it before. As a rule of thumb, each of those people will approach it with different perspectives. Each person will use it in a different way, and have different expectations of what it should and shouldn’t do.

Requirements are always necessary, but it would be impossible to capture everything in the requirements that any user would want or need, especially when it comes to the more subtle areas like UI workflow. Important use cases can also go completely undetected until a real end user actually sits down to work with it. Because of that, it’s important to remember that even the best requirements are not guaranteed to be intuitive or even correct. To help with this, we’ll need to bring in a Zen Buddhist master.

Zen Buddhism in Application Development

There are a handful of books I’ve been fortunate enough to stumble across that have changed me in some way. Those books are the ones I keep going back to, to remind me of that moment when I’d learned something new, yet felt like I’d known it all my life. Zen Mind, Beginner’s Mind by Shunryu Suzuki is one of those books. In it, the author and Zen master teaches the importance of “beginners mind”, which is the concept of constantly seeing with new eyes. It’s a teaching that he recommends for all aspects of daily life, though I doubt he ever imagined software development would be on that list.

As developers, we need to see our work from two perspectives:

  • Expert’s perspective: From this view, we make sure that the software is meeting the known requirements, which is our primary goal.
  • Beginner’s perspective: From this view, we try to see the software as though we’ve never used it before and constantly ask the question, “Does that make sense?”

These may seem very similar, but they’re not. For instance, let’s create a signature in Microsoft Outlook.

Requirement: Allow the user to specify text to be automatically appended to every outgoing email. (Sounds simple enough…)

Implementation:

  1. Click Tools > Options.
  2. Click the “Mail Format” tab on the options dialog.
  3. Click the “Signatures…” button on that tab pane. This brings up the “Create Signature” dialog.
  4. Click the “New” button. This brings up the “Create New Signature” wizard dialog.
  5. Enter a name for your signature and select that you want to start with a blank signature. Now click the “Next” button.
  6. Type your signature. When you’re done, click “Finish”.
  7. Click “OK” on the “Create Signature” dialog.
  8. Your new signature is now added to a list of signatures on the “Mail Format” tab pane. Select it and click OK.

Do those steps fulfill the requirement to create a signature? Check. Would a new user to Outlook have any clue how to do that without digging through help? Fail. This is a clear case where the development team did not look at final product and ask themselves, “Did that make sense?” The obvious answer is no.

There was a fantastic blog post recently called “The Great Ubuntu-Girlfriend Experiment“. In this post, the author has his girlfriend use his latest installation of Ubuntu as a way of getting a beginner’s perspective on it. He winds up with some very interesting conclusions, specifically “that the geeky programmers and designers assume too much from the average user”.

End users are demanding more and more ease of use out of the box without having to go to help (much to the dismay of our tech writer). Think about the Geico caveman… buying insurance with Geico.com is so easy even he could do it. Ease of use and intuitiveness are so in demand that Geico launched a massive marketing campaign with that as its centerpiece. The commercials don’t say anything about price, customer service or any of the details of their policies. It’s just easy to use… and that pulls in huge numbers of people.

Putting It Into Practice

Having beginner’s perspective on your own software sounds much easier than it really is. Stepping back and using the software without preconceptions involves being honest with yourself. Sometimes it’s easier to give in to the fact that the software might meet the requirements, and that task can be considered done. However, it’s those little touches like usability that can bring an application to the next level, and move it up from good to best. Finding those usability issues can only be done by being objective about your own work. It’s far better to find those issues during development than when an end user first sits down to try the software.

Whether you use Zen mind, caveman mind or girlfriend mind [ducking behind my chair], try and take the time to step back and ask yourself if you would love your software just as much if you were trying to figure it out for the first time. Just like meditation, it’s a practice that gets easier every time you do it. Soon, it should become a normal part of your daily approach to software development. Of course I’d be lying if I said that I had actually attained this goal, but I try.