More Facebook Visualizations in the Wild

I knew that drawing visualizations of your Facebook friends network was fun, but I didn’t know it could get you published!

This Facebook network visualization was published in the Journal of Social Structure Visualization Symposium.  As the author states, this visualization has some nice features:

  • The angle of each wing is proportionate to its share of the network. Thus 25 percent of nodes go from 0 to 90º.
  • Partitions are distinguished by their position rather than a node’s color or shape.
  • The tail indicates the periphery of each partition. A wing with many tail nodes indicates many people who are only tied to other group members.
  • Edges crossing the center show between-partition connections. Since nodes are sorted by degree it is easy to see if edges originate from the most highly connected nodes or the entire partition.
  • In this network it is easy to see a strong series of linkages between high school and university as well as high school and family. There are many ties between the current co-workers and professional colleagues, and neither connects substantially to high school. While just as populous, the professional partition is far less dense than the high school partition.

    This visualization is oriented towards well-connected modular networks (meaning they are easily partitioned into distinct communities). Facebook egocentered networks often have these properties, whereby each partition represents a life course stage or social context and close friends link between partitions.

    This graph was generated using NodeXL, and Excel based network tool

,

Leave a Comment

Online vs. Offline Social Networks

The Real Life Social Network is a great presentation by Paul Adams, UX Reseacher at Google, on the differences between online and offline social networks, and how those differences cause user confusion and even pain.  One of the main reasons for this disconnect, he claims, is that online social networking sites tend to put all your connections in one big bucket (Friends on Facebook, Connections on linkedIn, etc), where in real life, across cultures, people tend to have 4-6 relatively independent groups of connections, with 2-10 people in each group.

This sounds about right to me, but I wanted to see if I could see this in my own social network.  I used the excellent gephi network visualization and analysis tool, along with these instructions to generate a network graph of my facebook friends.

Graphed and clustered visualization of my Facebook friends. Just as Google predicts, I've got about 6 real world groups that I interact with separately, not one big bucket of 'Friends.' Click the image to see more details about these groups.

It looks like I’ve got about 7 discrete social networks (click the image to see more details, labels, etc):

  • College friends (mostly from the Hawkeye Marching Band)
  • Graduate School colleagues (fellow grad students and professors)
  • Current Work Colleagues
  • Church friends
  • High School classmates
  • Family
  • Former Job Colleagues (mostly from when I worked and lived in England)

I learned a few things in doing this exercise:

  • Facebook turns out to be a pretty decent proxy for my offline social network.  If someone were to ask me, as Google did in their social network user research, to identify my people, place them in groups, and name the groups, this is pretty much the list I would’ve come up with.
  • I’ve got more than 10 people in most of my groups.  However, this graph doesn’t really take into account the strength of the connections.  If I were to apply a filter to this graph that only showed people who posted on my wall, or who’s wall I posted on recently, I bet the number would be much closer to 10 per group.  And some of those groups would disappear.  Which leads to…
  • These groups and connections are dynamic.  My groups, and my attention to them, wax and wane over time.
  • I didn’t need Betweenness Centrality to know that my wife is the center of my world.  =)

Adams goes on to describe that the web is fundamentally changing because it is becoming a web not just of documents and data, but also of people and relationships.  He argues that designers must learn to build systems with these new constructs.  The desktop model of one person, dealing with one system, in a cozy office environment is broken.  Relationships, influence, identify, and privacy must be built into next-generation systems. from the ground up.

That’s a huge mandate for designers and engineers.  It means that your system model has to be extended beyond the HTML, Javascript, and SQL statements; beyond the server configuration and network bandwidth.  Beyond a single user.  When you think about your system, you have to  include and account for the collection of users — their goals, needs, desires.  You have to understand how they influence one another.  You have to understand how they want to segment bits of information into different social circles.

, , ,

1 Comment

The User Experience of Public Restrooms and Websites

A couple days ago, I accidentally entered the women’s restroom at our local coffee shop.  The signage failure that led to this incident is a topic for another discussion.  But as soon as I walked into the ladies, something felt wrong.  Unconsciously, I noticed the lighting was really bright white.  I noticed it smelled kind of nice…some kind of poppouri.   A few moments later, conscious thought kicked in and I saw 3 stalls with doors, no urinals, and a baby changing table*.  I beat a hasty retreat across the hall into the mens room.  What a stark contrast!  It was smaller, darker, and it smelled…like a men’s room.

