SW engineering, engineering management and the business of software
Imagine a traveler. This traveler has a unique constraint. He can only take a step if he juggles balls that match the color of the landscape around him. In some places, like a barren desert, this isn’t a large number. But it other places, like city or a fruit garden, it’s a tremendous number of balls and colors that require coordination and focus. Just to take a single step.
Like our hypothetical traveler, Engineers are constantly keeping track of multiple high and low level concepts during any given coding session. Examples include product requirements, testability, scale, bugs, security concerns, performance requirements, and many more.
Standardized, tool enforced formatting is one less ball to track.
Imagine a a car without windshield wipers, turn signals headlights or brake lights. This hypothetical, two ton, wheeled cage of plastic and steel is perfectly capable of transporting you from point A to point B. It is also a very obvious and clear danger to its occupants and anyone in the surrounding vicinity.
At some point in the past decade or so, it became trendy for companies actively seek Rock Stars and Ninjas. These occupations are renowned for many lovely attributes, but not necessarily an ability to understand the perspective of others. Ultimately, a skilled, but toxic engineer is like that vehicle described above. They will drive away your best people and all you are left with is poor morale, a lousy culture and below average performance.
The most underrated ability an engineer can possess is empathy. Empathy adds business and technical value in both obvious and non-obvious ways. If you keep reading, I’ll both discuss the value add and in a future post, address how to screen for empathy at the interview stage.
There are at least three reasons you should value empathy:
The unvarnished truth is that teams of empathetic engineers outperform.
The complexity of modern software development means that the opportunity for a lone genius to make a significant product or market impact is lottery ticket low. A modern manager’s job is about maxizing the output of teams.
Phrases like communication is oxygen begin to hint at what makes teams successful. What you are really after is constant improvement. You don’t mix good people together and get good teams. You start with good people then iterate (experiment, feedback, correct) together and grow into an amazing team. In order to iterate, you need experiment. In order to experiment, you need to fail safely. This environment where you can fail safely has recently been tagged as psychological safety as part of a research effort called Project Aristotle at Google. It’s considered a core building block of high performance teams. And the core components of psychological safety? From the article: “In the best teams, members listen to one another and show sensitivity to feelings and needs.”
Self-awareness is like empathy turned inward. In otherwords, empathy for yourself. In an engineer, this manifests in a few ways, such as recognizing both weaknesses and strengths, which can help accelerate growth. It also can also help identify and therefore protect against burn-out or other stressful inccidents. It’s an important aspect of maximizing the long-term value an engineer provides.
As for retention, this should be obvious. Healthy empathy creates an environment where people may not agree, but they are listened to and often respected. Poor relationships with your boss or coworkers routinely makes the top list of reasons to quit a job. Empathetic managers and peers doesn’t guaruntee a strong love of your job, but it can certainly move the needle on retention numbers.
I do want to reinforce that empathy doesn’t mean just mean being nice. It’s very easy to confuse the two and we’ve all met that person who is perfectly polite, even pleasant, but doesn’t have much sense of the needs of others or the understanding of others respective situations.
Lastly, empathy is an ability. This means you can practice it, develop it, and yes, get better at it. Chad Fowler has some great tips on how to do so. There are some nice curated lists with more reading here and here. I encourage you to be proactive:
Developers spend a lot of time honing technical skills such as algorithms or language minutia. It is just as important to hone your ability to understand others. This has benefits for yourself and everyone you work with. I’m devastated when I see situations where this ability is undervalued and neglected and I’d love nothing more than for our industry to properly value empathy.