If I were to ask you what a developer’s single most important ability was, you would probably tell me that it would be his ability to write code, right? This is where I would disagree. I would prefer to work with a great communicator with mediocre programming skills over the opposite any day. There are a ton of reasons for this, but a couple stand out as the most important.
They know when to tell you they are stuck.
Impediments are the single most damaging thing to a normal development project, but if they are not brought to someone’s attention, it’s likely that a developer will continue to stare at their screen, hoping to eventually have an epiphany on how to fix what’s blocking them. Instead, when you realize that you are stuck, find the ‘expert’ in the area you need help. Then you can get back to being a productive member of the team.
They are able to aid in training new team members.
Having new members on your team can often decrease efficiency, at least for their first few weeks. Often in the case of a new developer being mentored by one experienced developer, it is likely that person will only be able to accomplish mentoring until the new developer is up to speed. However, if you have a team full of communicable developers, training a new person can be a responsibility of the entire team, and as a result you minimize the impact of the training expense.
They will spread knowledge across the team.
Developers that are strong communicators also like to share cool new things they learned. Since every other developer on the team is likely to run into the same problem at some point, they will be able to use the knowledge gained from the other developer to speed the process along. This is similar to training a new team member, except opens an avenue for all developers to train each other.
They are open to new ideas.
Have you ever worked on a project with someone and every time you come up with an idea, that person replies with “that’s dumb”? How about a team that looks at new ideas with genuine interest? The latter situation will encourage creativity and experimentation, and your product will benefit from it. One of the teams I worked on created an awesome tool for converting JSON data into Java objects with minimal setup on the object side, and as a result eliminated an entire step in the code path.
Working on a team of closed off developers will generally give you the opposite of all these points, which creates a team with silo’d knowledge and a stale product. It is the responsibility of every member of the team to be accepting, open, and honest when working together to create an environment where developers can thrive with proper communication. If every member of the team adopts this mindset, your team will begin to operate truly as one.
I would love to hear other’s comments about communication as a developer, and where you think it falls in importance. Please leave a comment below to continue this discussion.