1. Core Principles
  2. Why Empathy is important

To be done 🏗️

Concept

Empathy is almost a must-have soft skill for every software engineer. Many people show empathy unconsciously. But if practiced positively, it has unlimited potential.

What are soft skills? Unlike hard skills like learning a language or framework, communication, logical thinking, problem-solving, teamwork, and empathy fall into this category; these skills may play a greater role throughout your career as a software engineer.

Forgetting these skills may be as difficult as learning them. Reading a book or watching a video doesn’t necessarily immediately improve your communication skills. Some of these skills are innate, and others must be practiced and applied continuously.

Empathy is seeing with the eyes of another, listening with the ears of another, and feeling with the heart of another. – Alfred Adler

Empathy is a profound human emotion, the core of emotional intelligence. It can promote our understanding of personal emotions, deal with interpersonal relationships, and build stronger connections.

Empathy vs Sympathy

Empathy (Empathy), Sympathy (Sympathy); although only one word difference, the difference is still very large.

Sympathy refers to understanding the pain of others, essentially more of a “cognitive ability,” which actually maintains a certain distance from people. For example: “I’m sorry for your loss,” “At least…”

Empathy involves experiencing the feelings of others, requiring an emotional component of “truly feeling what the other person feels,” “Empathetic Listening” and “Problem Solving.”

Empathy is sincerely visualizing yourself in the shoes of the person who has lost something.

Empathy is a choice, and it’s a vulnerable choice. Because in order to connect with you, I have to connect with something in myself that knows that feeling. – Dr. Brené Brown

Brené Brown Youtube Explanation, the four qualities of empathy:

  1. Perspective taking, the ability to see the world as others do
  2. Staying out of judgment in these perspectives
  3. Recognizing the emotions in others and relating
  4. Communicating with that emotional understanding

Software Development Empathy

Users

Empathy can help you build a connection with your customers and assist you in delivering better products to them.

It is not only used to concretize and strengthen your brand image among customers but also facilitates the transmission of other values and perspectives to customers.

Moreover, when facing thorny customer disputes, product delays, online incidents, etc., it can resonate with customers and provide more buffer when dealing with these issues.

When considering the needs and desires of users, empathy helps you to take their perspective and gives you a completely new and different vision.

Not to mention the skills of UX/UI designers who use empathy, UX designers are almost always based on empathy, always keeping the user at the center of mind.

Collecting insights about the social and cultural backgrounds of the users, their psychological traits, their feelings of frustration, and their goals will help you develop a broad knowledge of the users.

For the front end, empathy and perspective-taking come more naturally, but empathy also applies to backend engineers.

Imagine how you want to store data and how secure you want that information to be. How detailed do you want the documentation to be to save valuable time in the future, or which parts might have security vulnerabilities in the future?

What kind of documentation and conventions do you want your API to have, to facilitate understanding and reduce errors for users, and for future maintainers to expand?

All of this comes down to perspective-taking. Just like actors must have extraordinary empathy! Acting is about pleasing the audience, not yourself!

Colleagues

Teamwork and empathy are complementary. Solid relationships are built on listening and understanding, not on judging and blaming.

Empathy with teammates helps the team grow together. Even if venting to a teammate doesn’t help solve the problem, you can listen (without judgment).

Using empathy to sense others’ feelings. Imagine a teammate being harshly criticized for making a mistake. How would you feel if it were you?

Having empathy allows you to communicate better with them. Lend a helping hand when they urgently need support.

Empathy can also greatly assist you in dealing with complex interpersonal relationships among colleagues. Try to observe some anomalies from different perspectives, which may be due to anger, fear, or sadness.

Perspective-taking (using empathy) is one of the best ways to resolve work disputes.

Empathy is about talking to you in the way you would like others to talk to you. It requires mindfulness. The next time you encounter a difficult situation at work or in daily conversation, consider empathy as an effective approach.

Most software projects have a very long lifecycle and involve a large number of roles, with individuals often taking on multiple roles. Under modern division of labor, most people only have one role.

Developers are accustomed to throwing problems to QA, operations, or customer support departments, thinking that their work is done after the code is submitted and merged.

Empathy can help you better understand the work of your team members, to think about the difficulties and chaos caused by your own negligence for other colleagues; thus, to polish your own design and implementation from multiple aspects and with greater responsibility.

Future Engineers

Code is another form of communication. We should strive to reduce the difficulty for people who interact with the code. Empathy can help us put ourselves in their shoes.

Most engineers have the experience of taking over legacy projects or other people’s projects, like entering a secret realm, brand new code, architecture, logic; no way to start, no way to adapt.

If you were the original project leader, imagine someone taking over your project in the future, what would you like to leave for them?

You would want your code to be more readable, avoid complex logic, avoid excessive abstraction, and have good naming conventions.

Better organize your file directories, keep the code clean; keep the documentation synchronized, write a good README, single how-to; meaningful comments, complete unit tests.

With empathy, you are more likely to build maintainable code. When a developer does not pay attention to empathy, he will soon sacrifice maintainability for speed. He will not consider other developers or his future self in the design of the system. Inject empathy into every bit of your daily development work, and you will write more complete documentation and clearer code.

A good heart begets all good things; an evil heart begets all disasters.

Empathy-Driven

Programming languages are not only a means of communication between humans and machines but also a tool for communication between people, for team members, for future selves, and for other successors; in this sense, programming is very similar to writing.

Programming is a form of communication, and the essence of communication lies in empathy, so once a software engineer masters empathy, they will benefit greatly.

Goulet from corgibytes (specializing in system refactoring) has even embedded empathy into the core culture of the company. Empathy-Driven Development is a new development concept that combines theory and practice for engineers.

From the perspective of engineers, some misunderstandings about empathy need to be corrected:

  1. Empathy is not an abstract, emotional, metaphysical concept. It is our daily practice, thinking from another’s perspective, solving problems; it is continuous training every day.
  2. Empathy is beyond the existence of software engineering. Writing code, submitting PRs, designing tests are the daily tasks of software engineers. Engineers are experts in problem-solving, but first and foremost, they must be excellent communicators. Code is a means of interaction with machines, but more importantly, it is also a way of communication with people, which is also necessary to maintain team diversity and inclusiveness.
  3. Empathy can be cultivated, just like learning a programming language or framework. Training in empathy can also be broken down into steps and cultivated step by step.

Most technical gaps can be made up through learning, and most developers can agree with this fact. In return, think about how most software engineers are underdeveloped in communication and empathy: how to cooperate, how to create better products.

Exercise to Obtain

Just like learning a programming language or a sport, training empathy also has a systematic approach and progresses step by step.

Stop Complaining and Learn to Be Grateful

Such a scene is not unfamiliar to most programmers: when you take over an old project and see a pile of ‘bad’ code, with confusing logic, mysterious naming, even misleading comments, meaningless commit descriptions, and even cursed remarks; you might secretly curse.

But please hold your anger for a moment, put yourself in their shoes, and think about the situation at the time when the first line of code was written. No one is born wanting to write ‘bad’ code. You can imagine the situation at the time