Communication - The most important software development skill

I recently listened to an episode of Dot Net Rocks featuring John Sonmez focusing on working on your career.  One key point that John brought up was that the key skill that we as developers can need in today's environment is the ability to communicate effectively.  I've been pushing this same point of view for a while.  As I went though university I was aware the communication was important, but the scale of the importance didn't dawn on me until I worked with someone who was truly lacking in communication skills. For the purpose of this blog I will call him Thomas (not his real name obviously, it's actually part of mine).  

Thomas' integration with the team was a daily struggle, we could not exchange ideas or build a working relationship.  The team worked hard to include him and provide avenues for him to join in discussions that were work related and non work related.  I can only assume he was also working towards this goal, if he was, it was hard for the rest of us to see. Despite all efforts there was a general failure getting him to integrate and become part of the team.

This lack of integration withe the team impacted on more than simply the relationship with the team.  Not being able to communicate restricted his ability to learn from the rest of the team, as well as inhibiting his ability to grasp the concepts required to develop applications using Domain Driven Design principles.  Our developers have drunk deeply of the DDD Kool-aide and it is the backbone of our the way we design software. 

The lack of social and communication skills meant that the only interaction with the rest of the team was in code review. Given the problems with grasping concepts it should be no surprise that code reviews were consistently negative.  This took a big tole not only on Thomas but on the rest of us as a team.  For Thomas he stopped enjoying work, it's hard to enjoy being somewhere where all your interactions with people are them being critical of you, I'm sure we can all relate to this at an anecdotal level and there is actually research to back it up.  The ideal ratio is nearly 6 to 1, positive interactions to negative, bear in mind that these don't all have to be related to your work.

So Thomas' productivity went from low to lower and the rest of the team's productivity also took a hit. There were assorted meetings, official and unofficial, within the team and with external parties (human resources, and multiple levels of management) as to how to fix the problem.  We asked how we could draw him out, what activities could we do to include him, was there ways to improve his work so that hey would get positive interactions in his code reviews.

In the end I have no solution for you as to how to fix the communication problem, his story ends in a very predictable manner, eventually Thomas found work somewhere else and moved on to a new company and hopefully a new beginning and the rest of the team learned a lesson about the importance of communication and relationships in the workplace.

I think about Thomas from time to time and hope that he's doing well, wherever it was that he ended up.  I hope that he did manage to learn something from us, we all learned a lot from him; Communication is one of, if not the, most important skill in succeeding in today's software development workplace.


Popular posts from this blog

Solving `Empty reply from server` in DotNet Core

Testing functions that use local storage with Jest

Building a verify JWT function in TypeScript