SlideShare ist ein Scribd-Unternehmen logo
1 von 30
Downloaden Sie, um offline zu lesen
Is There a "User" in
Your User Interface
Ladislav Mačkala
IT director, Podsjetnik d.o.o
About me
18+ years of experience in Java
development and relational database design
and implementation
Holding B.Sc. And M.Sc. in Computing
Have lead Java development teams in
several software companies in Croatia
Currently leading IT and Marketing
department in medical tourism company
What is this presentation about?
About my experience in GUI development
About importance of listening to your users
when developing GUI
About user-developer impedance mismatch
Motive
A real-life example
Application 1: CRM
developed in-house, custom-tailored, 1 year in
production, cca 50 users
Application 2: ERP
made by a domestic software company, off-the-shelf
product, 3 months in production, cca 10 users
Some users use both applications – their user
experience with each of them is drastically different!
Motive (part II)
A friend of mine, a developer, showed me
his DSL framework and generated server-
side code.
When I asked about the GUI, he answered:
„Oh, that's easy.”
Is it?
User – developer impedance
mismatch
End users and developers have different
perception of the same application
End users use it every day, in the predictive
way, and want the application to MAKE
THEIR LIFE EASIER!
Developers want to make cool things, but in
the end don't use these applications!
Goals
To find what makes end users ("them")
happy
To find what makes developers ("us") happy
To find ways to reduce user-developer
impedance mismatch
The developers' side
Developers love to create new, cool and
interesting stuff
Developers hate to do boring and repetitive
things (like maintaining their own code)
Developers are focused on technology
Developers are in love with their models
The developers' side (part II)
Developers think that the GUI they produce
is much less important then their code and
data models
Developers think they are smarter than their
users (danger!)
Developers rarely want or can see their
application through users' eyes – they rarely
think of USER EXPERIENCE
The users' side
Users use the application to do their job, and
that which makes it easier
Users want to be faster using your
application, not slower
Users don't want to adjust to the application,
but want the application to be adjusted to
them
Users want the application to look good,
because they look at it most of the time
The users' side (part II)
Users want consistency while they work
with the application – which means: they
want to learn only once
Users want the application to be fast -
which means: they don’t want to wait for
the application
Users like colors, images, fonts, charts...
Users are INERT, they don't like
changes
Real-life stories
Experiences of my team and my users
Both good and not so good
Story 1: make your GUI logical
Users want to be forced to use as little
clicks/steps as possible
Users want to learn things once and then to
repeat them
Consequence: my old users teach new
users how to use the application during
business rules education – without IT
support!
Story 2: accelerate time-consuming
tasks
Creating offers for our patients
Frequent operation
Time-consuming: lots of manual tasks,
lots of clicks
Similar offers must be created from
scratch
Story 2: accelerate time-consuming
tasks (part II)
Solution: implemented creating offers through
"shortcuts", "shortcut" templates and copying
offers
Result: time per offer reduced 5-10 times (15
min. to 2-3 min. per offer), for group of offers
even more
Users actively participated in development
and were delighted with that feature
Story 3: missing colors in the
pallette
We upgraded our infrastructure (SmartGWT
3.0 -> 4.1)
The ColorPicker in the RichText editor
doesn't have the same colors in the pallete
And our users love the specific hue of pink
that is now gone!
Solution: not resolved yet – the possibility of
riots not negligible!
Before (v. 3.0)
After (v. 4.1)
Story 4: making application faster
We accelerated some frequently used parts of the
application by adding missing indices in the database
We accelerated the frequently used reservation calendar
with heavy refactoring and framework upgrade
We removed some premature optimizations that reflected
general application performance
Consequence: nobody noticed!
When we asked them if they noticed, they admitted that it
seemed a little bit faster, but they “weren’t sure"
Story 5: making application slower
We mistakenly deployed a new version with
suboptimal SQL query in the frequently used part
of the application
We upgraded our infrastructure due to serious bug
that could cause data corruption and some parts of
application got a little bit slower.
Consequence: our support lines got hot-red!
They notice the slightest change in speed, if that
change in speed means slower!
Story 6: who wanted it?
One user wanted something trivial like italic font and red color to
emphasize something – it was done in minutes and everyone was
delighted!
We made small auxiliary tool for our cashiers when they have to
calculate percentages - it was done in an hour and they loved it!
We have worked for days on a complex feature that wasn't requested
by users but was crucial to implement from business perspective –
some users noticed and nobody was impressed!
Conclusion: it's not about how hard it is to implement something or how
much time it took – it's about who wanted it in the first place and if it
makes their life easier!
Story 7: protecting user from
themselves
Users want to be informed when they are trying to
do something wrong
Users want to be warned if their actions may result
with some unpredicted situation
Users don't want to be able to do things in several
various ways, they want just one way
Conclusion: it's better to unnecessary warn your
users, than not to warn them at all!
Story 8: using colors and images
We made main application screens full of colors,
images and various fonts.
Our users are accustomed to the layout of those
views and can spot the vital information without
much reading, just scanning.
Conclusion: make your application easy to scan!
Conclusion
Include your users in all phases of your
development process!
Listen to them!
Don't assume what they want – ask them!
Make them happy and they will be grateful
and loyal! (maybe even do your job )
Q & A

