Empathy is Possibly The Single Greatest Skill You Will Ever Learn
There are so many skills we learn as "real" skills as Engineers; how to write code, how to identify good code in reviews, how to be "right" about our solutions. But empathy for our users, of both our products and our code is a vital skill to be a really successful Engineer, especially as a Senior IC, Technical Lead or in a management position.
Empathy for the customer is often championed in engineering teams, it's an essential skill when you're building user-facing interfaces, but can get lost when you're building APIs and backend systems beyond reliability.
But whatever you're building, at some point you need to hand over to someone else, either having over an API, a library or some documentation, and having empathy for the person you're handing off to is crucial. Regardless of whether you think they should just understand your code or your interface, we all see things a little differently, so make it easy.
We also have to hand things off to people who may not be technical, for service management and support, to be deployed or in other ways. Getting into the good practice of putting youself into someone elses shoes goes a long way to helping create sustainable software that lasts and lasts. Simple software that works well and can be easily picked up and used is the kind that sticks around for a long time.
I've talked about empathy as applies to building software, but it's also the foundation for building teams, when you move beyond building pieces of code to building the teams that build things, it's easy for pressures from above to result in a direct transmission of those pressures onto the team, but we all have experienced those and know that they rarely produce desired outcomes. Being able to empathise with the motivations of your team will let you deliver the right messages to effect changes of direction from your team and produce the right outcomes.
