Communication skills is a broad concept that includes various knowledge and skills. But most people understand this as roughly the same thing: the ability to tell so that they understand you and the ability to understand others. An example of a hard conversation with a programmer is presented in the film a social network, when a girl tries to talk with Mark Zuckerberk, and eventually drops it, because the dialogue turns out to be multithreaded.
I believe that for programmers there are two ways to develop communication skills – light and dark.
In addition to writing code, the programmer needs to be able to correctly present his work. There are plenty of opportunities for training. For example, our team has morning half-hour rallies so that everyone tells what they did yesterday and what they will do today. This practice is quite common, but, in my opinion, insufficient.
Having been to several mitaps in programmer communities, I decided to introduce mitaps in my team as well. Now, when one of the colleagues does something interesting on the project or simply encounters difficulties, but overcomes them effectively, he talks about this before the team in the format of a presentation-instruction, possibly applying scripts. Such mitaps allow you to learn how to tell and make good presentations.
There is another way – educating people. Of course, the ability to tell is interesting for a large group of people – this is a very serious skill that only very experienced developers possess, but you can start with individual training. I was a tutor in my student years. And at first it was difficult. For each student you need to find your own approach. To tell in such a way that a person understands what kind of a strange beast is the “program” and how to write it.
But it is the learning process that someone will teach to represent what is in your head in a form understandable to others. This is a great workout, after which you can already talk to groups and large audiences.
In addition to the fact that both of the described methods help to learn to communicate competently and talk about their projects, they also allow you to learn to listen. And this skill is no less important for the developer. Try to attend various events, meetings, lectures and courses in general as much as possible. Listen carefully and try to imagine how all this can be implemented in your practice.
The first way involves conducting light analytics and communication with customers. I can’t say that this should be done constantly, but in some cases discussing requirements with the customer can be very useful for developing communication skills. How can such communication help?
Each programmer needs to understand the request that came to him, the customer’s problem, options for decomposition of the task and automation of problematic issues, and it is also important to be able to highlight the main thing in each process. All this is possible only in the process of discussion.
What is important, it is in communicating with the customer that one can learn to propose ideas for optimizing tasks and simplifying the work of other colleagues. For example, recently, in the process of communication, I proposed to the customer to optimize the algorithm as he really needed. But none of the customer’s team could formulate the request correctly, because they did not see a way to reduce the logical load on the algorithm. As a result, I told my proposal in a language that was understandable to a wide audience, and it was accepted.
Also, in my opinion, the way to “resemble an interview” refers to the dark path. Even if you are not going to change your job, go to a few meetings in non-core companies. Most often, the first interviews are conducted by a person who is not very versed in the development, but understands the business processes of the company. It is even possible that this is your future customer. Learn to tell such a person about your work and achievements, think over your story so that you are understood. In my opinion, this is a great way to develop communication skills.
In any case, it doesn’t matter which way you choose, the only thing that matters is that to develop communication skills with the audience, you need to communicate with it. Learning this while writing code is not possible.