In the next few moments, I contemplated this contrast.  This coffee shop has great coffee, reliable wifi, comfortable seating, and an area where my daughter can read books and play.  Yet now I’ve seen clearly that they’ve skimped when it comes to maintaining the men’s room.  Oh, it was clean enough, but it definitely wasn’t as inviting as the ladies.  My estimation of this establishment took a little ding because now I felt like they were skimping in an area that…let’s face it…is pretty important to the coffee drinking experience.

Ok, I’m a UX Designer/Developer…I try to be empathetic.  Maybe it’s harder to keep the gents smelling clean.  Maybe most of their customers are ladies, so they focus maintenance efforts there.  Maybe nice restrooms don’t make men buy more coffee.  I don’t know about that.  But I do know about how my experience with the shop changed, and it made me think about how we, as UX designers, approach our projects.

UX is about more than your product.

I still like the ISO definition of user experience:

…we define [user experience] as all aspects of the user’s experience when interacting with the product, service, environment or facility’ and we point out that ‘it is a consequence of the presentation, functionality, system performance, interactive behaviour, and assistive capabilities of the interactive system.

It includes all aspects of usability and desirability of a product, system or service from the user’s perspective.

By definition, as UX Designers our job is to look holistically at the system of interactions a user might have with our designs.  This is hard to do in a company over a certain size, where organizational politics, mistrust, and agendas may detract from optimizing the user experience.  While you may not ‘own’ the entire user experience, you can be the watchdog of the experience.  As various teams, factions, or tribes within your company make decisions about their part of the product — particularly decisions that may diverge or contradict each other —  you can help to make clear to everyone the consequences those decisions have on the end users.

Is designing for the 80/20 rule really ok?

I did a quick scan around the shop when I returned to the main area.  Sure enough, lots more women than men.  So I understand why, given limited resources, you need to focus on satisfying the majority of your customers.  Still, that sucks when you’re in the 20%.  I mean, would another light bulb in the men’s room broken the bank?  As online and web designers, maybe we can do more to provide consistently provide good experiences throughout our apps.  I think personas are a key tool to help achieve this.  Personas help you 1) identify different types of system users, 2) design to solve specific problems for a specific person, rather than trying to address lots of problems for everybody.

We’ve all been using the nasty bathroom

I’ve been so accustomed to the low standards of male restrooms, I didn’t really realize that bathrooms could be better.  I think something similar is happening in computing today.  For most of my life, computers were expensive, beige boxes that took up 3/4 of my desk.  Programming an application was a slow, methodical process.  How much things have changed!  Companies like Apple are showing us that computers can be sexy, chic, desirable.  Google is showing us that the web can be fast.  Web development frameworks abstract away the details of javascript or HTTP.  Cloud services allow little old me to build internet-scale applications quickly and cheaply.  The world was accustomed to the men’s room, but they’ve been tastes of how good things might be.

The Challenge and Opportunity

That puts huge pressure on us as UX designers.  Everyone uses technology.  Everyone that uses Facebook knows that a website can push notifications down to you in real time, without refreshes, even if they don’t know about long polling.  Why do they have to refresh the page on your website?  Everyone that uses Feedly knows that a webpage can know when you get to the bottom of a page and automatically load the next entries in the list.  Why do they have to press a more button on your website?   Everyone that uses Alice knows that a company can provide free shipping, be cheaper than my local stores, and actively help me manage and budget my spending.  Why is shipping on your website so expensive?  Why doesn’t your site know what I want, rather than just force me down your fulfillment process?

The exciting part is that the constant change means that UX practitioners must be constant, lifelong learners.  We need to know about the current best design practices, information architecture practices.  We need to understand the business and operational constraints.  We need to understand the market.  We need to understand when we can apply an existing UX design pattern, or when to create new ones.  It means that our jobs are not easily automatible, repeatable, transferrable (at least for now).

