SlideShare a Scribd company logo
1 of 21
Download to read offline
Empathetic component design
Reusable UI components
Frank Linehan Senior Software Engineer
I’m Frank(ie)
Senior Software Engineer on Mobile APM
I like to build reusable patterns.
What is Empathy?
The action of understanding, being
aware of, being sensitive to, and
vicariously experiencing the feelings,
thoughts, and experience of another of
either the past or present without
having the feelings, thoughts, and
experience fully communicated in an
objectively explicit manner.
Empathy is not
Sympathy
Developer Experience
Why think about Developer Experience (DX)?
● DX is about how developers feel while using your API – it’s emotive.
● The Principle of Least Astonishment states that the result of performing some
operation should be obvious, consistent, and predictable, based upon the
name of the operation and other clues.
Design with developer empathy
What is the problem we’re trying to solve?
Who are we solving this problem for?
What exactly do we want the users of our API to feel?
What kind of experience are we trying to create and what kind of emotional
response are we aiming for?
A Empathetic API in practice
- with React
Make our users (hey that is us) feel good.
Make it easy to
understand
Self documenting
React proptypes are a great way to
self document a component.
By specifying what types of props a
component expects during
development. Engineers will know
what the component needs to function.
Make it easier to use
Make it Easier To Use: Worry about data
Concept of “Dumb” React components: are
composable, easy to configure, and not
opinionated on how they are used.
These “dumb” components might take data as a
prop or specify the API call the component
should make.
Management of fetching data is up to the owner
of the reusable component, she could use a API
package of generic API calls.
Separating the data calls from the “dumb”
component.
API Example
“dumb” components should have
enough state to be useful.
There should be some way to pass the
useful data up to the parent, letting the
parent know when the state has
changed.
Make it Easier To Use: A little state goes a long way
Make it feel good
Namespaces are your friends
Namespaces are your friends cont...
“Programs must be written for people to read, and only incidentally for machines to
execute.” – Hal Abelson, Structure and Interpretation of Computer Programs
“The best programs are written so that computing machines can perform them
quickly and so that human beings can understand them clearly. A programmer is
ideally an essayist who works with traditional aesthetic and literary forms as well
as mathematical concepts, to communicate the way that an algorithm works and
to convince a reader that the results will be correct.” – Donald E. Knuth, Selected
Papers on Computer Science
Why do this?
You will better understand the needs of your
customers at work.

More Related Content

What's hot

Artificially Intelligent chatbot Implementation
Artificially Intelligent chatbot ImplementationArtificially Intelligent chatbot Implementation
Artificially Intelligent chatbot ImplementationRakesh Chintha
 
How do Chatbots Work? A Guide to Chatbot Architecture
How do Chatbots Work? A Guide to Chatbot ArchitectureHow do Chatbots Work? A Guide to Chatbot Architecture
How do Chatbots Work? A Guide to Chatbot ArchitectureMaruti Techlabs
 
Aaron laverypro1presentation
Aaron laverypro1presentationAaron laverypro1presentation
Aaron laverypro1presentationAaronLavery
 
Usability in ABAP Programs - SITSP2011
Usability in ABAP Programs - SITSP2011Usability in ABAP Programs - SITSP2011
Usability in ABAP Programs - SITSP2011Mauricio Cruz
 
Cognitive Services APIs [Mihai Negrea]
Cognitive Services APIs [Mihai Negrea]Cognitive Services APIs [Mihai Negrea]
Cognitive Services APIs [Mihai Negrea]ITCamp
 
Aparna Updated resume
Aparna Updated resumeAparna Updated resume
Aparna Updated resumeAparna Vecham
 
Watson Conversation Services and Virtual Assistant - Basic Summary
Watson Conversation Services and Virtual Assistant - Basic SummaryWatson Conversation Services and Virtual Assistant - Basic Summary
Watson Conversation Services and Virtual Assistant - Basic SummaryGanesh Ghag
 
Chatbot and Virtual AI Assistant Implementation in Natural Language Processing
Chatbot and Virtual AI Assistant Implementation in Natural Language Processing Chatbot and Virtual AI Assistant Implementation in Natural Language Processing
Chatbot and Virtual AI Assistant Implementation in Natural Language Processing Shrutika Oswal
 

What's hot (12)

Artificially Intelligent chatbot Implementation
Artificially Intelligent chatbot ImplementationArtificially Intelligent chatbot Implementation
Artificially Intelligent chatbot Implementation
 
Dialogflow
DialogflowDialogflow
Dialogflow
 
How do Chatbots Work? A Guide to Chatbot Architecture
How do Chatbots Work? A Guide to Chatbot ArchitectureHow do Chatbots Work? A Guide to Chatbot Architecture
How do Chatbots Work? A Guide to Chatbot Architecture
 
Aaron laverypro1presentation
Aaron laverypro1presentationAaron laverypro1presentation
Aaron laverypro1presentation
 
Usability in ABAP Programs - SITSP2011
Usability in ABAP Programs - SITSP2011Usability in ABAP Programs - SITSP2011
Usability in ABAP Programs - SITSP2011
 
