When I ask fellow developers what they think about empathy, the answer is often “not much”. However, I believe that the skill of empathy, being able to place yourself in another’s position, is crucial to designing, building and operating software at any scale. Join me for a whistle stop tour of the benefits of empathy, which I have learned from working on a wide variety of software projects over the previous ten years. I will share stories of success and failure, and suggest practical techniques that you can harness in order to help your team develop empathy.
When gathering requirements and performing business analysis, it is obvious that the ability to experience from within another user/customer/being's frame of reference is a valuable skill, but the same can be said when writing code. If we follow Martin Fowler’s train of thought where “any fool can write code that a computer can understand. Good programmers write code that humans can understand” we can see that empathy is at the heart of this skill. We could also argue that the rise of “DevOps” is simply both sides of the traditional divide trying to understand each other better. Developing the skill of empathy isn’t necessarily easy, but in this talk I will share my learnings, techniques and tricks for developing more effective software.
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
18/08/2016 @danielbryantuk
3. 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)
18/08/2016 @danielbryantuk
5. 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
18/08/2016 @danielbryantuk
6. @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…
18/08/2016 @danielbryantuk
7. The next 40 minutes: Empathy…
• Core principles
• In the real world
• Requirements gathering
• Architecture and development
• Operations
• Leadership
18/08/2016 @danielbryantuk
9. 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
18/08/2016 @danielbryantuk
16. Personas
• Represent a major user group
• Express needs and expectations
• Uncovering universal features
and functionality
• Describe real people with
backgrounds, goals, and values
18/08/2016 @danielbryantuk
18. Ethnography - “get out of the building”
• www.notonthehighstreet.com
• “In your shoes”
• Large UK retailer
• “Shop floor time”
• My own experiences…
18/08/2016 @danielbryantuk
19. 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
18/08/2016 @danielbryantuk
22. 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
18/08/2016 @danielbryantuk
23. Evaluation - Fitness functions
• Microservices as an Evolutionary Architecture
• Neal Ford and Rebecca Parsons
• Great for evaluation and documentation
• Platforms / Language
• Middleware
• Data stores
18/08/2016 @danielbryantuk
25. 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/
26. 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/
27. 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/
18/08/2016 @danielbryantuk
28. Systems thinking – the user journey
• Understand the user journey
• “Shift left” QA
• Three amigos
• ”Quality Advocates”
• BDD and TDD
• Outside in
18/08/2016 @danielbryantuk
29. If you’re building microservices...
18/08/2016 @danielbryantuk
specto.io/blog/recipe-for-designing-building-testing-microservices.html
30. Core themes – architecture and dev
• Know yourself
• Check your evaluation and communcation skills
• Know others
• Understand the whole (systems/solution-focused)
• Establish the correct perspective - think outside-in
• Seek rapid feedback
• Prototype
18/08/2016 @danielbryantuk
34. “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
18/08/2016 @danielbryantuk
35. DevOps - it’s not a department
• Pair with developers
• Treat operators are stakeholders
• Involve in standups
• Communication face-to-face
18/08/2016 @danielbryantuk
40. Don’t micromanage - People learn from mistakes
18/08/2016 @danielbryantuk
People with new tech be like…
…f*cking new technology
This has been me
many times!
41. 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
18/08/2016 @danielbryantuk
42. Leadership
• Know yourself
• Big five personality traits, MBTI, meditation
• 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
18/08/2016 @danielbryantuk
45. 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
18/08/2016 @danielbryantuk
46. 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
18/08/2016 @danielbryantuk
47. 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
18/08/2016 @danielbryantuk
Editor's Notes
goes from an observation to a theory which accounts for the observation, ideally seeking to find the simplest and most likely explanation