* Note to coffee shop owners: This is 2010.  Men drink espresso, and care for their infant children.  We’d also appreciate a changing table in the gents.  It’s been 2 years since my daughter was in diapers, yet I can still tell you all the businesses in town with a changing table in the men’s room.  I’ve spend hundreds of dollars at Capanna Coffee after running across downtown to find a business with a changing table.  If you don’t have a changing table in the men’s room, you’re losing money.

Leave a Comment

Why use NoSQL instead of mySQL?

I’ve been watching/reading all the hub-bub about NoSQL databases.  This is the part of the blog post where I briefly recap the NoSQL movement: schema-less, key/value stores, document stores, yadda yadda yadda. But you have Google too.  (Although this one is my current favorite).

I’ve got a couple applications brewing, both for work and personally.  So how do I evaluate NoSQL vs MySQL?  When should I use NoSQL instead of MySQL?  When should I use NoSQL instead of any RDBMS, for that matter?

After reading about NoSQL, downloading a couple, trying a few tutorial, this is what I’ve come away with:

  • It seems to me the primary advantages of NoSQL over MySQL or another RDBMS are speed and scalability.  From everything I’ve read, NoSQLs tend to be hella-fast for a variety of reasons.  Depending on the particular system, it is fast because: the entire DB is stored in RAM, or you do fewer JOINS due to a document store, or an extremely efficient B-tree data structure, or Map/Reduce, or others.
  • The big bonus for MySQL is, of course, ACID compliance.  The database helps ensure that you save the only data you wanted, when you wanted to save, and that it’ll be in a good state when you need it.  If you have something like a bank, you want that kind of data integrity.  If you’re serving millions of status messages, you may not care as much that everything is exactly right, or that everything is consistent at every instant across your data cluster.
  • I think an equally important (though I haven’t read about it very much) is that NoSQLs may be a simpler, more natural way to conceptually model the data in your application.  In document stores like CouchDB or MongoDB, I just add new fields to a document.  Just like I was writing extra information on a piece of paper — I don’t have to update every other piece of paper in my filing cabinet.   It may make sense to think of you data as a document, rather than scattered across various relational tables.

As I’ve said a couple times in this blogit’s all about picking the right tool for the job.  When I am designing a web site for a client, I have a number of tools I can pick for wireframing and prototyping.  When I’m coding a site, I have a number of web frameworks, programming languages, and coding guidelines I can choose from.  In the same way, NoSQL gives people another choice for persisting data — one that is 1) easier to get your head around than relational databases, 2) addresses some scaling and speed issues that rear themselves at high volumes, and 3) is relatively cheap or free to use.

If I’ve missed something major about the relative merits, I’d love to know about it.

I’m choosing to use MongoDB in some of my personal projects because I want to add a new technology tool to my toolset.  But for work, given our current usage and application needs, I can’t imagine seriously trying to roll NoSQL into a production system in the near future.  I’m not saying our IT Ops would laugh at us, but there’d be a fairly high burden of proof.  In terms of modelling data in our applications, I can’t think of something that in NoSQL that I couldn’t do in an RDBMS.  Again, I’d love to know where I’m wrong in this. One day, our loads or speed requirements may force me to revisit this assumption.

, , , , ,

Leave a Comment

django_slideshare: add presentations to your django site

I’ve released the code for django_slideshare, a Django app that makes it easy to embed Slideshare presentations into your Django project.

Enter a Slideshare URL, and customize the embed template on your site.

In the Admin panel you create an instance of the Slideshare model…the only required attribute is the URL of a Slideshare presentation.  You may also set the presentation width and height, title, abstract, and posting date.

This is my first Django app.  It is functional, but I hope that people take a look at it, find it useful, and even suggest ways to improve it.  Here’s how it works:

  • Uses the pre_save signal to pull meta information about the presentation from the Slideshare URL you entered.  It’ll grab the presentation title,  default width and height.  You can, of course, override those by entering them in the Admin panel.  The presentation embed url and  thumbnail url are stored in the Advanced Settings.
  • Embed the presentation into your site with a custom tag, {% slideshare_embed %}, which is implemented via an inclusion tag.  This means that you can either use the supplied embed template, or modify it to suit your needs.

I’m not sure how useful this is to anyone but me.  I was building a site where I wanted to embed a few Slideshare presentations into my template, and I wanted to customize the Slideshare embed code.  Also, I wanted an excuse to do more Django development.  I’ve been playing with various web frameworks.  Django is emerging as my favorite, but I have a lot of python experience so I might be biased.

