Usability

21:02 < seele> yep
21:02 < seele> so.. usability time
21:02 < seele> who here is for the usability talk?
21:02 < Riddell> take it away seele 
21:03 < seele> ok.. so just a little about myself first
21:03 < seele> seele == Celeste Lyn Paul (celeste@kde.org)
21:03 < seele> i'm on the kubuntu council and have been working with kubuntu for about 2 years
21:03  * stdin waits for the Usability session with seele 
21:04 < seele> i manage the KDE usability project and have been working with kde for about 4 year
21:04 < seele> i am a usability/design mentor for the OpenUsability Season of Usability project
21:04 < seele> and also work as a designer in my Day Job doing pretty much the same thing i do here
21:05 < seele> what is it that i do?  well, i try to make floss software (particularly the KDE flavor) easier to use
21:05 < seele> i do research, design, and testing, but also work very closly with developers as they are coding
21:05 < seele> so i imagine many of you have heard of this usability thing already.. or else you wouldnt be here
21:05 < seele> (or you think Jonathan's catchy subtitle to my talk was funny)
21:06 < Earthwings> seele: which company are you working for?
21:06 < seele> Earthwings: User-Centered Design, Inc. is a small human factors engineering and design firm in the Washington, DC area
21:06 < judith_h> seele: no but even though it's funny ;)
21:06 < seele> I am Senior Interaction Architect, i manage projects and designers to get stuff done
21:07 < seele> yes, i will get to the part about removing options or whatnot soon :)
21:07 < seele> anyway.. in 20 words or less, what do you guys think usability is? (and no cheating on wikipedia)
21:07 < dwidmann> seele: what about cheating with other dictionaries/etc?
21:08 < seele> dwidmann: no cheating period!
21:09 < seele> ok.. so it seems like many of you have a partial picture of usability
21:10 < seele> if we take this from an ISO standard, usability means that a product must be 1) learnable, 2) efficient, 3) memorable, 4) prevent errors, 5) and be satisfactory to users
21:10 < seele> 1) learnable
21:11 < seele> this is the one no one usually picks when i ask the "what is usability" question
21:11 < seele> a product (in our case software) doesn't have to be so easy that you don't have to learn it
21:11 < seele> it is all relative
21:11 < seele> (no you want to prevent errors)
21:12 < seele> for a simple task, then you expect it to be simple
21:12 < seele> but for a complext task, it is OK to expect learning
21:12 < seele> you guys have all heard of a learning curve, correct?
21:12 < seele> the apex of the curve is relative to how complex a system is
21:12 < seele> so for example, printing a document is a pretty simple task
21:13 < seele> so you would expect no learning, or very little learning to be able to do that task
21:13 < seele> but something more complex like photo or imagine manipulation is degrees more complicated
21:13 < seele> and so it is OK if the user can't make a masterpiece at their first time sitting down with krita, gimp, or photoshop
21:14 < seele> you wouldnt want someone dumbing down an air traffic control board just because the goals was "anyone" should be able to use it
21:14 < seele> air traffic control is a very complex system, and in order to take advantage of the technology, some learning is reasonable
21:14 < seele> 2) efficiency
21:15 < seele> this probably shouldnt be #2 even though it is listed in the ISO spec this way, because it is related to learnability and memorability
21:15 < seele> but it is exactly what the word means.. an appropriate use of time and resources in relation to the complexity of the system
21:16 < seele> even if you made a simple printing function an easy to use 10 step wizard.. it isn't very efficient if you need to do that every time you print
21:16 < seele> clicking one button will get the same amount of work done than stepping the user through all the options and clicking 10
21:16 < seele> 3) memorability
21:17 < seele> this i think should be #2 because it is closely related to learnability
21:17 < seele> have you guys ever heard of the term information scent?  it is an information science theory
21:17  * seele watches everyone look up "information scent" on wikipedia
21:18 < seele> information scent is a search behavior theory
21:19 < seele> information scientists believe we search using the "gathering" skills of our "hunter-gatherer" basic instincts
21:19 < seele> what it turns in to from a UI perspective is how easy it is to find information (functionality or options) from it's surface presentation
21:19 < seele> so.. what options you expect to be under menu X before you open menu X
21:20 < seele> by having good information scent (good labels, structure, etc.), you can use the UI more efficiently because you can stack layers of information
21:20 < seele> Forky: sortof, yes
21:20 < seele> basically you are leaving hints to the user to find the information on their own
21:21 < seele> they don't need to Remember where options are, but only follow a logical path
21:21 < seele> this saves the user's cognitive resources to go on and solve more complex problems
21:21 < seele> instead of using them on the UI
21:21 < seele> remember that a UI is a tool to solve a problem, the UI shouldn't be the problem
21:22 < seele> #4 error prevention
21:23 < seele> have any of you guys heard of jef raskin?
21:23 < seele> he was a famous designer who worked at apple (i think he was employee #12 or something close)
21:23 < seele> he was a true user advocate in the sense that he believed no matter what the circumstance, the computer should do no harm
21:24 < seele> also, many of you are probably familiar with the practice of confirming actions, particularly destructive ones, yes?
21:24 < seele> error prevention is more than just confirming a destructive action
21:24 < seele> it is preventing the user from having to make that decision to start with
21:24 < seele> we dont see this too much in the desktop environment because we model a lot of our workflows off of existing software
21:25 < seele> but i see this a lot in other expert systems
21:25 < seele> "Are you really sure you want to do that?  It will cripple the system and you will lose all of your data"
21:25 < seele> (Well then, the user should have never been able to choose that option from the top level of a UI)
21:26 < seele> even so, there are a lot of confirmations we do in the desktop environment which could be prevented if we shaped the workflow differently
21:26 < seele> the user should never have to select Cancel
21:26 < seele> the last part of the Usability ISO standard is satisfaction
21:26 < seele> #5 satisfaction
21:26 < seele> (keeping it consistent ;)
21:27 < seele> satistfaction is the quality many people tend to identify with usability
21:27 < seele> but it is also the last dimension in the spec (and i believe the least important of all we've talk about)
21:27 < seele> satisfaction is important.  if a user finds a system pretty or cool, they will want to use it more than the other system that is not
21:28 < seele> users will sacrifice ALL of the other parts of usability (learnability, efficiency, memorability, error prevention) for satisfaction
21:28 < seele> our goal is to help them not make sacrifices
21:28 < seele> ive seen users in usability tests take 3, 4, 10 times longer to complete a task in a terrible UI that looked pretty
21:28 < seele> and complete the same task in a different not-as-pretty UI much much faster
21:29 < seele> and they still like the pretty UI
21:29 < seele> this is an advantage and disadvantage: it gives us room to experiment because users will be forgiving if we give them options they want or other cool toys
21:29 < seele> but at the same time, we should use eye candy as a crutch to solve problems.  we should solve problems and make our solutions beautiful
21:30 < seele> so.. any questions so far?
21:30 < seele> er.. *should NOT
21:30 < seele> thanks for the correction
21:30  * seele can't wait to hear the comments when people read the logs..
21:30 < seele> wow.. halfway through already
21:30 < seele> haha
21:31 < seele> yes
21:31 < seele> oh, on the topic of learning
21:31 < seele> have you guys ever heard of a one-time learning event?
21:31 < seele> ok
21:32 < seele> often when you are reviewing a new ui or workflow, one of the questions you may ask yourself is "will the user figure this out"
21:32 < seele> and the first time around, sometime the user doesnt.  they can't find the options, they don't know the label, they can't figure it out.
21:33 < seele> BUT.. if they have someone show them how to do it, they find the solution on a webpage, or painfully figure it out, it makes sense to them and they remember it for next time
21:33 < seele> we call this type of experience a one time learning event
21:33 < seele> they won't figure it out the first time, but if they can do it once, they will remember how to do it
21:33 < seele> this is something that is often forgotten in UI design
21:34 < seele> yes, that is another question
21:34 < seele> you can break users out in to different dimensions.. one of them being problem solving skills and related motivation
21:34 < seele> some users are not afraid to try something and fail
21:34 < seele> other users will not try new things in fear of failing
21:35 < seele> the users who do not explore are at risk of never exploring options hidden behind a single-learning event
21:35 < seele> that is why doing user research on your product and understanding who your users are, their motivations, environment, and their skill (it's not JUST about their skills) is important
21:36 < seele> this leads me in to a discussion about universal usability
21:36 < seele> has anyone heard this term before?
21:36  * seele watches the wikiers
21:36 < seele> haha
21:36 < seele> almost
21:37 < seele> universal usability is the belief that any user, no matter their skill, background, motivation, experience, etc. should be able to pick up and use a product
21:37 < seele> in cases where products must serve the general public (such as evoting machines), this could be a valid argument
21:38 < seele> but there are very few products that focus on EVERYONE
21:38 < seele> even so, the concept of universal usability would be extremely difficult to achieve
21:38 < seele> especially in expert systems or systems which knowledge workers use
21:39 < seele> the ipod.  why does everyone use that as an example of universal usability..
21:39 < dwidmann> seele: for lack of better example?
21:39 < seele> the ipod is an excellent example of very sexy tech that people forgive its shortcomings for
21:39 < seele> it doesn't do everything everyone wants, and not everyone can use it or figure it out
21:40 < seele> but because it is so damn beautiful, most people dont care
21:40 < seele> i like my ipod, but i wasn't born how to use it (and even now make mistakes trying to find options)
21:40 < seele> anyway..
21:40 < seele> universal usability
21:41 < seele> universal usability forces designers to lower the bar of the average user to accomodate more people
21:41 < seele> this is why it hurts expert systems
21:41 [ clinx       ] [ freeflying   ] [ jussio1      ] [ NickNak     ] [ seele         ] [ Xand3r       ] 
21:41 < seele> if there is a pocket of experience or information that a certain group of users may not have or be able to attain, it must be removed
21:42 < seele> yes, but apple traditionally does not follow a user-centered design approach.  they believe that designers know better
21:42 < seele> it's only been recently that they've done usability testing.. everything before was market research (which is very different)
21:43 < techno_freak> seele, with 15 mins more, can we get with contributing to usability in kubuntu/kde? :)
21:43 < seele> dwidmann: that is a possibility.  this will help expert users retain their expert options, but not get in the way of other types of users.
21:43 < seele> techno_freak: yes, sorry.. this is taking much longer than i thought
21:43 < seele> anyway.. there are three domains of usability i work in: User Research, Design, and User Testing
21:43 < seele> together, these are part of the user-centered design process (UCD)
21:44 < seele> it is a design philosophy which keeps users in mind while creating a system for them
21:44 < seele> User Research is often linked to the Requirements stage of software development
21:45 < seele> so when you developers are thinking of new features to integrate in to a software, or a new software to develop from scratch, here are some things you should be thinking of in addition to your functionality spec and other things
21:45 < seele> Who are your users?
21:45 < seele> try to come up with some example users who you are building the software for
21:46 < seele> even if you are a user, try to keep yourself out of the list, it makes it too easy to do what you want instead of what they need
21:46 < seele> What will you users be doing?
21:46 < seele> too many times, not all of the functionality is documented or fully planned
21:46 < seele> a single function might be discussed and mapped, but the other functions of a system aren't thought of until afterwards
21:47 < seele> what happens is you dont have a complete picture of how your users are using the system, and if the functions are integrated properly
21:47 < seele> mapping out screen flows before you begin coding will help document your functionality (so you aren't trying to squeeze or force options in later) and give you a reference for when you code
21:47 < seele> What problem are you trying to solve?
21:48 < seele> This is the big one, your Vision Statement
21:48 < seele> having an idea of your goals before you start will help development.  it is related to the "What are my users doing?" question
21:49 < seele> if you don't know what problem you are trying to solve with your software, you can't know what to provide users or what they will expect
21:49 < seele> plus, in larger projects, it is a good idea that all the developers are on the same page
21:49 < seele> it prevents a lot of roadmap issues later on
21:49 < seele> any questions so far?
21:50 < judith_h> seele, what is the worst example of usability you have ever seen?
21:50 < seele> being able to answer those three questions will give you a head start.  on kde techbase there are user research templates to help guide you
21:50 < seele> judith_h: hmm.. well there is a classic screenshot of a dialog with about 100 widgets and matching labels squeezed on to a configuration dialog
21:50 < seele> but i will give a more realistic example
21:51 < techno_freak> seele, i have seen those templates, what if i want to do a contextual interview kinda keeping that am not the developer but want to help the dev by doing UI reviews/tests for him?
21:51 < seele> hmm.. too many questions not enough time
21:51 < seele> techno_freak: yes, that is a very good way to help them
21:52 < seele> ok.. i guess we will get in to open source usability 101 now..
21:52 < seele> first step: contact the project you want to work with and express interest in working with them
21:52 < seele> you dont want to surprise developers by dropping a usability report in their inbox
21:52 < seele> it will just make them angry, even if the work was good
21:53 < seele> second step: start small.  open source is a community based on commitment and trust (after the getting work done thing)
21:53 < seele> start with a small activity such as interviewing users, conducting a survey, or doing a small UI review.  this will help developers get used to your methods, get used to you, and know what to expect from your work
21:53 < seele> third step: maintain your relationship with the project
21:54 < seele> design is an iterative process, just as open source is iterative development
21:54 < seele> developers are wary of seagull designers: designers who fly in, poop on their software, then fly away
21:55 < seele> developers are in for the long hull, they are committed to their project and want to see it succeed
21:55 < seele> they dont want to work with a designer who will ask them to change a bunch of things, then disappear and not be able to comment on the results
21:56 < judith_h> makes sense seele
21:56 < seele> obviously i dont want to see any unhealthy marriages, but keep in mind that you will make a bigger difference in one project than doing a bunch of little activities for a bunch of projects
21:56 < seele> so i'm sorry we didnt get through everything i made notes on to cover, i guess i need to become a faster typer
21:56 < seele> techno_freak: yes.
21:57 < seele> design is a VERY iterative process.. it is important for both you the designer and the developer you work with to understand this
21:57 < seele> i've been working on a KDE GRUB UI for the past few months with Aretemis_Fowl
21:57 < seele> i cant tell you how many times i've asked him to go back and forth on little design issues
21:57 < seele> yes, GRUB configuration tool
21:57 < techno_freak> seele, one last question if your are closing up, do we have anything like KDE-HIG for Ubuntu/Kubuntu to which we can contribute to?
21:57 < seele> similar, but I'm hopeing much more useful and usable
21:58 < seele> we're having problems with automagic though
21:58 < seele> techno_freak: good question
21:58 < seele> for Ubuntu designers, you will want to look at the GNOME HIG.  It might be a little out of date, but one way to get started with contributing would be updating it!
21:58 < seele> for Kubuntu designers, you will want to look at the KDE4 HIG and the KDE3 User Interface Guidelines
21:59 < seele> these are under active development, and so if you have any questions it would be best to ask me or Ellen Reitmayr who sometimes lurks in #openusability
21:59 < seele> other resources: look at other interfaces that do similar things
21:59 < seele> not just in your own environment, but in windows, kde/gnome, macosx
21:59 < seele> you'll find similar and very different solutions
21:59 < seele> you will want to look closely at the context of the solutions and make sure it is a good fit before you use it as a model
22:00 < seele> copying a solution will not solve a problem, the goal of reviewing other software is to get inspiration when you have no other better ideas
22:00 < dwidmann> seele: what is that grub configuration tool called, and where can I get it?
22:00 < seele> in the example of the GRUB config UI, after we looked at the Mandriva and Suse UIs, we realised we could do A LOT better
22:00 < seele> but what we did do was look at which options they thought were important for users to help us build our funcitonal spec
22:01 < katastrophe> seele: is it kgrubeditor?
22:01 < seele> katastrophe: yes
22:01 < seele> dwidmann: there is a work page on the wiki with links to oru progress
22:01 < seele> i think it is in Artemis' PPA, but i'm not sure
22:02 < seele> so it looks like i'm out of time
22:02 < seele> i'm in #kubuntu-devel and #openusability all the time, so feel free to ping me with questions
22:02 < Riddell> thanks seele 
22:02 < GreySim> Thanks seele.
22:02 < katastrophe> seele: thanks!
22:02  * seele waves
22:02 < Schnullerbacke> thanks a lot seele
22:02 < techno_freak> thanks a lot seele, that was very informative :) hope to contribute to usability, which means bugging you ;)