Weitere ähnliche Inhalte

Andere mochten auch

Andere mochten auch (20)

JavaCro'15 - Creating Android Apps that Use Liferay - Igor Bešlić
JavaCro'15 - Creating Android Apps that Use Liferay - Igor BešlićJavaCro'15 - Creating Android Apps that Use Liferay - Igor Bešlić
JavaCro'15 - Creating Android Apps that Use Liferay - Igor Bešlić
 
JavaCro'14 - Vaadin scalability myth – Gordan Ivanović
JavaCro'14 - Vaadin scalability myth – Gordan IvanovićJavaCro'14 - Vaadin scalability myth – Gordan Ivanović
JavaCro'14 - Vaadin scalability myth – Gordan Ivanović
 
JavaCro'14 - Continuous deployment tool – Aleksandar Dostić and Emir Džaferović
JavaCro'14 - Continuous deployment tool – Aleksandar Dostić and Emir DžaferovićJavaCro'14 - Continuous deployment tool – Aleksandar Dostić and Emir Džaferović
JavaCro'14 - Continuous deployment tool – Aleksandar Dostić and Emir Džaferović
 
JavaCro'14 - Packaging and installing of the JEE solution – Miroslav Rešetar
JavaCro'14 - Packaging and installing of the JEE solution – Miroslav RešetarJavaCro'14 - Packaging and installing of the JEE solution – Miroslav Rešetar
JavaCro'14 - Packaging and installing of the JEE solution – Miroslav Rešetar
 
JavaCro'14 - Profile any environment with Java Flight Recorder – Johan Janssen
JavaCro'14 - Profile any environment with Java Flight Recorder – Johan JanssenJavaCro'14 - Profile any environment with Java Flight Recorder – Johan Janssen
JavaCro'14 - Profile any environment with Java Flight Recorder – Johan Janssen
 
JavaCro'14 - Can You Tell Me How to Get to Sesame Street I wanna be a Grails ...
JavaCro'14 - Can You Tell Me How to Get to Sesame Street I wanna be a Grails ...JavaCro'14 - Can You Tell Me How to Get to Sesame Street I wanna be a Grails ...
JavaCro'14 - Can You Tell Me How to Get to Sesame Street I wanna be a Grails ...
 
JavaCro'14 - MEAN Stack – How & When – Nenad Pećanac
JavaCro'14 - MEAN Stack – How & When – Nenad PećanacJavaCro'14 - MEAN Stack – How & When – Nenad Pećanac
JavaCro'14 - MEAN Stack – How & When – Nenad Pećanac
 
JavaCro'14 - Cloud Platforms in Internet of Things – Krešimir Mišura and Bran...
JavaCro'14 - Cloud Platforms in Internet of Things – Krešimir Mišura and Bran...JavaCro'14 - Cloud Platforms in Internet of Things – Krešimir Mišura and Bran...
JavaCro'14 - Cloud Platforms in Internet of Things – Krešimir Mišura and Bran...
 
JavaCro'14 - WebLogic-GlassFish-JaaS Strategy and Roadmap – Duško Vukmanović
JavaCro'14 - WebLogic-GlassFish-JaaS Strategy and Roadmap – Duško VukmanovićJavaCro'14 - WebLogic-GlassFish-JaaS Strategy and Roadmap – Duško Vukmanović
JavaCro'14 - WebLogic-GlassFish-JaaS Strategy and Roadmap – Duško Vukmanović
 