One challenge I’m having with Django is the naming conventions.  What most frameworks call controllers, Django calls views.  What most frameworks call views, Django calls templates.  What most frameworks call hooks, Django calls signals.  It’s caused me a few stumbling blocks here and there…I occasionally see the file views.py and look for the HTML/template code; it took me awhile to find the signals because I was looking for the wrong word.  I’m not sure what the departure from convention buys you here.  But like they say in the FAQ, it’s their framework, it’s what make sense to them, and it helps you get your sites done faster.  So it doesn’t really matter.

, , , ,

1 Comment

How Not to Sell Your Work…Talk Technology Not Pain Relief

We recently had a contractor come to our house to give us an estimate on replacing an old, metal, drafty patio door.  My impression was that he was extremely knowledgeable and capable contractor.  But after an hour, I didn’t feel like I had enough information to confidently make a good decision about which option to take, and we’ll probably not buy from him in the near term.

As I thought about the episode, I realized the contractor failed to sell me on his services in the same way that technology developers/designers fail to sell their clients on their work:

He did not ask us what problems we wanted to solve, or what goals we wanted to address.  Instead, he came in spouting off meaningless specifications about specific products.  I didn’t know anything about R factors or UV specs or double vs triple pane glass, so the fact that this product has a .2 or a .07 means nothing to me.  Is that good?  What’s the typical range?  How does that compare to what I have now?  And most importantly, how much might we expect to save on our energy bills going with the super-awesome door vs the middle-of-the-road door?

This is similar to software developers…I know we tend to get caught up in, “we should use this tool because it supports this new web standard” or “we should buy this because it has 1.21 gigawatts of power.”  Clients don’t care about any of these things.  They have a problem they want to fix, or an opportunity they want to attack.  All they care about is can you help them solve their problems.

Sell your work by focusing on the clients’ problems

  • Understand your clients, their pain and their goals. What’s hurting them or prompting them to make the change. What do they want to achieve as the result of the change (these two aren’t always the same).  The core of the discussion should be that you can alleviate some of their pain.  Once a client is on board with that, you can get into the details.
  • You may want to avoid, or at least postpone, discussing the quantitative specs of the tools or systems you’re proposing.  At best, your customer will gloss over this ‘irrelevant’ information and you will have wasted their time, and your opportunity to speak to them meaningfully.  At worst, you’ll have a customer like me that wants to make sense of the numbers, and you get stuck discussing minuscule details?  You want a 8 core processor?  What do people normally use?  Is that high end or low end?  Why can’t we make it work with 2 processors?  I read that Google uses lots of really cheap single processors in Wired…can we do that instead?  This leads to…
  • If you do need to get into the details, provide a frame of reference for your discussions. Instead of providing raw numbers like “the error rate on this page is 29%” give it a frame of reference, eg “On pages like this, we see error rates from 25-30%. The current page has an error rate of 33%; the suggested changes should reduce it to 27%”.

Leave a Comment

URI Routing in Expression Engine, CodeIgniter, Django, and Rails

One of the reasons I think I’m having trouble grokking Expression Engine (EE) is because it has a slightly different take on the MVC paradigm than I’m used to from its cousin CodeIgniter, or other web frameworks like Rails or Django. ExpressionEngine seems to focus on the View (or template in EE-speak), where those other frameworks have you spend more time on the Controller or Model.

Let’s look at URL routing…how does the URL map to the code that gets executed and rendered in the browser? Let’s make it a simple example where we’re implementing a site with a structure like this – A Home/Overview page with a few sections, and each section has a couple pages:

Home
|-Section1
|
|-DetailPage1
|
|-Section2
|
|-DetailPage1
.
.
.

I want to have URLs like this:

/home/

“Home page” of the site, with it’s own glossy template with prominent links to each section:

/home/section1
/home/section2

Section home pages. These should have the same look and feel, although populated with different data. (And I don’t want to hear from you REST people saying it should be /home/section/1 — this is just a generic example)

/home/section1/detailpage1
/home/section2/detailpage1

Details pages for those that really want to dig into the subject. These should have the same look and feel even though their in different sections.