Chatbot
ChatbotChatbot
Chatbot
 
Machine learning helps face recognition march 2020
Machine learning helps face recognition march 2020Machine learning helps face recognition march 2020
Machine learning helps face recognition march 2020
 
Rajkumar
RajkumarRajkumar
Rajkumar
 
Cognitive Services APIs [Mihai Negrea]
Cognitive Services APIs [Mihai Negrea]Cognitive Services APIs [Mihai Negrea]
Cognitive Services APIs [Mihai Negrea]
 
Aparna Updated resume
Aparna Updated resumeAparna Updated resume
Aparna Updated resume
 
Watson Conversation Services and Virtual Assistant - Basic Summary
Watson Conversation Services and Virtual Assistant - Basic SummaryWatson Conversation Services and Virtual Assistant - Basic Summary
Watson Conversation Services and Virtual Assistant - Basic Summary
 
Chatbot and Virtual AI Assistant Implementation in Natural Language Processing
Chatbot and Virtual AI Assistant Implementation in Natural Language Processing Chatbot and Virtual AI Assistant Implementation in Natural Language Processing
Chatbot and Virtual AI Assistant Implementation in Natural Language Processing
 

Similar to Empathetic component design

Introduction To Domain Driven Design
Introduction To Domain Driven DesignIntroduction To Domain Driven Design
Introduction To Domain Driven DesignPaul Rayner
 
How to Embed UX Thinking in Your Next API
How to Embed UX Thinking in Your Next APIHow to Embed UX Thinking in Your Next API
How to Embed UX Thinking in Your Next APIPronovix
 
Abap for functional consultants
Abap for functional consultantsAbap for functional consultants
Abap for functional consultantsMohammad Mousavi
 
A holistic guide to annotated wireframes for app development
A holistic guide to annotated wireframes for app developmentA holistic guide to annotated wireframes for app development
A holistic guide to annotated wireframes for app developmentConcetto Labs
 
Bagels & Bytes: Data Scientist Event
Bagels & Bytes: Data Scientist EventBagels & Bytes: Data Scientist Event
Bagels & Bytes: Data Scientist EventAmazon Web Services
 
User Experience Distilled
User Experience DistilledUser Experience Distilled
User Experience DistilledHindu Dharma
 
Software design.edited (1)
Software design.edited (1)Software design.edited (1)
Software design.edited (1)FarjanaAhmed3
 
World Usability Day 2014 - UX Toolbelt for Developers
World Usability Day 2014 - UX Toolbelt for DevelopersWorld Usability Day 2014 - UX Toolbelt for Developers
World Usability Day 2014 - UX Toolbelt for DevelopersSarah Dutkiewicz
 
Developers are People Too! Building a DX-Based API Strategy Ronnie Mitra, Pri...
Developers are People Too! Building a DX-Based API Strategy Ronnie Mitra, Pri...Developers are People Too! Building a DX-Based API Strategy Ronnie Mitra, Pri...
Developers are People Too! Building a DX-Based API Strategy Ronnie Mitra, Pri...CA API Management
 
Want to integrate your business phone system or contact center with your CRM?
Want to integrate your business phone system or contact center with your CRM?Want to integrate your business phone system or contact center with your CRM?
Want to integrate your business phone system or contact center with your CRM?Coreyskute Turner
 
10 Design Commandments for Mobile App Developers
10 Design Commandments for Mobile App Developers10 Design Commandments for Mobile App Developers
10 Design Commandments for Mobile App DevelopersJigyasa Makkar
 
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
 
Importance of User eXperience
Importance of User eXperienceImportance of User eXperience
Importance of User eXperienceguest1bcbc9
 

Similar to Empathetic component design (20)

Introduction To Domain Driven Design
Introduction To Domain Driven DesignIntroduction To Domain Driven Design
Introduction To Domain Driven Design
 
Hci 3
Hci 3Hci 3
Hci 3
 
How to Embed UX Thinking in Your Next API
How to Embed UX Thinking in Your Next APIHow to Embed UX Thinking in Your Next API
How to Embed UX Thinking in Your Next API
 
Agent Oriented Programming PPT
Agent Oriented Programming PPTAgent Oriented Programming PPT
Agent Oriented Programming PPT
 
ITFT - Software
ITFT -  SoftwareITFT -  Software
ITFT - Software
 
Interface design
Interface designInterface design
Interface design
 
Abap for functional consultants
Abap for functional consultantsAbap for functional consultants
Abap for functional consultants
 
A holistic guide to annotated wireframes for app development
A holistic guide to annotated wireframes for app developmentA holistic guide to annotated wireframes for app development
A holistic guide to annotated wireframes for app development
 
Bagels & Bytes: Data Scientist Event
Bagels & Bytes: Data Scientist EventBagels & Bytes: Data Scientist Event
Bagels & Bytes: Data Scientist Event
 
User Experience Distilled
User Experience DistilledUser Experience Distilled
User Experience Distilled
 
Software design.edited (1)
Software design.edited (1)Software design.edited (1)
Software design.edited (1)
 
Machine Learning in the AWS Cloud
Machine Learning in the AWS CloudMachine Learning in the AWS Cloud
Machine Learning in the AWS Cloud
 