JavaCro'14 - ZeroMQ and Java(Script) – Mladen Čikara
JavaCro'14 - ZeroMQ and Java(Script) – Mladen ČikaraJavaCro'14 - ZeroMQ and Java(Script) – Mladen Čikara
JavaCro'14 - ZeroMQ and Java(Script) – Mladen Čikara
 
JavaCro'14 - JavaScript single-page applications i JEE, can they fit together...
JavaCro'14 - JavaScript single-page applications i JEE, can they fit together...JavaCro'14 - JavaScript single-page applications i JEE, can they fit together...
JavaCro'14 - JavaScript single-page applications i JEE, can they fit together...
 
JavaCro'14 - Securing web applications with Spring Security 3 – Fernando Redo...
JavaCro'14 - Securing web applications with Spring Security 3 – Fernando Redo...JavaCro'14 - Securing web applications with Spring Security 3 – Fernando Redo...
JavaCro'14 - Securing web applications with Spring Security 3 – Fernando Redo...
 
JavaCro'14 - Scala and Java EE 7 Development Experiences – Peter Pilgrim
JavaCro'14 - Scala and Java EE 7 Development Experiences – Peter PilgrimJavaCro'14 - Scala and Java EE 7 Development Experiences – Peter Pilgrim
JavaCro'14 - Scala and Java EE 7 Development Experiences – Peter Pilgrim
 
JavaCro'14 - Log as basis for distributed systems – Vjeran Marčinko
JavaCro'14 - Log as basis for distributed systems – Vjeran MarčinkoJavaCro'14 - Log as basis for distributed systems – Vjeran Marčinko
JavaCro'14 - Log as basis for distributed systems – Vjeran Marčinko
 
JavaCro'14 - Developing Google Chromecast applications on Android – Branimir ...
JavaCro'14 - Developing Google Chromecast applications on Android – Branimir ...JavaCro'14 - Developing Google Chromecast applications on Android – Branimir ...
JavaCro'14 - Developing Google Chromecast applications on Android – Branimir ...
 
JavaCro'14 - Automatic database migrations – Marko Elezović
JavaCro'14 - Automatic database migrations – Marko ElezovićJavaCro'14 - Automatic database migrations – Marko Elezović
JavaCro'14 - Automatic database migrations – Marko Elezović
 
JavaCro'14 - The World of Java – in Croatia – Branko Mihaljević and Aleksande...
JavaCro'14 - The World of Java – in Croatia – Branko Mihaljević and Aleksande...JavaCro'14 - The World of Java – in Croatia – Branko Mihaljević and Aleksande...
JavaCro'14 - The World of Java – in Croatia – Branko Mihaljević and Aleksande...
 
JavaCro'14 - GWT rebooted – Gordan Krešić
JavaCro'14 - GWT rebooted – Gordan KrešićJavaCro'14 - GWT rebooted – Gordan Krešić
JavaCro'14 - GWT rebooted – Gordan Krešić
 
JavaCro'14 - Java in M2M technologies – Mango M2M software – Ivan Raguž
JavaCro'14 - Java in M2M technologies – Mango M2M software – Ivan RagužJavaCro'14 - Java in M2M technologies – Mango M2M software – Ivan Raguž
JavaCro'14 - Java in M2M technologies – Mango M2M software – Ivan Raguž
 
JavaCro'14 - How to handle large amounts of data in real time using a cloud e...
JavaCro'14 - How to handle large amounts of data in real time using a cloud e...JavaCro'14 - How to handle large amounts of data in real time using a cloud e...
JavaCro'14 - How to handle large amounts of data in real time using a cloud e...
 

Ähnlich wie JavaCro'14 - Is there a “user” in your user interface – Ladislav Mačkala

Google UX Design Course - Portfolio Project 1 - App Design for a Fictional St...
Google UX Design Course - Portfolio Project 1 - App Design for a Fictional St...Google UX Design Course - Portfolio Project 1 - App Design for a Fictional St...
Google UX Design Course - Portfolio Project 1 - App Design for a Fictional St...AnandGopalakrishnan8
 
UIUX Design - report on summer training.docx
UIUX Design - report on summer training.docxUIUX Design - report on summer training.docx
UIUX Design - report on summer training.docxbhawnamangla2
 