Got it? Great…let’s compare how to do that in various frameworks:

Expression Engine (v1.6.8 EE Core, although v2.0 is in beta)

Routing Method: Template Based

EE maps urls to template groups and templates in this format: /template_group/template/parameter. I can get the Home Page URL I want by setting Home as the name of my template_group, and define a default template named index.

I haven’t found a good way to get the section page URLs I want.  The few ways I tried all seemed suboptimal:

  • I could create a new template for each Section, but that seems like overkill — may as well write plain HTML for each page.
  • I could overload the the Home/index template to show something different based on the second segment of the url (if segment_2 =! ” do something.  Now I’ve complicated my template.
  • I could make categories for each of the sections, and create a single entry for each category to show the details.  But using the category tag enforces that you have a category delimiter in your URL, so now my url path will be something like /Home/category/section1/list

The solution I’m driving toward is changing my around my URL structure so its:

/home/list/section1

/home/list/section2

I added a new segment to my URL structure. I have a template named list, which then uses the section name as a parameter to pull the correct weblog entry.  I can do /home/detailspage1/section1 in a similar manner.

What if I want to add more levels to my hierarchy, like /home/section/detail/moredetail/errata/? I don’t see how to do that in EE Core. I need the Pages Module, which comes with the paid version, which allows you to explicitly set the page URI and template.  But my budget doesn’t allow me to sink cash into this for an experiment.  I could also try out the Structure 3rd party Add-On.

CodeIgniter

Routing Method: Filesystem Based

CodeIgniter maps URLs to controller classes and methods.  So given the url /home/section1/detail, it’s going to find the controller class named ‘home’, and execute the ‘section1′ method with the ‘detail’ passed as a parameter.  In the section1 you can return arbitrary HTML, or render a view — normally an HTML file with variable placeholders.  You can make a deeper hierarchy by 1) placing controllers in a nested directory tree, or 2) customizing the URI Routing rules, similar to how its done in Django and Rails.

Django and Rails (and CodeIgniter advanced)

Routing Method: Explicit URI Routing Rules

In this paradigm, the developer must open a URI routing file and write code that tells the framework to run a particular controller method when a URI is requested.  Very often you use regular expressions to make routing less verbose/more generic.  Let’s say we were doing this example with Django – I’d write a couple lines in urls.py like:

(r’^home/?P<sectionname>(\w)+’, project.app.controllername.function)

Which would tell Django to run the app.section.controller.function, passing in sectionname as an argument (yes, I know in Django they call them views instead of controllers).  Inside the controller is the code to pull the appropriate data from the database.  Rails is similar, although with Scaffolding it makes a lot more assumptions about how you structure your pages and controllers, and do some of this routing for you.

With this style, the extra complexity buys you more flexibility.  You can define any URL or URL structure of arbitrary hierarchy.  Here, your coding efforts are in the controller rather than the view/template — the view just renders the data it is given.  One benefit of this is that your template developer doesn’t have to know as much about the data structure, and can work more independently of the coding/data.

Conclusion

Once again, pick the right tool for the job…

I guess EE’s focus on templates speaks to its target audience. It started life as a simple blogging system, and grew/morphed into a more general CMS. So it has a relatively simple data model and controller, and instead makes you spend more time on templates, where the target audience is probably most comfortable. CodeIgniter, Rails, and Django on the other hand are targeted to a more technical audience…people that built web applications by hand but now want tools to make that job easier. So in those frameworks you spend most of your time customizing the data model, and specifying the controller behavior. The templates are relatively dumb in comparison.

Also, I’m guessing EE is or was targeted to single or small teams of developers/designers building a site either for themselves or a client. The result is that there is a lot of interplay between the data and the templates, and teammates have to be in pretty close contact to make sure everything works. Contrast this with Django which grew up in a newspaper environment with lots of contributors. They needed a system where designers, developers, and content writers could work relatively independently in order to meet a short deadline. So I feel like that framework better separates the concerns.

It would probably be a more fair to compare ExpressionEngine to something like WordPress or MovableType — other blog engines that have blossomed into content management systems.  Wordpress even won 2009 Open Source CMS of the year, so that really is something to investigate.

