Empathy
The hidden ingredient of good
software development?
Daniel Bryant
@danielbryantuk
empathy
noun | em·pa·thy | ˈem-pə-thē
The feeling that you understand and share
another person's experiences and emotions
The ability to share someone else's
feelings and perspective
12/10/2016 @danielbryantuk
A typical software development debacle…
Me: I think we’re some missing empathy here…
Client: Is that a new JavaScript framework? Empathy.js?
Me: No, no – shared understanding...
Client: Is it a new communication style? RxEmpathy?
Me: No, I mean thinking about the needs and feelings of your
(customer|team mate|boss|internet troll)
12/10/2016 @danielbryantuk
Empathy misplaced?
12/10/2016 @danielbryantuk
We’re (typically) developing software…
…for other people
…with other people
...to create an (emotional) experience
Surely we have to understand other peoples’ experiences?
12/10/2016 @danielbryantuk
12/10/2016 @danielbryantuk
We’re (typically) developing software…
…for other people
…with other people
...to create an (emotional) experience
Surely we have to understand other peoples’ experiences?
This is why empathy is important
12/10/2016 @danielbryantuk
@danielbryantuk
• Chief Scientist at OpenCredo, CTO at SpectoLabs
• Agile, architecture, CI/CD, DevOps
• Java, Go, JS, microservices, cloud, containers
• Driving change through the application of technology and teams
• London Java Community Associate
• InfoQ Editor, DZone MVB, Voxxed…
• Conference regular: Devoxx, JavaOne, QCon…
12/10/2016 @danielbryantuk
The next 40 minutes: Empathy…
• Core principles
• In the real world
• Requirements gathering
• Architecture and development
• Operations
• Leadership
12/10/2016 @danielbryantuk
Core principles
Know yourself, know others, seek rapid feedback
12/10/2016 @danielbryantuk
Core themes in the presentation
• Know yourself
• Who we are determines how we see others (emotional intelligence)
• The first person we must examine is ourselves
• Know others
• The world – with one exception – is composed of others
• We can lift people up or take people down
• Seek rapid feedback
• No one gets it right all the time
12/10/2016 @danielbryantuk
Know thyself…
12/10/2016 @danielbryantuk
Know others
12/10/2016 @danielbryantuk
The range of empathy…
12/10/2016 @danielbryantuk
Strong empathy Strong apathy
Requirements gathering
Because we’re creating software for other people
12/10/2016 @danielbryantuk
IT as conversational medium
• Post-agile
• Design thinking
• Empathy
• Ethnography
• Abductive thinking
• Iterative user testing
• Start with why (impact)
12/10/2016 @danielbryantuk
Impact mapping
12/10/2016 @danielbryantuk
www.impactmapping.org
Personas
• Represent a major user group
• Express needs and expectations
• Uncovering universal features
and functionality
• Describe real people with
backgrounds, goals, and values
12/10/2016 @danielbryantuk
Empathy mapping
12/10/2016 @danielbryantuk
Ethnography - “get out of the building”
• www.notonthehighstreet.com
• “In your shoes”
• Large UK retailer
• “Shop floor time”
• My own experiences…
12/10/2016 @danielbryantuk
Core themes - requirements
• Know yourself
• What impact am I seeking? (Start with why)
• Know others
• Seek to understand users
• Visit users in their natural habitat
• Seek rapid feedback
• Prototyping
• Build, measure, learn
12/10/2016 @danielbryantuk
Architecture and development
Because we’re building software alongside other people
12/10/2016 @danielbryantuk
Architecture
• Shared understanding
• Architects must code
• ‘Just enough’ upfront design
• The power of diagramming
• Risk management
• Technical
• Stakeholder
12/10/2016 @danielbryantuk
Risk management - evaluation
“I will postpone using this shiny new framework until my peers have
validated the proposed benefits with rigorous scientific experiments”
- Said by no programmer
…ever
12/10/2016 @danielbryantuk
Evaluation - Fitness functions
• Microservices as an Evolutionary Architecture
• Neal Ford and Rebecca Parsons
• Great for evaluation and documentation
• Platforms / Language
• Middleware
• Data stores
12/10/2016 @danielbryantuk
Evaluation - Raible’s comparison matrix
12/10/2016 @danielbryantuk
www.slideshare.net/mraible/comparing-jvm-web-frameworks-february-2014
Evaluation – The Spine Model
• Effective conversations make for
effective collaboration
• It's a TOOL Problem
• As a species, we have always been Tool
users and makers.
• We use _____ to get our work done
• People get stuck in a dilemma where
equally plausible options are available
• “Going up the Spine” breaks deadlock http://spinemodel.info/explanation/introduction/
Determine the need for the tool
• PRACTICES before Tools
• Decide on the Practices that the tools are there to
support
• We do _____ to create value
• PRINCIPLES before Practices
• Decide on the Principles to measure those Practices
against.
• We leverage _____ to change the system
• VALUES before Principles
• Make as explicit as possible the Values at play in the
system.
• We optimise for _____
• NEEDS before Values
• It all starts at Needs. Why does this system exist in the
first place?
• We are here to satisfy _____ http://spinemodel.info/explanation/introduction/
Coding
• All code is communication
• ”Clean Code”
• Wikis and READMEs
“Always code as if the person who ends
up maintaining your code is a violent
psychopath who knows where you live.”
-Jeff Atwood
blog.codinghorror.com/coding-for-violent-psychopaths/
12/10/2016 @danielbryantuk
Systems thinking – the user journey
• Understand the user journey
• “Shift left” QA
• Three amigos
• ”Quality Advocates”
• BDD and TDD
• Outside in
12/10/2016 @danielbryantuk
If you’re building microservices...
12/10/2016 @danielbryantuk
specto.io/blog/recipe-for-designing-building-testing-microservices.html
Core themes – architecture and dev
• Know yourself
• Check your evaluation and communication skills
• Know others
• Understand the whole (systems/solution-focused)
• Establish the correct perspective - think outside-in
• Seek rapid feedback
• Prototype
12/10/2016 @danielbryantuk
Operations
Because everyone is responsible for the (continual) delivery of valuable software
12/10/2016 @danielbryantuk
Regulatory fit theory
12/10/2016 @danielbryantuk
Mary Poppendieck
bit.ly/1VvYi83
Share the pain...
12/10/2016 @danielbryantuk
“Developer-on-call”
An occasional spike to the head
is a good thing...
...metaphorically speaking
• You build it, you run it
• Accountability
• Shared responsibility
• Communication
12/10/2016 @danielbryantuk
DevOps - it’s not a department
• Pair with developers
• Treat operators are stakeholders
• Involve in standups
• Communication face-to-face
12/10/2016 @danielbryantuk
Outside-in (and systems) thinking
• Lineage-driven fault injection
• Semantic monitoring
• Avoiding alert fatigue
12/10/2016 @danielbryantuk
www.infoq.com/presentations/failure-test-research-netflix
Core themes - operations
• Know yourself
• Seek freedom and accountability
• Know others
• Dev-on-call / DevOps
• It’s all about perspective – think systems and outside-in
• Seek rapid feedback
• Semantic monitoring (systems)
12/10/2016 @danielbryantuk
Leadership
Because we’re always influencing (leading) other people
12/10/2016 @danielbryantuk
Communicate the tech vision
12/10/2016 @danielbryantuk
Don’t micromanage - People learn from mistakes
12/10/2016 @danielbryantuk
Devs with new tech be like…
…f*cking new technology
This has been me
many times!
Listen, empathise, and provide feedback
• Separate appreciation, coaching
and evaluation
• First seek to understand
• See your blind spots
• Identify the relationship system
• Cultivate a growth identity
12/10/2016 @danielbryantuk
Dealing with difficult people in the team
(who generally aren’t psychopaths/sociopaths)
12/10/2016 @danielbryantuk
Leadership
• Know yourself
• Big five personality traits, MBTI, and meditation/mindfulness
• Know your vision/mission/goals
• Know others
• Engineers (including myself) can be a funny interesting bunch!
• Care about the team (their stories, journey, motivation…)
• Coaching is a valuable skills
• Seek rapid feedback
• 360 feedback
12/10/2016 @danielbryantuk
Wrapping up
Because this presentation has to finish at some point…
12/10/2016 @danielbryantuk
Empathy is like a muscle…
12/10/2016 @danielbryantuk
Empathy is like a muscle…
• Habit 1: Cultivate curiosity about strangers
• Habit 2: Challenge prejudices and discover
commonalities
• Habit 3: Try another person’s life
• Habit 4: Listen hard—and open up
• Habit 5: Inspire mass action and social change
• Habit 6: Develop an ambitious imagination
12/10/2016 @danielbryantuk
Final thoughts
• Know yourself
• Who we are determines how we see others
• The first person we must examine is ourselves
• Know others
• The world – with one exception – is composed of others
• We can lift people up or take people down
• Seek rapid feedback
• No one gets it right all the time
12/10/2016 @danielbryantuk
The rest is up to you…
Thanks to all the OpenCredo team and Tareq Abedrabbo for inspiration
@danielbryantuk
daniel.bryant@opencredo.com
www.opencredo.com
12/10/2016 @danielbryantuk

