The Most Important Skill for Software Developers Isn't Writing Code
Brian Cline – Chief Technology Officer
As a software developer, I’ve always felt the most important skill to have was being able to write code and being able to multitask. Over the years, I’ve realized that while writing code is important but it’s definitely not the most important thing in developing software.
Multitasking isn’t actually important either, and it’s very difficult for it to actually be done in practice because writing software requires a laser focus. So, what is the most important skill then?
I believe that a lot of my personal failures as a programmer were the result of communication problems and not usually technical reasons. The most important skill in software development is being able to communicate clearly.
What is Communication?
Communication means a lot more than just being able to say what you mean, and have it understood. Communication also means being able to listen and understand what others are asking for. Learning to communicate as a software developer can be difficult as it’s very different from programming because people aren’t the same as computers.
I bet you communicate every day whether it be with your colleagues or your manager. Like programming, the best way to get better at communicating is to better intentionally practice it and to do things that we wouldn’t normally do.
Most likely, a third to half of the work day is spent communicating with others whether it be in written or verbal form. It’s a really good idea to start practicing being good, compassionate, and passionate person. So, how do you do this?
Here’s a couple of principles I’ve been trying to follow that I feel are pretty helpful:
- Choose to encourage over criticizing.
- When criticizing it must be constructive
- Put yourself in the other person’s shoes (yes this is definitely cliché).
I believe that poor listening habits are the primary cause of many of my daily problems and probably they’re the cause of your problems too. I think the big thing to do is to really focus on listening and not limiting what you hear.
Focus on listening for the content, meaning, and feeling that that other person is expressing. It’s super important to just listen to understand and avoid interrupting, commenting or disagreeing. Wait through the moments of silence in case the other person isn’t done finishing a thought.
As left-brained analytical people, we all have a desire to fix the problem or concern and not listen to the entire message. This unfortunately doesn’t help with listening which results in things being missed.
Choose to encourage over criticizing
Feedback is essential to a being a good software developer and for running a well-functioning team. I’ve learned that only commenting on the poor-quality work results in the other programmer producing worse quality work.
Criticism usually ends up putting the other person on the defensive which usually results in a win for absolutely nobody. We developers almost never actually work alone, we are usually on teams of 3 – 7 people and spend lots of time reading and reviewing other’s work.
When criticizing it must be constructive
As a young leader in the Canadian Forces, it was constantly banged into my head that when providing feedback to my staff it had to be constructive. Feedback had to something they could actually change.
Feedback like “you’re an idiot” won’t help any. It won’t help that person to grow, it will discourage them and cause friction.
In the military we always told to use the feedback sandwich which means a Praise, Improvement and a Praise. The feedback should look something like this:
Focus on a particular strength of the person. It could be that they’re a really hard worker, or that you appreciate the task getting done so quickly. The criticism, basically what needs improvement. The feedback needs to be constructive though, you need to show how you would do it. Focus on another strength of the person or you could use the same positive feedback as was started with, and then talk about how much better it could be with the criticism being followed.
Put yourself in the other person’s shoes
“Putting yourself in the other person’s shoes” is a lot more than a cheesy cliché or quote from a book like To Kill a Mockingbird. It means that you need to have empathy and understand the feelings that the other person is having. Resolving conflict through empathy is a vital communication skill.
Empathy is recognizing other people’s emotions and going beyond your own concerns. People aren’t generally being evil, unkind or stubborn. They are reacting to previous experience or the knowledge they have.
Good communication is what will drive growth whether it be personal growth or career growth. Terrible communication will cause your personal life and career to stagnate.
The Developer on Fire podcast was a podcast that had a fairly large impact on me. There’s probably close to a dozen episodes where the guests speak about communication being important.
“How to Win Friends and Influence People” by Dale Carnegie is a really good book about the important of communication and how to get better at it.