Usability in ABAP Programs - SITSP2011
Usability in ABAP Programs - SITSP2011Usability in ABAP Programs - SITSP2011
Usability in ABAP Programs - SITSP2011Mauricio Cruz
 
Usability principles 1
Usability principles 1Usability principles 1
Usability principles 1Sameer Chavan
 
Snapchat - Google Docs.pdf
Snapchat - Google Docs.pdfSnapchat - Google Docs.pdf
Snapchat - Google Docs.pdfharikacheluru
 
GetHelp UI Interface and Interaction Design Case Study
GetHelp UI Interface and Interaction Design Case StudyGetHelp UI Interface and Interaction Design Case Study
GetHelp UI Interface and Interaction Design Case StudySu Yuen Chin
 
Latest_Portfolio_Anxiao_chen
Latest_Portfolio_Anxiao_chenLatest_Portfolio_Anxiao_chen
Latest_Portfolio_Anxiao_chenAnxiao Chen
 
Role of an Architect in Software Usability Engineering
Role of an Architect in Software Usability EngineeringRole of an Architect in Software Usability Engineering
Role of an Architect in Software Usability Engineeringthinakes
 
There's Apps for that
There's Apps for thatThere's Apps for that
There's Apps for thatAndreas Weder
 
Zainab Kashim Portfolio 2019
Zainab Kashim Portfolio 2019Zainab Kashim Portfolio 2019
Zainab Kashim Portfolio 2019zainabkashim
 
fast delivery (1).pptx
fast delivery (1).pptxfast delivery (1).pptx
fast delivery (1).pptxImaneBenamou
 
How to Create Wireframes For Mobile Apps and Why It’s Good for Apps.pdf
How to Create Wireframes For Mobile Apps and Why It’s Good for Apps.pdfHow to Create Wireframes For Mobile Apps and Why It’s Good for Apps.pdf
How to Create Wireframes For Mobile Apps and Why It’s Good for Apps.pdfMarie Weaver
 
Ashfaq Amin's UX Portfolio
Ashfaq Amin's UX PortfolioAshfaq Amin's UX Portfolio
Ashfaq Amin's UX PortfolioAshfaq Amin
 
1.Usability Engineering.pptx
1.Usability Engineering.pptx1.Usability Engineering.pptx
1.Usability Engineering.pptxDr.Saranya K.G
 
Gamer’s for Life Application .docx
Gamer’s for Life Application .docxGamer’s for Life Application .docx
Gamer’s for Life Application .docxhanneloremccaffery
 
Achieving quality contraints
Achieving quality contraintsAchieving quality contraints
Achieving quality contraintsK Senthil Kumar
 
User Experience Masterclass 101 with Mark Swaine
User Experience Masterclass 101 with Mark SwaineUser Experience Masterclass 101 with Mark Swaine
User Experience Masterclass 101 with Mark SwaineMark N Swaine
 
Sample_report_for_MINI_PROJECT.docx (1).pdf
Sample_report_for_MINI_PROJECT.docx (1).pdfSample_report_for_MINI_PROJECT.docx (1).pdf
Sample_report_for_MINI_PROJECT.docx (1).pdfEkagraGupta1
 

Ähnlich wie JavaCro'14 - Is there a “user” in your user interface – Ladislav Mačkala (20)

Google UX Design Course - Portfolio Project 1 - App Design for a Fictional St...
Google UX Design Course - Portfolio Project 1 - App Design for a Fictional St...Google UX Design Course - Portfolio Project 1 - App Design for a Fictional St...
Google UX Design Course - Portfolio Project 1 - App Design for a Fictional St...
 
UIUX Design - report on summer training.docx
UIUX Design - report on summer training.docxUIUX Design - report on summer training.docx
UIUX Design - report on summer training.docx
 
Usability in ABAP Programs - SITSP2011
Usability in ABAP Programs - SITSP2011Usability in ABAP Programs - SITSP2011
Usability in ABAP Programs - SITSP2011
 
Usability principles 1
Usability principles 1Usability principles 1
Usability principles 1
 
Snapchat - Google Docs.pdf
Snapchat - Google Docs.pdfSnapchat - Google Docs.pdf
Snapchat - Google Docs.pdf
 
GetHelp UI Interface and Interaction Design Case Study
GetHelp UI Interface and Interaction Design Case StudyGetHelp UI Interface and Interaction Design Case Study
GetHelp UI Interface and Interaction Design Case Study
 