JAX London 2016: "Empathy - The hidden ingredient of good software development?"

  • 1.
    Empathy The hidden ingredientof good software development? Daniel Bryant @danielbryantuk
  • 2.
    empathy noun | em·pa·thy| ˈem-pə-thē The feeling that you understand and share another person's experiences and emotions The ability to share someone else's feelings and perspective 12/10/2016 @danielbryantuk
  • 3.
    A typical softwaredevelopment debacle… Me: I think we’re some missing empathy here… Client: Is that a new JavaScript framework? Empathy.js? Me: No, no – shared understanding... Client: Is it a new communication style? RxEmpathy? Me: No, I mean thinking about the needs and feelings of your (customer|team mate|boss|internet troll) 12/10/2016 @danielbryantuk
  • 4.
  • 5.
    We’re (typically) developingsoftware… …for other people …with other people ...to create an (emotional) experience Surely we have to understand other peoples’ experiences? 12/10/2016 @danielbryantuk
  • 6.
  • 7.
    We’re (typically) developingsoftware… …for other people …with other people ...to create an (emotional) experience Surely we have to understand other peoples’ experiences? This is why empathy is important 12/10/2016 @danielbryantuk
  • 8.
    @danielbryantuk • Chief Scientistat OpenCredo, CTO at SpectoLabs • Agile, architecture, CI/CD, DevOps • Java, Go, JS, microservices, cloud, containers • Driving change through the application of technology and teams • London Java Community Associate • InfoQ Editor, DZone MVB, Voxxed… • Conference regular: Devoxx, JavaOne, QCon… 12/10/2016 @danielbryantuk
  • 9.
    The next 40minutes: Empathy… • Core principles • In the real world • Requirements gathering • Architecture and development • Operations • Leadership 12/10/2016 @danielbryantuk
  • 10.
    Core principles Know yourself,know others, seek rapid feedback 12/10/2016 @danielbryantuk
  • 11.
    Core themes inthe presentation • Know yourself • Who we are determines how we see others (emotional intelligence) • The first person we must examine is ourselves • Know others • The world – with one exception – is composed of others • We can lift people up or take people down • Seek rapid feedback • No one gets it right all the time 12/10/2016 @danielbryantuk
  • 12.
  • 13.
  • 14.
    The range ofempathy… 12/10/2016 @danielbryantuk Strong empathy Strong apathy
  • 15.
    Requirements gathering Because we’recreating software for other people 12/10/2016 @danielbryantuk
  • 16.
    IT as conversationalmedium • Post-agile • Design thinking • Empathy • Ethnography • Abductive thinking • Iterative user testing • Start with why (impact) 12/10/2016 @danielbryantuk
  • 17.
  • 18.
    Personas • Represent amajor user group • Express needs and expectations • Uncovering universal features and functionality • Describe real people with backgrounds, goals, and values 12/10/2016 @danielbryantuk
  • 19.
  • 20.
    Ethnography - “getout of the building” • www.notonthehighstreet.com • “In your shoes” • Large UK retailer • “Shop floor time” • My own experiences… 12/10/2016 @danielbryantuk
  • 21.
    Core themes -requirements • Know yourself • What impact am I seeking? (Start with why) • Know others • Seek to understand users • Visit users in their natural habitat • Seek rapid feedback • Prototyping • Build, measure, learn 12/10/2016 @danielbryantuk
  • 22.
    Architecture and development Becausewe’re building software alongside other people 12/10/2016 @danielbryantuk
  • 23.
    Architecture • Shared understanding •Architects must code • ‘Just enough’ upfront design • The power of diagramming • Risk management • Technical • Stakeholder 12/10/2016 @danielbryantuk
  • 24.
    Risk management -evaluation “I will postpone using this shiny new framework until my peers have validated the proposed benefits with rigorous scientific experiments” - Said by no programmer …ever 12/10/2016 @danielbryantuk
  • 25.
    Evaluation - Fitnessfunctions • Microservices as an Evolutionary Architecture • Neal Ford and Rebecca Parsons • Great for evaluation and documentation • Platforms / Language • Middleware • Data stores 12/10/2016 @danielbryantuk
  • 26.
    Evaluation - Raible’scomparison matrix 12/10/2016 @danielbryantuk www.slideshare.net/mraible/comparing-jvm-web-frameworks-february-2014
  • 27.
    Evaluation – TheSpine Model • Effective conversations make for effective collaboration • It's a TOOL Problem • As a species, we have always been Tool users and makers. • We use _____ to get our work done • People get stuck in a dilemma where equally plausible options are available • “Going up the Spine” breaks deadlock http://spinemodel.info/explanation/introduction/
  • 28.
    Determine the needfor the tool • PRACTICES before Tools • Decide on the Practices that the tools are there to support • We do _____ to create value • PRINCIPLES before Practices • Decide on the Principles to measure those Practices against. • We leverage _____ to change the system • VALUES before Principles • Make as explicit as possible the Values at play in the system. • We optimise for _____ • NEEDS before Values • It all starts at Needs. Why does this system exist in the first place? • We are here to satisfy _____ http://spinemodel.info/explanation/introduction/
  • 29.
    Coding • All codeis communication • ”Clean Code” • Wikis and READMEs “Always code as if the person who ends up maintaining your code is a violent psychopath who knows where you live.” -Jeff Atwood blog.codinghorror.com/coding-for-violent-psychopaths/ 12/10/2016 @danielbryantuk
  • 30.
    Systems thinking –the user journey • Understand the user journey • “Shift left” QA • Three amigos • ”Quality Advocates” • BDD and TDD • Outside in 12/10/2016 @danielbryantuk
  • 31.
    If you’re buildingmicroservices... 12/10/2016 @danielbryantuk specto.io/blog/recipe-for-designing-building-testing-microservices.html
  • 32.
    Core themes –architecture and dev • Know yourself • Check your evaluation and communication skills • Know others • Understand the whole (systems/solution-focused) • Establish the correct perspective - think outside-in • Seek rapid feedback • Prototype 12/10/2016 @danielbryantuk
  • 33.
    Operations Because everyone isresponsible for the (continual) delivery of valuable software 12/10/2016 @danielbryantuk
  • 34.
    Regulatory fit theory 12/10/2016@danielbryantuk Mary Poppendieck bit.ly/1VvYi83
  • 35.
  • 36.
    “Developer-on-call” An occasional spiketo the head is a good thing... ...metaphorically speaking • You build it, you run it • Accountability • Shared responsibility • Communication 12/10/2016 @danielbryantuk
  • 37.
    DevOps - it’snot a department • Pair with developers • Treat operators are stakeholders • Involve in standups • Communication face-to-face 12/10/2016 @danielbryantuk
  • 38.
    Outside-in (and systems)thinking • Lineage-driven fault injection • Semantic monitoring • Avoiding alert fatigue 12/10/2016 @danielbryantuk www.infoq.com/presentations/failure-test-research-netflix
  • 39.
    Core themes -operations • Know yourself • Seek freedom and accountability • Know others • Dev-on-call / DevOps • It’s all about perspective – think systems and outside-in • Seek rapid feedback • Semantic monitoring (systems) 12/10/2016 @danielbryantuk
  • 40.
    Leadership Because we’re alwaysinfluencing (leading) other people 12/10/2016 @danielbryantuk
  • 41.
    Communicate the techvision 12/10/2016 @danielbryantuk
  • 42.
    Don’t micromanage -People learn from mistakes 12/10/2016 @danielbryantuk Devs with new tech be like… …f*cking new technology This has been me many times!
  • 43.
    Listen, empathise, andprovide feedback • Separate appreciation, coaching and evaluation • First seek to understand • See your blind spots • Identify the relationship system • Cultivate a growth identity 12/10/2016 @danielbryantuk
  • 44.
    Dealing with difficultpeople in the team (who generally aren’t psychopaths/sociopaths) 12/10/2016 @danielbryantuk
  • 45.
    Leadership • Know yourself •Big five personality traits, MBTI, and meditation/mindfulness • Know your vision/mission/goals • Know others • Engineers (including myself) can be a funny interesting bunch! • Care about the team (their stories, journey, motivation…) • Coaching is a valuable skills • Seek rapid feedback • 360 feedback 12/10/2016 @danielbryantuk
  • 46.
    Wrapping up Because thispresentation has to finish at some point… 12/10/2016 @danielbryantuk
  • 47.
    Empathy is likea muscle… 12/10/2016 @danielbryantuk
  • 48.
    Empathy is likea muscle… • Habit 1: Cultivate curiosity about strangers • Habit 2: Challenge prejudices and discover commonalities • Habit 3: Try another person’s life • Habit 4: Listen hard—and open up • Habit 5: Inspire mass action and social change • Habit 6: Develop an ambitious imagination 12/10/2016 @danielbryantuk
  • 49.
    Final thoughts • Knowyourself • Who we are determines how we see others • The first person we must examine is ourselves • Know others • The world – with one exception – is composed of others • We can lift people up or take people down • Seek rapid feedback • No one gets it right all the time 12/10/2016 @danielbryantuk
  • 50.
    The rest isup to you… Thanks to all the OpenCredo team and Tareq Abedrabbo for inspiration @danielbryantuk daniel.bryant@opencredo.com www.opencredo.com 12/10/2016 @danielbryantuk

Editor's Notes

  • #17 goes from an observation to a theory which accounts for the observation, ideally seeking to find the simplest and most likely explanation
  • #46 The five factors have been defined as openness to experience, conscientiousness, extraversion, agreeableness, and neuroticism, often listed under the acronyms OCEAN or CANOE