This repository is a collection of resources designed to provide concrete, practical, and actionable examples of coding with empathy. When empathy is taught in a general context, it can come across as mere intuition or psychic ability. The resources here are specific and relevant to the context of creating software.
People who actively work on a software product will likely get the most out of this repository. This is more than people who write code. Leaders, managers, product owners, UX and Customer Experience folks, testers, Agilists, and people who interact directly with customers are likely to find useful information here, too.
The maintainer of this project is Andrea Goulet, who originally created it to accompany her book, Empathy-Driven Software Development.
You can also join the accompanying Empathy in Tech community to access our Discord server, free events, and more.
This repository will start using the awesome-list format. The README file is where the action is. As resources are added, we'll organize them into relevant categories. We're particularly inspired by the-book-of-secret-knowledge by Michał Ży.
GitHub automatically generates a Table of Contents, which may make it easier for you to navigate the content.
For a sleeker reading experience, you can view the content on GitHub pages.
Contributions welcome! In addition to the list, we're also hoping to use GitHub's discussions feature to help build a robust knowledge base that allows for nuance and conversation. Our hope is that utilizing this feature first will help make it easier for people who work in software but don't use GitHub regularly to contribute their ideas.
Here's the general workflow for getting an idea out of your head so we can consider adding it to the list.
- Start with a discussion to share your ideas, ask questions, and connect with other community members.
- Maintainers will create issues from relevant discussions.
- Address issues with pull requests for a maintainer to review.
If you find a relatively simple issue, such as a typo or a broken link, you can submit a pull request directly.
By contributing, you agree to abide by the terms of the Contributor Covenant
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
- 🎓Academic Research
- ⚙️Apps & Tools
- 📝Articles
- 📘Books
- 👟Exercises
- 🎙️Podcasts
- 🎥Videos
Techniques for generally bringing more empathy to your work
- 🎥 Finding Empathy Opportunities While You Code Andrea Goulet walks through four original frameworks to help you notice where you can use empathy during your day-to-day development practice.
View examples by things that get created while you code.
- Error Handling
- 📝 When Life Gives You Lemons, Write Better Error Messages Jeni Nadler shares how Wix uses a list 5 attributes for error messages.
- 📝 Compiler Errors for Humans Elm creator Evan Czaplicki shares his thought process behind Elm's human-centered error handling.
- 🎓 Compiler Error Messages Considered Unhelpful: The Landscape of Text-Based Programming Error Message Research An ACM working group evaluated over 300 error message research studies over the past 50 years.
- Alt Text
- 📝 WebAIM Alternative Text Suggestions from a research group that studies accessibility and provides training.
- 📝 Five golden rules for compliant alt text Mark Walker shares his suggestions for a checklist to use when writing Alt Text
- ⚙️ WAVE® Web Accessibility Tools Free tools to help you evaluate how accessibile websites are.
- 🎥 Screen reader demo Short video showing how a screenreader sounds for different alt text configurations of the same image.
- Variables, Functions, Methods, Classes, etc.
- 📝 Naming as a Process Arlo Belshee goes through a series of technical steps he uses to develop intention-revealing names.
- 📝 What’s in a Name? Anti-Patterns to a Hard Problem Katrina Owen reviews how not to name things as a way to explore better options.
- 🎓 Naming Practices in Java Projects: An Empirical Study Researchers examined over 1.4 million identifier names across 40 open-source Java projects to determine which patterns are the most common.
- Documentation
- ⚙️ Read the Docs Tool for integrating documentation updates into your daily workflow.
- 📘 Living Documentation by Cyrille Martraire Available on Amazon, O'Reilly, and B&N "...shows how to dramatically improve your documentation at minimal extra cost by using well-crafted artifacts and judicious automation."
- Commit Messages
- 📝 Better Communication Through Commit Messages - Josh Kelley goes through specific practices for using commit messages to make it easy for other people to understand a project's history.
- Code Reviews
- 🎓 Code Review is just reviewing code? A qualitative study with practitioners in industry - A survey to learn more about effective practices uncovers the importance of cognitive empathy for asynchronous, tool-based code reviews.
Specific techniques for acting with empathy