P5 Ontarget
P5 OntargetP5 Ontarget
P5 Ontarget
 
Latest_Portfolio_Anxiao_chen
Latest_Portfolio_Anxiao_chenLatest_Portfolio_Anxiao_chen
Latest_Portfolio_Anxiao_chen
 
Role of an Architect in Software Usability Engineering
Role of an Architect in Software Usability EngineeringRole of an Architect in Software Usability Engineering
Role of an Architect in Software Usability Engineering
 
There's Apps for that
There's Apps for thatThere's Apps for that
There's Apps for that
 
Zainab Kashim Portfolio 2019
Zainab Kashim Portfolio 2019Zainab Kashim Portfolio 2019
Zainab Kashim Portfolio 2019
 
fast delivery (1).pptx
fast delivery (1).pptxfast delivery (1).pptx
fast delivery (1).pptx
 
How to Create Wireframes For Mobile Apps and Why It’s Good for Apps.pdf
How to Create Wireframes For Mobile Apps and Why It’s Good for Apps.pdfHow to Create Wireframes For Mobile Apps and Why It’s Good for Apps.pdf
How to Create Wireframes For Mobile Apps and Why It’s Good for Apps.pdf
 
Ashfaq Amin's UX Portfolio
Ashfaq Amin's UX PortfolioAshfaq Amin's UX Portfolio
Ashfaq Amin's UX Portfolio
 
1.Usability Engineering.pptx
1.Usability Engineering.pptx1.Usability Engineering.pptx
1.Usability Engineering.pptx
 
Gamer’s for Life Application .docx
Gamer’s for Life Application .docxGamer’s for Life Application .docx
Gamer’s for Life Application .docx
 
Achieving quality contraints
Achieving quality contraintsAchieving quality contraints
Achieving quality contraints
 
User Experience Masterclass 101 with Mark Swaine
User Experience Masterclass 101 with Mark SwaineUser Experience Masterclass 101 with Mark Swaine
User Experience Masterclass 101 with Mark Swaine
 
FINAL REPORT
FINAL REPORTFINAL REPORT
FINAL REPORT
 
Sample_report_for_MINI_PROJECT.docx (1).pdf
Sample_report_for_MINI_PROJECT.docx (1).pdfSample_report_for_MINI_PROJECT.docx (1).pdf
Sample_report_for_MINI_PROJECT.docx (1).pdf
 

Mehr von HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association

Mehr von HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association (20)

Java cro'21 the best tools for java developers in 2021 - hujak
Java cro'21   the best tools for java developers in 2021 - hujakJava cro'21   the best tools for java developers in 2021 - hujak
Java cro'21 the best tools for java developers in 2021 - hujak
 
JavaCro'21 - Java is Here To Stay - HUJAK Keynote
JavaCro'21 - Java is Here To Stay - HUJAK KeynoteJavaCro'21 - Java is Here To Stay - HUJAK Keynote
JavaCro'21 - Java is Here To Stay - HUJAK Keynote
 
Javantura v7 - Behaviour Driven Development with Cucumber - Ivan Lozić
Javantura v7 - Behaviour Driven Development with Cucumber - Ivan LozićJavantura v7 - Behaviour Driven Development with Cucumber - Ivan Lozić
Javantura v7 - Behaviour Driven Development with Cucumber - Ivan Lozić
 
Javantura v7 - The State of Java - Today and Tomowwow - HUJAK's Community Key...
Javantura v7 - The State of Java - Today and Tomowwow - HUJAK's Community Key...Javantura v7 - The State of Java - Today and Tomowwow - HUJAK's Community Key...
Javantura v7 - The State of Java - Today and Tomowwow - HUJAK's Community Key...
 
Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...
Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...
Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...
 
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
 
Javantura v6 - Java in Croatia and HUJAK - Branko Mihaljević, Aleksander Radovan
Javantura v6 - Java in Croatia and HUJAK - Branko Mihaljević, Aleksander RadovanJavantura v6 - Java in Croatia and HUJAK - Branko Mihaljević, Aleksander Radovan
Javantura v6 - Java in Croatia and HUJAK - Branko Mihaljević, Aleksander Radovan
 