World Usability Day 2014 - UX Toolbelt for Developers
World Usability Day 2014 - UX Toolbelt for DevelopersWorld Usability Day 2014 - UX Toolbelt for Developers
World Usability Day 2014 - UX Toolbelt for Developers
 
Developers are People Too! Building a DX-Based API Strategy Ronnie Mitra, Pri...
Developers are People Too! Building a DX-Based API Strategy Ronnie Mitra, Pri...Developers are People Too! Building a DX-Based API Strategy Ronnie Mitra, Pri...
Developers are People Too! Building a DX-Based API Strategy Ronnie Mitra, Pri...
 
Want to integrate your business phone system or contact center with your CRM?
Want to integrate your business phone system or contact center with your CRM?Want to integrate your business phone system or contact center with your CRM?
Want to integrate your business phone system or contact center with your CRM?
 
10 Design Commandments for Mobile App Developers
10 Design Commandments for Mobile App Developers10 Design Commandments for Mobile App Developers
10 Design Commandments for Mobile App Developers
 
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
 
SlideShare Test-1
SlideShare Test-1SlideShare Test-1
SlideShare Test-1
 
Api best practices
Api best practicesApi best practices
Api best practices
 
Importance of User eXperience
Importance of User eXperienceImportance of User eXperience
Importance of User eXperience
 

More from Frank Linehan

Composition vs inheritance
Composition vs inheritanceComposition vs inheritance
Composition vs inheritanceFrank Linehan
 
Anti patterns in the wild
Anti patterns in the wildAnti patterns in the wild
Anti patterns in the wildFrank Linehan
 
How mobile APM UI manages state at New Relic
How mobile APM UI manages state at New RelicHow mobile APM UI manages state at New Relic
How mobile APM UI manages state at New RelicFrank Linehan
 
Future of ui be micro
Future of ui be micro Future of ui be micro
Future of ui be micro Frank Linehan
 

More from Frank Linehan (7)

Composition vs inheritance
Composition vs inheritanceComposition vs inheritance
Composition vs inheritance
 
Anti patterns in the wild
Anti patterns in the wildAnti patterns in the wild
Anti patterns in the wild
 
How mobile APM UI manages state at New Relic
How mobile APM UI manages state at New RelicHow mobile APM UI manages state at New Relic
How mobile APM UI manages state at New Relic
 
Future of ui be micro
Future of ui be micro Future of ui be micro
Future of ui be micro
 
Angular pres
Angular presAngular pres
Angular pres
 
Jwt
JwtJwt
Jwt
 
AngularU Recap
AngularU RecapAngularU Recap
AngularU Recap
 

Recently uploaded

Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
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
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
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
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
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
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 

Recently uploaded (20)

Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
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!
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
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
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 

Empathetic component design

  • 1.
  • 2. Empathetic component design Reusable UI components Frank Linehan Senior Software Engineer
  • 3. I’m Frank(ie) Senior Software Engineer on Mobile APM I like to build reusable patterns.
  • 4. What is Empathy? The action of understanding, being aware of, being sensitive to, and vicariously experiencing the feelings, thoughts, and experience of another of either the past or present without having the feelings, thoughts, and experience fully communicated in an objectively explicit manner.
  • 7. Why think about Developer Experience (DX)? ● DX is about how developers feel while using your API – it’s emotive. ● The Principle of Least Astonishment states that the result of performing some operation should be obvious, consistent, and predictable, based upon the name of the operation and other clues.
  • 8. Design with developer empathy What is the problem we’re trying to solve? Who are we solving this problem for? What exactly do we want the users of our API to feel? What kind of experience are we trying to create and what kind of emotional response are we aiming for?
  • 9. A Empathetic API in practice - with React Make our users (hey that is us) feel good.
  • 10. Make it easy to understand
  • 11. Self documenting React proptypes are a great way to self document a component. By specifying what types of props a component expects during development. Engineers will know what the component needs to function.
  • 12. Make it easier to use
  • 13. Make it Easier To Use: Worry about data Concept of “Dumb” React components: are composable, easy to configure, and not opinionated on how they are used. These “dumb” components might take data as a prop or specify the API call the component should make. Management of fetching data is up to the owner of the reusable component, she could use a API package of generic API calls. Separating the data calls from the “dumb” component.
  • 15. “dumb” components should have enough state to be useful. There should be some way to pass the useful data up to the parent, letting the parent know when the state has changed. Make it Easier To Use: A little state goes a long way
  • 16. Make it feel good
  • 18. Namespaces are your friends cont...
  • 19. “Programs must be written for people to read, and only incidentally for machines to execute.” – Hal Abelson, Structure and Interpretation of Computer Programs “The best programs are written so that computing machines can perform them quickly and so that human beings can understand them clearly. A programmer is ideally an essayist who works with traditional aesthetic and literary forms as well as mathematical concepts, to communicate the way that an algorithm works and to convince a reader that the results will be correct.” – Donald E. Knuth, Selected Papers on Computer Science
  • 20.
  • 21. Why do this? You will better understand the needs of your customers at work.