May 2011

The UX Force is All Around You (Pt. 1)

User experience is an implied science within engineering, especially when what you're building is an application. Your creation is never fully realized until it gets into the hands of its users and, ultimately, makes their lives easier.

With the advent of Drupal 7, the importance of user experience (UX) continued at Drupalcon Chicago. One of the biggest hurdles to its consistent adoption is articulating its principles to developers.

How do we fix this? I think the solution exists in the answer to the following questions:

  • How can adoption of common UX principles make someone a better coder, ultimately a Drupal engineer?
  • Where should one start their research?
  • How do UX principles apply to common development workflows?

A Quick Background of Drupal and UX Strategy

For those not aware, the integrating UX strategy into Drupal as a pillar of development isn't new.

The debates about the direction of Drupal 7 a few years ago have produced a great revitalization for content creators out of the box, much of it attributed to the conclusions from the D7UX project.

The conversation has continued through Jeff Eaton as he broke down the challenges (user experience, deployment, and missing APIs) in Drupal 8.

Leisa Reichelt also expounded upon UX strategy's place within Drupal development. Her solutions of pattern libraries, a more robust UX community, and consistent UX lessons within the Drupal space are great starting points.

The importance of UX strategy as part of three legged stool of Drupal's success, to me, was re-emphasized during Dries' presentation at DrupalCon, giving us all a clear direction as we travel down the path towards Drupal 8.

So what is the biggest hurdle to a successful UX implementation with Drupal 7, and hopefully Drupal 8? I think it can be summed up via a simple question:

  • Why, as a developer, do I really care?

After all, I build tools. I utilize API's. I get geeked out by helpers, handlers, and hooks. Let the designers and management work with the client to figure out what works for them. As an engineer and blossoming UX nerd, I shared this same sentiment a few years ago. The answer, although obvious, can be difficult to focus on during code sprints.

Your creation is never fully realized until it gets into the hands of its users and, ultimately, makes their lives easier.

Again, it sounds simple, but elevating your creations from function to use is that extra step often overlooked. We typically leave it to a few form API elements and call it a day. This is bad because you assume that 'radios' or a 'select box' is the best use of your feature, when in fact maybe a multi-step form or vertical tab with contextual help is better.

Ok, UX Strategy in Drupal is Important. How do I Start?

There are a ton of UX strategies that we can use in our arsenal, but let's start with these first three:

  1. Clarify the Value Proposition
  2. Design for the 80%, Make Repetition Easiest
  3. Task Analysis

Clarifying the value proposition talks about how to take a plethora of ideas, perhaps in a brainstorming session, and concentrate them down into a focused goal. It's designed to keep your client's within scope, to keep you from pursuing feature fatigue, and provide a granite base for all future features. This principle keeps clients coming back because they feel you understand their needs, whether they want to be instructed through feature, informed about parts of a feature, or revealed the underpinnings of a feature.

Designing for the 80%, including making the most repetitive task the easiest, is a very common principle. It refocuses the developer to push the priority of edge cases below those of the common content creator or user interacting with your feature. It also requires you to do a little more work in finding out what part of your feature is the most commonly used. That method, exposed to the user, should be easiest. This is where low-fidelity wireframes play an integral role! Clients love that you make their lives easier, especially if they represent content creators.

The last principle, task analysis, is actually related to testing and automation. Using some of the principles discussed at our Drupalcon sessions and previous blog posts, writing simpletests and deploying them via Jenkins requires you to break down the assumptions within a task to the finest detail. The technical teams of clients appreciate this strategy because they love learning about new technologies that automate processes reenforcing principles elaborated in help documents to content creators, ultimately making their lives easier as well.

We'll break these down over a few more blog posts. My plan is to combine the lessons Leisa has discussed, some tips and tricks I've picked up at various UX conferences, and my experiences as a Drupal developer over the past few years.

Just like the Drupal API, UX is All Around You

The more our community hops on board the UX train, regardless of whether some of us believe in productized Drupal distributions or insanely flexible API systems (or both), the more we'll eat our own dog food and not fight each other into the horizon.

I believe UX methods provide a pathway to us all being Drupal jedi engineers, not just developers.

Update 7/11/11: Here is part 2.


For more Drupally goodness, check out our sessions from this year's DrupalCon Chicago!

Comments

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <hr> <blockquote> <h3> <h4> <h5> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.
  • You can enable syntax highlighting of source code with the following tags: <pre>, <c>, <cpp>, <drupal5>, <drupal6>, <java>, <javascript>, <php>, <python>, <ruby>. The supported tag styles are: <foo>, [foo].

More information about formatting options

By submitting this form, you accept the Mollom privacy policy.
Stay Informed

Sign up now for the Treehouse Newsletter.