Javantura v6 - On the Aspects of Polyglot Programming and Memory Management i...
Javantura v6 - On the Aspects of Polyglot Programming and Memory Management i...Javantura v6 - On the Aspects of Polyglot Programming and Memory Management i...
Javantura v6 - On the Aspects of Polyglot Programming and Memory Management i...
 
Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...
Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...
Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...
 
Javantura v6 - How to help customers report bugs accurately - Miroslav Čerkez...
Javantura v6 - How to help customers report bugs accurately - Miroslav Čerkez...Javantura v6 - How to help customers report bugs accurately - Miroslav Čerkez...
Javantura v6 - How to help customers report bugs accurately - Miroslav Čerkez...
 
Javantura v6 - When remote work really works - the secrets behind successful ...
Javantura v6 - When remote work really works - the secrets behind successful ...Javantura v6 - When remote work really works - the secrets behind successful ...
Javantura v6 - When remote work really works - the secrets behind successful ...
 
Javantura v6 - Kotlin-Java Interop - Matej Vidaković
Javantura v6 - Kotlin-Java Interop - Matej VidakovićJavantura v6 - Kotlin-Java Interop - Matej Vidaković
Javantura v6 - Kotlin-Java Interop - Matej Vidaković
 
Javantura v6 - Spring HATEOAS hypermedia-driven web services, and clients tha...
Javantura v6 - Spring HATEOAS hypermedia-driven web services, and clients tha...Javantura v6 - Spring HATEOAS hypermedia-driven web services, and clients tha...
Javantura v6 - Spring HATEOAS hypermedia-driven web services, and clients tha...
 
Javantura v6 - End to End Continuous Delivery of Microservices for Kubernetes...
Javantura v6 - End to End Continuous Delivery of Microservices for Kubernetes...Javantura v6 - End to End Continuous Delivery of Microservices for Kubernetes...
Javantura v6 - End to End Continuous Delivery of Microservices for Kubernetes...
 
Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...
Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...
Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...
 
Javantura v6 - How can you improve the quality of your application - Ioannis ...
Javantura v6 - How can you improve the quality of your application - Ioannis ...Javantura v6 - How can you improve the quality of your application - Ioannis ...
Javantura v6 - How can you improve the quality of your application - Ioannis ...
 
Javantura v6 - Just say it v2 - Pavao Varela Petrac
Javantura v6 - Just say it v2 - Pavao Varela PetracJavantura v6 - Just say it v2 - Pavao Varela Petrac
Javantura v6 - Just say it v2 - Pavao Varela Petrac
 
Javantura v6 - Automation of web apps testing - Hrvoje Ruhek
Javantura v6 - Automation of web apps testing - Hrvoje RuhekJavantura v6 - Automation of web apps testing - Hrvoje Ruhek
Javantura v6 - Automation of web apps testing - Hrvoje Ruhek
 
Javantura v6 - Master the Concepts Behind the Java 10 Challenges and Eliminat...
Javantura v6 - Master the Concepts Behind the Java 10 Challenges and Eliminat...Javantura v6 - Master the Concepts Behind the Java 10 Challenges and Eliminat...
Javantura v6 - Master the Concepts Behind the Java 10 Challenges and Eliminat...
 
Javantura v6 - Building IoT Middleware with Microservices - Mario Kusek
Javantura v6 - Building IoT Middleware with Microservices - Mario KusekJavantura v6 - Building IoT Middleware with Microservices - Mario Kusek
Javantura v6 - Building IoT Middleware with Microservices - Mario Kusek
 

Kürzlich hochgeladen

"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 

Kürzlich hochgeladen (20)

"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 

