lecture 19: getting users to like you · ¨ seeing is believing, clients do not understand code ¤...
TRANSCRIPT
LECTURE19:GETTINGUSERSTOLIKEYOUCSE442–SoftwareEngineering
WhyHaveaUI?
¨ Solvingclient'sproblem:reasontheygiveusmoney
WhyHaveaUI?
¨ Solvingclient'sproblem:reasontheygiveusmoney¤ WillonlyknowjobdonewhenUIshowscompletion
WhyHaveaUI?
¨ Solvingclient'sproblem:reasontheygiveusmoney¤ WillonlyknowjobdonewhenUIshowscompletion
¨ UIshowsinformationuserusestocompletetasks¤ Easytoconfuseoroverwhelm;neededinformationonly¤ Clutterunhelpful&distractsusersfromfinishingtasks
AskBeforeStartingUI
What problem is being solved?
What is necessary to solve this problem?
What makes it obvious problem is solved?
UIGuidestheUser
¨ Providesdirection¬justfiguratively
UIGuidestheUser
¨ Providesdirection¬justfiguratively
Developer-Centric==BadUI
Developer-Centric==BadUI
GoodUI==User-Centric
GoodUI==User-Centric
UIGuidestheUser
¨ Providesdirection¬justfiguratively¤ Centerofallinteractions;mustguideuserthroughwork
¨ WalkingthroughUIhelpsclarifyrequirements¤ Double-checkperformsactionsthatclientneeds¤ Pictureworth1000wordsandeliminatesneedingjargon¤ Providesvisuals&solimitsdifferingexpectations
¨ Ensuresyou’velearneddetailsyouneedtoknow¤ Keeppluggingawayuntilclientsatisfiedwithideas¤ Keepscostslow;onlycodeareaswherechangeunlikely
Atten
tion
Paid
TimeRequiredToUnderstand
KeepItSimple
Atten
tion
Paid
TimeRequiredToUnderstand
Alreadyquit&started/r/yousuck
KeepItSimple
Atten
tion
Paid
TimeRequiredToUnderstand
Alreadyquit&started/r/yousuck
KeepItSimple
GoodUICanBeDense
User==Idiot
¨ NevergowrongunderestimatingusersIQ¤ Peoplealwayssufferdropinintelligencewhentyping
¨ Beexplicitwithanswerssooutcomesunderstood
User==Idiot
¨ Provideuserswithoptionsonlywhenrequired¤ Theywillscrewup,nomatterwhatyoutry¤ Theuserwillgetreally,REALLY,REALLYangryatyou¤ Minimumoptionsneededisgoalofanalysisphase
AbilityWithApp
lication
TimeUsingProgram
Ongoing
Cancelled
Passion Threshold
Suck Threshold
User’sThoughtsofAProgram
You are here
AbilityWithApp
lication
TimeUsingProgram
Ongoing
Cancelled
Passion Threshold
Suck Threshold
User’sThoughtsofAProgram
Huge bonus is here
GetYourUserInvolvedNow
¨ Lessthanfiveminutestogettheminvestedinapp¤ Donotlosetimebyforcingthemtoreadusermanual¤ Enticeuserwithanattractiveapplication
¨ Givequickpayoffbyhavingsimplefirststep¤ Makethatfirststepeasyusingcommonmetaphors
¨ Quicklygettonexttasksotheydonotloseflow
TestYourDesigns
¨ Alwaystestdesignbeforecodingworkreallybegins¤ Makecertainactionsclear,logical,&easilyfollowed¤ Pretendbeingdifferentusers&verifymeetstheirneeds¤ Ifseemsboring&slow:excellent!Usersalsoimpatient
¨ Talkfriendthroughusewithoutthemseeingscreen¤ ProgramUIwaytoocomplexforuserswhenyoucannot
Over-the-PhoneTest(1)
Over-the-PhoneTest(2)
But,OnceYouDo…
¨ Seeingisbelieving,clientsdonotunderstandcode¤ IftheyseeworkingGUI,assumeprogramnearlydone¤ Ifitappearsclosetodone,thinkitisclosetodone
But,OnceYouDo…
¨ Seeingisbelieving,clientsdonotunderstandcode¤ IftheyseeworkingGUI,assumeprogramnearlydone¤ Ifitappearsclosetodone,thinkitisclosetodone
¨ Useroughsamplesofwhatscreenswillbe¤ Youwillmakechanges,solimittimewastednow¤ Drawimportantcomponents,butlimitdetailsshown¤ Focusonwhatmatters:ignoreGUIyoudonotcontrol
NapkinLooksUnfinished
AbilityWithApp
lication
TimeUsingProgram
Ongoing
Cancelled
Passion Threshold
Suck Threshold
User’sThoughtsofAProgram
Testing gets you here
AbilityWithApp
lication
TimeUsingProgram
Ongoing
Cancelled
Passion Threshold
Suck Threshold
User’sThoughtsofAProgram
Bonus is still here
GoodNews
¨ Clientexistandwilluseyourprogram…
BadNews
¨ …butdonotlikeusingyourprogramApplication Market Share
WhyDon’tYouLoveMe?
¨ Usersarepassionateaboutprogramsthat:¤ Reactandinteractincomfortable,commonway¤ Providespeedupsorshortcutsforcommontasks¤ Includeeastereggsknownbyonlyselectfew¤ Outcomeofanactionispredictableinallsituations
ComfortLevel
¨ UsingstandardUIlowerslearningtimes¤ Usersimmediatelycomfortablewithapplication¤ Providesbigegoboost–“Iknowhowtousethis”¤ Whatitshouldlooklikeiswhatitactuallylookslike¤ Familiarityisprettiness–thoughttolookprettier
¨ Alwaysfollowguidelinesforlook-and-feel¤ CouldeitherbesetbyOSorsystemorboth¤ Matchusersexpectationsiftheyconflict
Shortcuts
¨ Addhooksfor“powerusers”tobemoreefficient¤ RenamevariableusingAlt-Shift-RinEclipse¤ Automaticallyexpandsysout&syserr ¤ ApplyquickfixusingCtlr-1
¨ Timetoreach“PassionLevel”improved¤ Passionateusersrecruitnewcustomersforyourwork
¨ Providesproofofmembershipinthein-crowd
Predictability
¨ Mostimportantofalltheseextras¨ VeryquicklyusersstoppayingattentiontotheUI
¤ Fadesintobackground(untilitlosestheirdata)¤ Differencebetweenlove&hateisveryslim
Predictability
¨ Donothurttheonesyoulove¤ Keepbuttonsinsamelocation¤ OKmeansonethingandnever,everchanges¤ Changeonlytofocususer’sattention
Predictability
¨ Donothurttheonesyoulove¤ Keepbuttonsinsamelocation¤ OKmeansonethingandnever,everchanges¤ Changeonlytofocususer’sattention
Predictability
¨ Donothurttheonesyoulove¤ Keepbuttonsinsamelocation¤ OKmeansonethingandnever,everchanges¤ Changeonlytofocususer’sattention
WhereAretheFeatures?
AbilityWithApp
lication
TimeUsingProgram
Ongoing
Cancelled
Passion Threshold
Suck Threshold
User’sThoughtsofAProgram
Now we are here
AbilityWithApp
lication
TimeUsingProgram
Word
Angel
User’sThoughtsofAProgram
Passion Threshold
Suck Threshold
Now we are here
TestYourUIDesignEarly
¨ Testprogram'sscreensonyourself&potentialusers¤ Makecertaintoincludepeopleatallexperiencelevels¤ Describescreen&actionstoseeifuseissimpleenough¤ GotothatstartandwalkthroughrequirementsonGUI¤ Simulateallinputevenifitmeansusingfingerasmouse¤ Eachpauseorquestionshowswheredesignnotready