This whole diatribe is predicated on the assumption that the URL structure is important to anyone. Maybe I’m trying to uphold some strange kind of RESTful ideal that isn’t practical. Certainly the client for this project doesn’t care. I only care so far as the framework acknowledges that my information architecture is going to change and grow over time — categories will come and go, new subsections will be added.  I see the RESTful pattern as a way to organize the information structure in a scalable way.  Frameworks that facilitate the RESTful style, and follow a more traditional MVC build approach,  more cleanly separate the various parts of the system, and make it easier to change and grow the IA over time.

, , ,

3 Comments

UX Designer/Developer Core Competencies

I’ve struggled to communicate exactly what a User Experience Designer does.  User Experience is a relatively new field.  It borrows a lot of techniques from various long-established disciplines, but I don’t think there is any strong consensus on what a User Experience professional does, how they interact with other established parts of an organization and how to know if you’re a good one.  In this post, I synthesize some of the current thinking on what UX Designers are supposed to do (UXMatters.com), how they go about doing it (userfocus.co.uk), how they might be evaluated (Jared Spool, uie.com) , and present a framework for thinking about your User Experience practice.

The Bottom Line:  UX Designers/Developers need skills in 3 areas: Core UX Skills (User Research, Visual Design, Interaction Design, Implementation, Evaluation), Enterprise/Business Skills, and Foundational Skills.

UX Designer/Developer Core Competencies

User Experience Definition

Search for ‘user experience definition’ and you’ll get a lot of different answers.  You could do worse than the ISO 9241-11 definition:

‘…we define [user experience] as all aspects of the user’s experience when interacting with the product, service, environment or facility’ and we point out that ‘it is a consequence of the presentation, functionality, system performance, interactive behaviour, and assistive capabilities of the interactive system.

It includes all aspects of usability and desirability of a product, system or service from the user’s perspective’.

That’s a tall order for one person to fill.  In a company of any size, it is unlikely that one UX Designer will have complete influence over all aspects of the user experience.

UX Honeycomb. Peter Morville

So while I hold this definition as an ideal, and try to communicate it to others in my organization, I tend to focus my view and efforts to the electronic, web systems that I design and have direct influence over.

There are a couple pictures that I think sum up this view rather well.  The UX Honeycomb describes 7 facets of a good web user experience.

Dan’s visualization of UX at KickerStudio encapsulates the notion that UX is the space/cytoplasm that connects the various disciplines into a single organism.

User Experience Artifacts/Deliverables

What are user experience designers supposed to do?  I like the idea that UX designers bring compassion and empathy into product design.  They use structured methods to turn empathy into a design process that result in improved user experience.  David Travis breaks UX work into four categories: Analyze the Opportunity, Build the Context for Use, Create the User Experience, and Track Real-World Usage and Continuously Improve the Product (graphic).

A Model for User Experience. David Travis

What deliverables they bring to the table?  We use tools like stories, wireframes, tasks analysis, and prototypes Peter Morville gives a nice overivew of the UX Deliverables (along with an excellent graphical UX Deliverables Treasure Map).

With Agile development methods leading to shorter and shorter developmet cycles, some have suggested that UX Designers also need some development skills.  Being able to express designs with the same language and tools as used by the ‘backend’ development team certainly makes easier for the UX designer to integrate their work with the development team.  I agree with this view, to a certain extent.  I started my career as a developer, and I still do some coding.  I think this helps me communicate with my full-time developer colleagues.  But I also think that focusing on development can taint your design thinking.  When you’re in the weeds of writing code, and under a delivery deadline, it’s easy to cut corners on the design and say “this works…this is good enough.”

User Experience Core Competencies

In his Agile2009 Keynote, Jared Spool had a nice graphic of all the different disciplines the UX Designer/Developer dabbles in (I’m surprised the slides from this aren’t available anywhere).  I combined some of these ideas, some from Steve Psomas in UX Matters (linked above), and my own thoughts/experiences.

I would tend to group UX Competencies into three categories.  Let’s look at the picture again:

UX Designer/Developer Core Competencies

UX Designer/Developer Core Competencies

CORE UX SKILLS

This is your ability to turn your compassion and empathy into design artifacts and deliverables.  This is what people hire you to do.  I think this breaks down into 5 areas:

  • User Research
  • Visual Design
  • Interaction Design
  • Implementation
  • Evaluation and Testing

