Empathy and the Software Engineer
What Does Quality Have to do With the Title of this Article?
High quality code is a buzz phrase that is being explored from many angles. It often focuses on external impacts of producing poor quality code. Impacts to the business and their bottom line/reputation, impacts to the abilities to add new features to help increase revenue/add value.
What seems to be overlooked are the internal impacts or the human capitol toll of what poor code quality can cost. There are a few studies that have explored the Software Developer Experience (An Actionable Framework for Understanding and Improving Developer Experience is worth reading). The quality of code (along with clear intent which inevitably affects the quality of code) often drives the overall happiness of a dev shop.
What do I mean by good quality code? I define this as code that is simple (easy to read), well documented (variables, method names, and comments can tell the story of what the code is doing), and well tested (a suite of tests that cover unit and more importantly integration tests of some sort).
You Are One of These Types
As I have gone along in my software development career. I’ve met 3 types of developers (and at various stages of my career, have been all 3):
- The Developer who writes quality code
- The Developer who just wants to write code that works (they don’t necessarily care why or how it works).
- The Developer who is neutral (meaning they will write quality code when it is convenient for them to do so, for example timelines allow for it).
I want to focus the attention of this article on the first category of developers mentioned, the Developer who writes quality code.
Without doing a study on the reasons why developers who do write quality code do so consistently, I have often found that the motivations can vary. Some motivations may be:
- A Developer is scared that someone will judge them for their code in the future.
- A Developer is fearful of being blamed (or even termination) for software failure
- A Developer wants to leave legacy code in a place that others enjoy working with in the future.
Although there are probably other minor reasons, these have been the most prevalent that I have run across in my 11 year career (up to this point).
Let’s explore just one of these areas: that A Developer wants to leave legacy code in a place that others enjoy working with in the future.
Why Leave a Legacy of Quality Code?
No one likes inheriting a mess. This is true for all of life, not just software development. For instance, to the best of our abilities we want to leave a good legacy for our spouse and children both in character and having our “affairs in order.”
When a person has a will and life insurance, among other things, he leaves his family in a place where they can focus on healing. Likewise, in a very less life impacting way, when an engineer leaves a legacy of good quality code, her fellow (and “descendent”) engineers can focus more on new features and less on bugs or trying to understand how to add or change code in a messy codebase.
Final Thoughts
The quality of code can (because it isn’t always true)be in direct relationship to the team empathy for fellow engineers who follow in their footsteps. I would be willing to argue that an engineer who consistently writes good quality code has an eye not only on personal excellence, but also on care for those who will one day inherit her code base.
My observation over the years of my career are that the most empathetic engineers are the most influential. They are the ones whose teams remain intact for years. Their teams often drive the highest value. Others desire to work with and learn from them. They produce quality software backed by quality code.
As much as we like to believe that our code is more about us and our own abilities, it rarely is. More often than not your code is part of a team effort that will be managed by dozens and sometimes hundreds of other developers.
I believe an empathetic developer (someone who is thoughtful and considers others outside of themselves when it comes to his code) will more often than not, consider the quality of her code and how that will impact the business, the customers, and most importantly fellow engineers.
If empathy could easily be measured, I would be willing to bet that no one produces better quality code than the empathetic developer.
If you enjoyed reading this, consider giving me a follow -> Follow Me