Bringing UX to Your Code

Zitierlink des Filmsegments
Embed Code

Automatisierte Medienanalyse

Erkannte Entitäten
this is the and and in the end of the and the a in a cell hide minor is John asking this is brain you exterior uh these are my various things you can find me around but what I do is a day job I help
companies to build loss internal education programs basically trying to keep your employees happy and doing things of that has nothing to do with this topic traditional and new underwater rails for 5 years so about 5 years ago I got sick of consulting and and the joining a company and I felt a little to qualified for the back end of and I actually come from back in history and so I applied for you like no real history in your and they give it to the school and the as sort reinforce them coming not from a designer perspective on now you x designer and audio x developer uh my my heart really lays weigh close to the mantle and our initial hands who here is like you friend and the person small small number 2 euros both ends of your supervisor whose like really back and type person as the majority of you that's possible because you're actually tired stock so and when I joined this company is a is a URI developer the garbage materials you know obviously learning rails new framework uh also uh the couple books to read and and 1 of the
books let us get Don Norman this has started the user centered design you release a book in the mid 1980's called the design of everyday
affairs anybody read this book as surprisingly good number so like link orders of if you read this book you know that you
learn a lot of doors this book the a model of things it's actually on
Wikipedia when I was I was looking things up it's it's authoritatively about doors of but it's actually really cool
book it's what it what it teaches you deserve that this door if you look at the handles are totally identical on both sides right and so they had put push label on their because everybody kept getting it wrong and and I have this thing and I'm assuming that you probably due to where you've been doing this your entire life and you assume that you really stupid yeah
and that would taught me that you're not really stupid is
not your fault that door sucks it's actually going
design the door so that was a really important lesson for me and if you take nothing else away from this talk you can take away that somebody in the mid 19 eighties told you that was not your fault that door on so is that but there's a lot of good stuff the book in the library lessons about usability change a lot about the way that I software but mostly in the context of doing
websites this is the 1st result came up when I searched for really hard to use websites apparently only like 20 % this is clickable and you can tell which point % dresses like moves around spring but as soon as
we switch over to code the there's really no mention of this usability stuff this is not something that we pay attention to as back and developers and I think I know why the busses the it
yes and in doing this a while of an engineer for a fair amount of time and I believe and how wonderful exceptional wearing clearly worse in the world but but I've noticed that time that there are 2 things that we really tend to ignore his engineers anything that was invented a long time ago where that that's a sliding scale the you're fairly young this is probably like you know way 5 years ago 7 using uh and then think omentum non engineers the we we pretty much as remake everyone else's fields
and so designers like the these usability stuff is is designer stuff it's not like engineers stuff this was I google the designer stereotype and this is like the nicest thing that I found a
and this guy is not 1 of us right like you is seeing this is therefore non-engineer seemed like he was prominent a long time ago and so that when you when you read the Vikings he's
talking about you know you it's live long enough ago that is talk about like doing spreadsheet so green like Spain and he's talking about all this you know like fossils and things and so the I think we tend to dismiss that experience and she
prefers the things that we can't just come up with on the spot because we're engineers and you know we can we can invent stuff the and they were missing and
this is my contention is that the decades of work that they've done in usability has given them than us are is given them a vocabulary that they can use to describe these concepts as you can use very rich and it helps us to think about these concepts there's a big power having these words and having these things defined I think there R code is we may feel like the the code itself is some like magical majestical thing but the the words that you write a really almost 10 gentle what the computer executes right the the words that you right there for you a comparison translate them to do anything and so I think these principles actually do applied I want to take a look at them renting so happy from here on out as all strife on talk
about a couple of principles anonymous book I wanna talk about how they can apply to code
so 1st gulf of execution of in the book is out of everyday things it talks about the gulf of execution and the gulf of evaluation governed execution in a nutshell is a way of describing what we do when we have an intention we want to actually act that ensure the most interesting is is there any action that
corresponds my intentions when you have a door you look for him right so think about this in code perspective let's say hypothetically that I am new directs as some of us have passed law said I have an actor record model I will say that I wish to remove it from the data right I don't know the action this in some Middle because I have done a couple really tutorials I'm very common I'm going to take a look at the methods numbers sort them almost see if there's an action corresponds what I wanted the lesson successful but I did put a
red box on and if you if you can see that our but so obviously I you know I have no idea what I wanted you and so I get climate of because
again I've taken the tutorial and so I'm going to and so on but do I graph Don Norman's contention is that the model that is in my head is the 1 of any use to try to find action so in my had as somebody who is done the Web before I assume were deleted was mentally arrays 3 we do we delete delete obviously annually and so I get the method-a although the ad fantastic no problems only accept clearly that's that's not right for those of you have done rules a little longer you know the Dewey despite being the thing that clearly I would find causes data inconsistency among model and test to destroy thing that I want and but destroyed doesn't Napoli naturally to to any conventional or so for those I can't see whether the rails corps commanders in here that I'm offended but there's a good reason why there's a destroyed Italy and it's bullshit because every new person as they come to the framework are get confused in the exact same way and we don't have to name the thing that we're right we could we could a name that any number of that we could have name that destroy without context but so by putting this thing in a way of course now I attracts problems evaluation once I've taken action I perceive feedback from the system I wanna see if i have succeeded the action their work so the error code this is actually is reasonably straight for everything in really as a return type right and so you have to give feedback so if you're giving in some like no moment of thought to what kind of feedback you give this should be pretty straightforward and and duly and it's kind of something these alright what I don't think this is an unreasonable return type from delete it and throw an error at return false either nail you know anything like that probably reasonable it also happens to be virtually identical there is actually difference between the 2 of them but it's almost identical to destroy and so in 1 sense we don't give good feedback interestingly when it succeeded and waiting in another sense it failed the warning entirely that of corrupted my data model this is less than optimal right a getting a worse when you codes 9 execution context after this if you do them return types of the thing about other things like to store all this is actually useful return type and I don't think that that would work for destroyer delete but its usefulness can think it as in a non could context and then have any of you done this before for sold do you see why this is a problem all of my new people when they learned that have this problem we we declare private and we start to declare static methods this does not work there is no return or anything on that private modifier and so there's really no indication that you've done anything wrong with the way that they typically catch this is either code review or if they're unlike Rule cop it'll tell you that you've got useless private and so the the goal of evaluation the question is how can I provide feedback such that I can catch this comes to I would say I don't have a great answer for this and you know maybe throw warning or not really sure precisely how fixes we should be aware of these places where we we create a system that means somebody down a half where they have no to evaluate the success as to whether they did succeed yes so
natural mappings this 1 cool the the explanation for it so cool on like use an
analogy a stove top right the rest of the cell 4 dollars on the bottom laid out in a row and so if you wanna turn on 1 of the dial as you read it and you decide which 1 is in turn out not a big deal right with notice stuff the labels
or even necessary anymore and is a huge difference now I turned on my stove top like 90 % correctly since the beginning of time and it's the confusing 1
not this 1 but these things add up and if you think about that in a code context how much time and effort it takes to add up to to get these mappings right when they're a little bit wrong in you not the person the float when I have to go look it up when it doesn't expect things it becomes really evident how important getting his mappings right the so that
look like in because we don't have you know there's no other there's no dials something or a in room is really cool example if you know how to sort Marin reviewed problem just start sort of United 1st element might get stuff 1st if you want to eat something which you know back to the we think I guess that the way in works just kind works the right way and I think that's a really cool example of an API where it really doesn't pull you out to think about it because all these things there are mapped to the ideas in your hand our example I screw this up every single time every 6 twice in a row so it doesn't matter I screwed up every time because these 2 ideas and Carling jumped on top of each other and the 1 that I want what I want to update my software is very clearly unfortunaly not the optimal 1 so this is it's a mass spend up again I'm not entirely sure what you do about this 1 but I think maybe we need to think about how we can define other words how we can take advantage of not overloading these meetings so there's another really was the user in the file class in room in the standard library is all the path related methods as 2 interesting things here 1 this is a mass there's no there's no like mental mapping for the majority of this that the difference between like pastoral have real passed on thickness as a example really interestingly if you use unit for a while the idea of relative have an absolute power very much more natural maps and so absolute power can be natural for some people can be for some context is and for others so all this stuff is very very situation which makes it difficult to design for everyone so natural to deliver errors you for me from coding for say 8 hours but find myself is broken 1st screwed up all the
time all the time and so we need design in such a way that we can recover from that we we don't get pissed off of
this is my daughter was land use 10 choose learning jobs and so maybe a month ago in the kitchen making them which is often my computer programming I started here annoying noises utility concerted frustrated like if a shoes right a couple seconds legend hands earlier this is telling building up this amount of anger and so if I say what's wrong and she says it doesn't work working on my report it's united the courts so OK what does it say this
is undefined is not a function right click that this starts to suspect that it it doesn't tell you where it is it's really like what is that even mean but it's in JavaScript even better like it's like forget on this this stop executing so I'm not eliminated tell you anything on would stop doing everything else I was doing you know take my toes in go and especially dollars that we have this you know speaking also the distance kind of thing that and or the name of this term is but you know like the thing that became Knollwood's was 3 methods ago but you never quite got around throwing error and so she has this issue where she's farting around with the code of some 170 17 now it's not online 17 it's in some other place and time we can do better than that it undefined is not a function is is lazy it's easy to write that response but it's lazy and so the people that the 10 year old child has an impossible task the 1 more from Don
Norman exploit the power constraint I love this 1 basically if it's the right thing to do to make it very easy that's the wrong thing to do you make it very hard to assess a between like literally 20 minutes ago that people just blame the library but I think there's still a lot of space in this uh to support to make a
hard to be the wrong way I I'm not even I don't use my sequel anymore but when I did this was the coolest flagon world sequel best as I'm done it means that you cannot run like delete from users period you have to add a like where you know i'd equals it would refuse to do these things for you I set this up as Wendy fall because like many people I once fucked up the production database and so I thought it was very important to not do that again on account of wanting to be employed in so this is a wonderful thing because what's this is in place it's very hard to do the wrong thing that review is this consul in production development test the yes I have that right and so if you leave a consul open as I often do and you come back to it you have many windows as most of you do you don't really know what this and so when you start doing user last you like Compaq back into this thing you during debug statements this is do we production data and task and you may be thinking to yourself like no I would never do that tho don't I have to ask you have you ever programmable really tired have your around while really angry or even better have your portable really drunk it here yes this is the thing that happens then and it's just as easy as that is still falling of oil and note the use of idiomatic remember but it's it's really easy to know it's terrible menu so score
yesterday the retreated retreated we treat you write code the drunk children would understand now what I learned is that sediments condones children drinking few and I just want a log on record that I don't support that as legal and anymore but we should be writing code that is that works when you are compromised and distracted and everything is on fire and you have to remember that you users in this case a user your code is probably always compromised in this 1 so think about these things this was this was a couple years ago and and like everyone else I incorporated some of this but I certainly still don't consider myself a usability expert but I came up on this blog post by way
Whitney to this blog post is called so you
want to be a user-experience designer and no I don't think so the failed want but if the article principles and so whereas Don Norman is writing from the 19 eighties to me here uh this is a lot more recent there's some really cool articulable rules and again as wanna walk through some of them in and can illustrate how that can help us that to good related objects
objects that are close to each other have an implied relationships I wanna run this my very 1st thought was uh if any of you read underground confident code and when making keep doing hands motion by light applause still by plots we just grade it is a great book at the very beginning there's a slight mind-blowing it's like in the preface it's not even part of the book and he he looks at
this code section from the top of the same name and code it doesn't it don't stress too much about reading and the idea is is that the code is doing a lot of different things and because the interest 1st you have to keep changing contexts and you have to keep going back and trying to understand what happened the previous 1 and it's very difficult to understand as a result of this is the same thing reorganize this
is like mindless at a you might as well below is a big deal from me uh who by rearranging in this way is very easy to understand because the entire beginning is all about gathering input and so they are all next to each other were thinking about gathering and when you're reading this code there is another hiding at the bottom forces you to backtrack the relationship of these objects is clearance being exploited in a way that is meaningful for the user us rediscover be consistent there's
not orange back forth the Fred don't
. case we get get they got buzzing integer they do they not that OK so you get a big you go but up bang it they we get we do big of case back something else the clearly liked it they should definitely be the same thing but the whole no it's not this is ridiculous again there is probably a really good reason for that I don't care is bullshit people are using this code in this is super surprising and remember that when they use this code it doesn't what you can
inspect it for those tail case it's gonna come from the user which means you have 1 of these bonds where you know 1 in 10 thousand users ends up having an issue right you can't you test no problem right now is when you write a test about the sort of thing you don't write it has that does nothing none of us think about running a test that asserts that an upper case the word is still upper case if you a waste of a test and so of course you have this test test no problem let inconsistencies is poison so interacts production production Testing production thank there is probably a reason why stashing I do not care because they get it wrong every time and the software should be working for me is motion coasting
logic fun of so is
an important 1 that was really obvious after I thought was the really obvious from we have an emotional relationship with the software reuse and I'm not just talking about when you use matters you know what I'm talking about when you integrate pieces of software when you write code you have an emotional relationship to itself understand a word and put up on the screen I want to make a noise and corresponds to your feelings about that soffits avoiding IEEE booms and is an easy 1 relevant rails can could really get this quiet over there the emotion was robots so you can catch up self that is the best for me I will run the had a fantastic Protestant at have right right right so we don't have an emotional relationship of this stuff and and it's it's kind because even in in really this is something that we acknowledge because we have a language that was designed explicitly for developer happens this is something you should keep in mind when you develop your how is that when you work with code that is joyful when you you have this is this
library the just polarizes the dots on your part back tests the entire area color as the adults it's of fabulous test no what I feel really good every time I have fabulous tests and that makes a significant difference in my day warmth and kindness
makes software a pleasure to use this is an important stuff and when you do that people want to use a library they to kill you less the important thing good juggler the request theory audience participation of was the Sunni this planner by show of hands no snickering do you have CSRs enable on your girl who doesn't know get same question these protection water and so same thing the people who built this feature wise enough to realize that when you're implementing your path to say something like protects the author upon action would not work this is not a an acronym that is known widely and it's not something that you want try to retrieve a Google and so people just not do protection forgery fantastic it's not jargon I node is doing so of course I try to apply to 2 important distinction that the CSR of library would not be as successful without this black dot Ajax capital when Ajax I think maybe it's OK to use John and I think this is probably prolific enough that that's acceptable so it's very context dependent some things you can expect no some things you can the
last 1 signposting cues so
for enough word to come from where you go the
so diverse what can I do next on this object the I don't know if you think that the
documentation is a sufficient way to tell me what to do this object but you have a is lazy thinking when you think that you can design so for poorly but pointed towards a web page somewhere that hopefully up to date on how to use this thing you causing in this paper cuts remember the the other natural mapping right what I have to read it slows me down the center to the docks and slows me down this does not pointing towards anything that I can do that so
it's not OK this is an interesting 1
it's I can cancel the method is doing but if I wanna look it up on Monday we'll look up a king who will find by e-mail and 1st names right and if I want put a different parameter in there it's I have to start to think about what happened before or after it is a warheads at work the newer syntaxes way better for look about final Active Record is such relatively simple by the embassy e-mailed last name it's very easy for me to tell the thing I was example Aaron
Patterson couple months ago we set about our spectra of this is really need example if you have
this code again don't fret too much about reading at if you want us back and it fails it tells you how to rerun the stuff you can paste this command into your terminal and and OR on just a failed test how was so pointing towards what we need to do next which is rerun your 1 test it's very easy to see where you came from very easy to see what you do so do if you how would you get if you invest all the time to learn these things
he yet less suffering this is wonderful
quote in a blog post world is filled with anguish was not answered this speaks to me as somebody who's worked on production code bases I'm not sure she was in writing about us because this this encapsulates my entire experience of developing and so we should
be not contributing to the language
and also this 1 online sure about it I'm thinking about it and it seems like more more sensor more I think about it I think that if you believe in self-documenting code varies I think this is a mechanism for self documenting I'm not contending that if you do this right that you know to write any documentation once so 1 containing is that self-documenting code is not about code so it is about the people who perceive it the and so when we use these techniques people will understand our code the cognitive burden is lower I think that this is what we mean when we're talking about self-documenting code that humans can understand and so the last request was gonna say please go out of the the blog posts is literally like 2 thousand words long take a look at it think about what you do with your code if you maintain a library think about how people perceive that library what those stumbling blocks and exaggerated things amazing book recommended to target
you get in the way in and you lose some


Formale Metadaten

Titel Bringing UX to Your Code
Serientitel RailsConf 2015
Teil 77
Anzahl der Teile 94
Autor Mastey, Joe
Lizenz CC-Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported:
Sie dürfen das Werk bzw. den Inhalt zu jedem legalen und nicht-kommerziellen Zweck nutzen, verändern und in unveränderter oder veränderter Form vervielfältigen, verbreiten und öffentlich zugänglich machen, sofern Sie den Namen des Autors/Rechteinhabers in der von ihm festgelegten Weise nennen und das Werk bzw. diesen Inhalt auch in veränderter Form nur unter den Bedingungen dieser Lizenz weitergeben.
DOI 10.5446/30645
Herausgeber Confreaks, LLC
Erscheinungsjahr 2015
Sprache Englisch

Inhaltliche Metadaten

Fachgebiet Informatik
Abstract User Centered Design as a process is almost thirty years old now. The philosophy has permeated our products and the way we build our interfaces. But this philosophy is rarely extended to the code we write. We'll take a look at some principles of UX and Interface Design and relate them back to our code. By comparing code that gets it right to code that gets it desperately wrong, we'll learn some principles that we can use to write better, more usable code.

Ähnliche Filme