The graphic gives some examples of the types of artifacts deliver and skills required in each of these areas.  These are obviously not complete lists.  In particular, take a look at the Implementation box.  To be a UX developer these days, you need to know something about the front end presentation (HTML, CSS), the ability to make the screens sing and dance (javascript, AJAX, or maybe Flash, Flex, or Silverlight).  You need to be able to persist the data, whether in a local database, key-value store or remote system.  You need to be able to glue those two together, either through some lower level server side programming with straight PHP, or some framework like Ruby on Rails, Django, or CodeIgniter.

ENTERPRISE/BUSINESS SKILLS

Enterprise and Business skills enable you to map your Core UX Skills onto the needs of your organization in order to deliver business value.  As Jared Spool explains:

User experience extends beyond the on-screen interactions to all touch points with the user. Special skills are needed to ensure the team interacts with the rest of the organization in a productive manner. While the teams don’t need to know how to do the jobs of others in the organizations, they need to know how those other roles will influence the design.

I organized some of these Enterprise/Business skills differently than Jared…more in a way that fits my experience I guess.  Where the Core UX Skills live almost exclusively in the UX World, the Enterprise/Business skills are about the connections, interfaces, and links between the UX practitioner and the organization.

FOUNDATIONAL SKILLS

The Foundational Skills are the theory, tools, and practices that help you critically evaluate new technologies, tools, or methodologies.  Design and Development practices seem to come and go almost daily.  Today we’re all talking about guerilla usability testing, paper prototyping, user stories.  A few years ago talking about Usability Engineering, Outside In Design and looking at UI UML modeling.  Before that, we were talking about User Centered Design and the need for full blown usability labs.  Tomorrow, we’ll be talking about something else.  It’s your Foundational Skills that help you step back and see the relationships between all these things.  Foundational Skills enhance your ability to ‘pick up’ the latest thing because you can relate it to something you already know.

Foundational Skills would grow both through formal academic training in fields like Ethnography, Psychology, Human Factors, Computer Science, Engineering.  Foundational Skills would also grow through real-world experience with people, organizations, technology, and systems.

User Experience Core Competencies Use Cases

Assessing Your Own Strengths/Weaknesses

A designer/developer might rate themselves on some scale, say 1-5, in each of the 7 areas, to clearly communicate the skills they bring to the team.  I could imagine some color coded version of this graphic, or even a treemap that emphasizes where one’s skillset lies.

Assessing Your Teams Strengths/Weaknesses

A UX team manager might assess their teams strengths along these dimensions, in order to identify team strengths, weaknesses, opportunities to pair people and do cross-traning, and guide hiring decisions.  This leads to…

Evaluating Job Candidates

Given that you’ve identified areas where you need additional skills, you can rate prospective hires in the 7 areas (or ask them to rate themselves).  You can give each area a weight in order to emphasize the balance of skills you’re looking for, and build a table that calculates a weighted score for each of the candidates.

Conclusion

There are many misconceptions about UX.  In many organizations I’ve worked or consulted for, UX design is treated like some magical black box — sprinkle some pixie dust on our servers and *poof* out comes a great UX.  Maybe this type of framework can help remove some of the mystery, and help us communicate generally what we do and how we do it.  It may also help you communicate your own strengths, skills, and contributions to the product team.

I showed this visualization to my boss at my performance evaluation this year, and said, “this is how I think about UX and the types of things I should be doing…here are the areas where I’m strong, and here are the areas where I’m looking to grow.”  I noticed he only marked up the areas where I’m weak.  =)  That’s ok, because 1) we have others on our team that are really good in areas that I’m weak, 2) we agreed on where I need to get more practice, and 3) it lets me be proactive in defining the UX world, and the value a UX Designer/Developer in general (and me specifically) brings to the team, and what things I should be doing.

I certainly welcome thoughts from the community.  Is this helpful?

, , , , ,

3 Comments

Avoiding Bias in Agile UX

I enjoyed reading  Sway: The Irresitable Pull of Irrational Behavior (Amazon , nice review).  There are many cognitive biases that affect how we think.  The authors did a nice job of distilling the research on cognitive bias into an accessible popular science book.  The book made me think about how I approach web design and evaluation.