JavaCro'14 - Is there a “user” in your user interface – Ladislav Mačkala

  • 1. Is There a "User" in Your User Interface Ladislav Mačkala IT director, Podsjetnik d.o.o
  • 2. About me 18+ years of experience in Java development and relational database design and implementation Holding B.Sc. And M.Sc. in Computing Have lead Java development teams in several software companies in Croatia Currently leading IT and Marketing department in medical tourism company
  • 3. What is this presentation about? About my experience in GUI development About importance of listening to your users when developing GUI About user-developer impedance mismatch
  • 4. Motive A real-life example Application 1: CRM developed in-house, custom-tailored, 1 year in production, cca 50 users Application 2: ERP made by a domestic software company, off-the-shelf product, 3 months in production, cca 10 users Some users use both applications – their user experience with each of them is drastically different!
  • 5. Motive (part II) A friend of mine, a developer, showed me his DSL framework and generated server- side code. When I asked about the GUI, he answered: „Oh, that's easy.” Is it?
  • 6. User – developer impedance mismatch End users and developers have different perception of the same application End users use it every day, in the predictive way, and want the application to MAKE THEIR LIFE EASIER! Developers want to make cool things, but in the end don't use these applications!
  • 7.
  • 8. Goals To find what makes end users ("them") happy To find what makes developers ("us") happy To find ways to reduce user-developer impedance mismatch
  • 9. The developers' side Developers love to create new, cool and interesting stuff Developers hate to do boring and repetitive things (like maintaining their own code) Developers are focused on technology Developers are in love with their models
  • 10. The developers' side (part II) Developers think that the GUI they produce is much less important then their code and data models Developers think they are smarter than their users (danger!) Developers rarely want or can see their application through users' eyes – they rarely think of USER EXPERIENCE
  • 11. The users' side Users use the application to do their job, and that which makes it easier Users want to be faster using your application, not slower Users don't want to adjust to the application, but want the application to be adjusted to them Users want the application to look good, because they look at it most of the time
  • 12. The users' side (part II) Users want consistency while they work with the application – which means: they want to learn only once Users want the application to be fast - which means: they don’t want to wait for the application Users like colors, images, fonts, charts... Users are INERT, they don't like changes
  • 13. Real-life stories Experiences of my team and my users Both good and not so good
  • 14. Story 1: make your GUI logical Users want to be forced to use as little clicks/steps as possible Users want to learn things once and then to repeat them Consequence: my old users teach new users how to use the application during business rules education – without IT support!
  • 15. Story 2: accelerate time-consuming tasks Creating offers for our patients Frequent operation Time-consuming: lots of manual tasks, lots of clicks Similar offers must be created from scratch
  • 16.
  • 17. Story 2: accelerate time-consuming tasks (part II) Solution: implemented creating offers through "shortcuts", "shortcut" templates and copying offers Result: time per offer reduced 5-10 times (15 min. to 2-3 min. per offer), for group of offers even more Users actively participated in development and were delighted with that feature
  • 18.
  • 19. Story 3: missing colors in the pallette We upgraded our infrastructure (SmartGWT 3.0 -> 4.1) The ColorPicker in the RichText editor doesn't have the same colors in the pallete And our users love the specific hue of pink that is now gone! Solution: not resolved yet – the possibility of riots not negligible!
  • 21. Story 4: making application faster We accelerated some frequently used parts of the application by adding missing indices in the database We accelerated the frequently used reservation calendar with heavy refactoring and framework upgrade We removed some premature optimizations that reflected general application performance Consequence: nobody noticed! When we asked them if they noticed, they admitted that it seemed a little bit faster, but they “weren’t sure"
  • 22. Story 5: making application slower We mistakenly deployed a new version with suboptimal SQL query in the frequently used part of the application We upgraded our infrastructure due to serious bug that could cause data corruption and some parts of application got a little bit slower. Consequence: our support lines got hot-red! They notice the slightest change in speed, if that change in speed means slower!
  • 23. Story 6: who wanted it? One user wanted something trivial like italic font and red color to emphasize something – it was done in minutes and everyone was delighted! We made small auxiliary tool for our cashiers when they have to calculate percentages - it was done in an hour and they loved it! We have worked for days on a complex feature that wasn't requested by users but was crucial to implement from business perspective – some users noticed and nobody was impressed! Conclusion: it's not about how hard it is to implement something or how much time it took – it's about who wanted it in the first place and if it makes their life easier!
  • 24. Story 7: protecting user from themselves Users want to be informed when they are trying to do something wrong Users want to be warned if their actions may result with some unpredicted situation Users don't want to be able to do things in several various ways, they want just one way Conclusion: it's better to unnecessary warn your users, than not to warn them at all!
  • 25.
  • 26. Story 8: using colors and images We made main application screens full of colors, images and various fonts. Our users are accustomed to the layout of those views and can spot the vital information without much reading, just scanning. Conclusion: make your application easy to scan!
  • 27.
  • 28.
  • 29. Conclusion Include your users in all phases of your development process! Listen to them! Don't assume what they want – ask them! Make them happy and they will be grateful and loyal! (maybe even do your job )
  • 30. Q & A