Empathy in Software Design
Designing for Real Life
One of the books that have been most influential on my thinking in software design was not a book on technical design patterns or theory, but a book called Design for Real Life by Eric Meyer and Sara Wachter-Boettcher. The book talks about designing your software so that it holds up under emotional stress cases. An example is designing a hospital's website for the person who is rushing there in a dire situation. Can they easily find the info a person in the most intense stress case will need to find?
A recent example in my life is relevant, although not a stressful case. My brother who is deaf was at my house for Christmas and he was trying out my PSVR2. The game had fairly complex controls, which were hard for me to communicate to him once he had the headset on, since he couldn't see me. Like many modern AAA games, this one had a vast amount of accessibility features, so I was able to configure the game to have a simplified control scheme that was easier to explain on the fly (by touching his hands and helping him find the button when he needed it), and it of course had the option of subtitles. These accessibility features allowed him to enjoy something that he typically wouldn't be able to enjoy, or at least would have otherwise been a frustrating experience.
Through my brother's experience with the game, I witnessed firsthand how small yet thoughtful design choices can greatly enhance accessibility and inclusivity. This realization reaffirmed my belief in the importance of empathy in software design.
Empathy in a Divisive Culture
Since reading "Design for Real Life," I've observed a significant shift in American culture towards increased divisiveness. It's disheartening to witness influential tech figures employing derogatory terms like 'the woke mind virus' to dismiss any mindset focused on empathy and social responsibility. Furthermore, there have been instances where people with disabilities faced mockery from prominent figures, including the former holder of the highest office in the country. These developments underscore the pressing need for empathy, both ethically and practically, in the field of technology. In times like these, when our creations reach a diverse and often vulnerable user base, exercising empathy in software design becomes not just a choice but a moral imperative.
Empathy in software design extends beyond considerations for disabilities. It encompasses a wide range of scenarios where understanding and accommodating users' needs and emotions can lead to better, more inclusive software. For instance, think about creating user-friendly interfaces for older adults who may not be as tech-savvy or providing clear instructions for non-native English speakers. These are all instances where empathy can play a pivotal role in making technology accessible and enjoyable for a broader audience. As software engineers, it's our ethical responsibility and practical advantage to embrace empathy in our design processes, ensuring that our creations serve everyone, regardless of their background or circumstances.
Consider the diverse ways in which empathy can shape software design. It could involve ensuring your app functions offline, providing crucial access to users in remote areas when they need it most. Or perhaps, it's about including content warnings at the start of your game, acknowledging sensitive themes like drug abuse to support those in recovery. Making your software accessible to individuals who are blind or deaf, offering configurable controls for customizable experiences, and much more. And if ever you find it challenging to summon compassion for users you may not personally know, simply imagine someone close to you facing those very challenges.
Finally, I want to emphasize that this is not meant to be a 'holier than thou' lecture. Personally, I often fall short of the philosophy I'm promoting here. It's not about claiming a badge of honor but rather something to strive for—an ongoing journey. These thoughts have been on my mind lately, and my blog is the platform to share them. Cultures change with the ebb and flow of world events, populism, and general shifts in society, but people remain constant. I encourage my fellow software engineers to design their software with people in mind and to approach this journey with humility and a commitment to continuous improvement.