50
Empathy The hidden ingredient of good software development? Daniel Bryant @danielbryantuk

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

Embed Size (px)

Citation preview

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

EmpathyThe hidden ingredient of good software development?

Daniel Bryant@danielbryantuk

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

01/05/2023 @danielbryantuk

empathynoun | 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'sfeelings and perspective

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

01/05/2023 @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)

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

01/05/2023 @danielbryantuk

Empathy misplaced?

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

01/05/2023 @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?

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

01/05/2023 @danielbryantuk

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

01/05/2023 @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

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

01/05/2023 @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…

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

01/05/2023 @danielbryantuk

The next 40 minutes: Empathy…• Core principles

• In the real world• Requirements gathering• Architecture and development• Operations

• Leadership

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

01/05/2023 @danielbryantuk

Core principlesKnow yourself, know others, seek rapid feedback

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

01/05/2023 @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

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

01/05/2023 @danielbryantuk

Know thyself…

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

01/05/2023 @danielbryantuk

Know others

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

01/05/2023

The range of empathy…

@danielbryantuk

Strong empathy Strong apathy

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

01/05/2023 @danielbryantuk

Requirements gatheringBecause we’re creating software for other people

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

01/05/2023 @danielbryantuk

IT as conversational medium• Post-agile

• Design thinking• Empathy• Ethnography• Abductive thinking• Iterative user testing

• Start with why (impact)

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

01/05/2023 @danielbryantuk

Impact mapping

www.impactmapping.org

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

01/05/2023 @danielbryantuk

Personas• Represent a major user group

• Express needs and expectations

• Uncovering universal features and functionality

• Describe real people with backgrounds, goals, and values

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

01/05/2023 @danielbryantuk

Empathy mapping

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

01/05/2023 @danielbryantuk

Ethnography - “get out of the building”

• www.notonthehighstreet.com• “In your shoes”

• Large UK retailer• “Shop floor time”

• My own experiences…

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

01/05/2023 @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

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

01/05/2023 @danielbryantuk

Architecture and developmentBecause we’re building software alongside other people

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

01/05/2023 @danielbryantuk

Architecture• Shared understanding• Architects must code

• ‘Just enough’ upfront design• The power of diagramming

• Risk management• Technical • Stakeholder

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

01/05/2023 @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

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

01/05/2023 @danielbryantuk

Evaluation - Fitness functions

• Microservices as an Evolutionary Architecture• Neal Ford and Rebecca Parsons

• Great for evaluation and documentation• Platforms / Language• Middleware• Data stores

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

01/05/2023

Evaluation - Raible’s comparison matrix

@danielbryantuk

www.slideshare.net/mraible/comparing-jvm-web-frameworks-february-2014

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

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/

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

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/

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

01/05/2023 @danielbryantuk

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 Atwoodblog.codinghorror.com/coding-for-violent-psychopaths/

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

01/05/2023 @danielbryantuk

Systems thinking – the user journey• Understand the user journey

• “Shift left” QA• Three amigos• ”Quality Advocates”

• BDD and TDD• Outside in

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

01/05/2023 @danielbryantuk

If you’re building microservices...

specto.io/blog/recipe-for-designing-building-testing-microservices.html

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

01/05/2023 @danielbryantuk

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

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

01/05/2023 @danielbryantuk

OperationsBecause everyone is responsible for the (continual) delivery of valuable software

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

01/05/2023 @danielbryantuk

Regulatory fit theory

Mary Poppendieckbit.ly/1VvYi83

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

01/05/2023 @danielbryantuk

Share the pain...

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

01/05/2023 @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

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

01/05/2023 @danielbryantuk

DevOps - it’s not a department

• Pair with developers

• Treat operators are stakeholders

• Involve in standups• Communication face-to-face

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

01/05/2023 @danielbryantuk

Outside-in (and systems) thinking

• Lineage-driven fault injection

• Semantic monitoring • Avoiding alert fatigue

www.infoq.com/presentations/failure-test-research-netflix

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

01/05/2023 @danielbryantuk

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)

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

01/05/2023 @danielbryantuk

LeadershipBecause we’re always influencing (leading) other people

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

01/05/2023 @danielbryantuk

Communicate the tech vision

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

01/05/2023

Don’t micromanage - People learn from mistakes

@danielbryantuk

Devs with new tech be like…

…f*cking new technology

This has been me many times!

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

01/05/2023 @danielbryantuk

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

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

01/05/2023 @danielbryantuk

Dealing with difficult people in the team(who generally aren’t psychopaths/sociopaths)

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

01/05/2023 @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

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

01/05/2023 @danielbryantuk

Wrapping upBecause this presentation has to finish at some point…

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

01/05/2023 @danielbryantuk

Empathy is like a muscle…

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

01/05/2023 @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

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

01/05/2023 @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

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

01/05/2023 @danielbryantuk

The rest is up to you…

Thanks to all the OpenCredo team and Tareq Abedrabbo for inspiration

@danielbryantuk

[email protected]