Traditional usability testing has its roots in psychology research methods.  You spend lots of time designing the study — randomizing participants into experimental groups, ensuring you don’t ask leading or prompting questions, calculating statistical significance or confidence intervals of findings, etc — so that these cognitive biases are minimized or factored out.

Agile development typically feature 1-3 week sprints, forcing UX designers to shorten traditional evaluation methods, use guerrilla usability testing, or do whatever they can to get SOME user feedback in the time allotted.  UX designers have been actively discussing how to integrate UX design into agile development teams (or search for “agile ux“). But in speeding up design testing/evaluation, we may become more susceptible to allowing cognitive biases to creep into and taint our study results.

There are two biases in particular I think we need to watch out for.

Confirmation Bias

Confirmation bias is the tendency is a tendency to search for or interpret information in a way that confirms one’s preconceptions (Sciencedaily, or Nickerson 1998 if you’re more psychology-paper inclined).

Give me an example!

You’ve spent the last couple days iterating on an information architecture for a new site.  You’re doing a quick evaluation of a paper prototype with three users in three separate sessions, to determine if the latest iteration is the best.  You’re watching the users interact with the prototype, asking them to think out loud and asking open-ended questions to encourage them to talk.  However, you’ve invested time and effort in this latest prototype: the stakeholders have approved it, and you either really like it or are sick of it and want to move on to the next thing.  Confirmation bias might lead you to focus your questioning on behaviors that you expected to see, that confirm or validate your design, or discount some of the negative comments you hear.

Diagnosis Bias

Diagnosis bias is the tendency to label things based on our initial impressions, and our difficulty or inability to change our minds after that initial impression is made.

Give me an example!

You’re got some ideas for the next web2.0/cloud/service/mashup/[buzzword]*, and you’re doing user research to prioritize new feature development.  A study participant comes in and says, “I don’t know what browser I use…I just fire up AOL to get on the internet.”  Ouch, you think to yourself, how am I going to get any useful info from this yokel?  This diagnosis bias might make you miss that while they don’t do much at home, their online activity at work makes them a perfect candidate.

How do we avoid biases in Agile UX?

The Sway authors take a small stab at answering this question in the Epilogue of their book, but their answers are a bit simplistic.  I guess this is understandable.  Humans developed these biases because they help us solve problems related to surviving in an unstable outdoor environment, and to do so in nearly constant motion (Brain Rules).  Sometimes you need to make quick, simplifying judgments in order to survive or gain an advantage.  So clearly there is no turnkey, 3-step process for overcoming them.

Obviously there is a need to find an appropriate balance between experimental design rigor and doing the least amount of work to get the most value.

  1. Be Aware of Cognitive Biases.
    You can’t do anything about it if you don’t know about them.  And you just read this post, so check this one off your list.
  2. Make a List of Your Assumptions; Reevaluate Assumptions Across Sprints
    This is basically just trying to externalize your assumptions and biases.  If you can put them out there, and make plans to revisit them over time, it might be easier to catch when they have clouded your judgment.  Also, if you publicize your working assumptions it gives others a chance to critique them, or see if many people would draw the same conclusions.
  3. Think About How to Disprove Your Assumptions, Rather Than How to Prove Them
    This goes back to your Research Methods class…it is difficult to objectively critique something if it is not falsifiable.  I’m not saying you have to set up your null hypothesis tests.  But you can change you design evaluation thinking from “how would I know this is good” to “how would I know if this is bad.”  Try to identify 3-4 ways that would indicate something is wrong.  If none of those things are evident, you’re more confident that you’re on the right track.

,

Leave a Comment

Tag SurveyMonkey URLs with custom value

I really wish I had seen this before I collected 500 survey responses about our ordering system WITHOUT being able to connect them to an order number.  It turns out you can pass a custom value into the URL of a SurveyMonkey survey:

SurveyMonkey Help Center – Answers

To customize them, create a unique ID ending for each respondent by adding “&c=” at the end of the link followed by the ID number.

EX: &c=00001

http://www.surveymonkey.com/s.aspx?sm=v8MbvURxoHkWfvud7Or3Cg_3d_3d&c=00001

, ,

Leave a Comment

Follow

Get every new post delivered to your Inbox.

Join 532 other followers