The most important skill of a software developer — Communication
Nowadays, you can open Google and enter this keyword “most important skill software developer”. Then you can get many useful results. For example 13 Technical Skills You Should Have As A Developer, or The most valuable software developer skills to get hired now. We can try similar key phrases to enrich the list.
I can see almost the anwers are great and give us useful information. Based on that, the software developers can improve their own skills. And the recruiters can build useful metrics to gauge their candidates.
In this post, I’m trying to have a different point of view. I don’t want to have a long list that’s no one can be perfect at all points listed. Instead, I want to pick out the most important one.
Communication — the most important skill of a software developer
Make it be scoped
First, let’s limit the topic to the software development industry. The communication skills of a software developer are completely different from the communication skills of a salesperson.
Information technology means communication
Everyone knows software development is a part of information technology. And information technology is about building systems that receive the input data. Then, execute it to return output data as expected.
In real life, when someone tell each other something. The listener will get the message, process it, and have an appropriate message to send back.
What is the different between information technology system and a real life communication? We can not see there any difference here other than the execution environment, real life vs machine.
This is the reason why I can say “Communication is the most important skill of a software developer”. And we will expand the story with the following points.
When a developer needs to perform the best communication in software development
As mentioned, “communication is the most important skill of a software developer”. Next, we need to point out situations that require communication skills.
Requirement analysis needs the most important skill of a software developer — Communication
You hand him a bunch of documents and specifications. And a person with good communication skills can easily understand all the points. Further, that guy can sort all the points up in different aspects: by priority, by granularity. Then, he can make expensive questions to address unclear paths. Especially, he can recognize potential risks and have valuable reports for clients. Then they can make good decisions.
About “questioning”, it is really a skill every developer needs to be equipped with. In other words, it is the most important point of the most important skill of a deverloper in software developent. Questioning is not only to get clarification of single point but also to enrich other edges. When a well-communicated software developer made a question, he considered not only the direct impact, but also several variations. As a result, he can process large amount of information. That’s what makes him different.
Software development needs the most important skill of a developer — Communication
Programming is more than just writing executable code. It is writing with rich information. Each line you write will be a messsage you want to send to other teammates. That is why, ensuring well-communicating in writing source code is very important.
1) Naming is communication
Someone said that “A good developer can take hours to name a single variable”. In my experience, it 100% correct. It’s not for all cases, but for important ones. I myself often spend a lot of time defining good names for my variables, classes, interfaces, methods, and so on. The reason is, the good name will provide maximum information so others can easily understand its purpose and even its life cycle.
2) Making comments is is communication.
These days, I prefer the less-commentary style of coding. That is not to say I don’t use comments. Instead, I maximize the information in the names of these variables, classes, interfaces, and methods. However, they are very short. So, they can contains a limit of information. That’s why there are many cases where we need using code comments for further explaination.
3) Applying design patterns is is communication.
It’s not just the best practice to design things in similar situations. But also how we pass information to other teammates. The thing is, I only need to read a few lines of code that apply a design pattern. Then, I can easily understand all the factors involved without further reading. Furthermore, I can understand how a 3rd libraries work technically by realizing their design pattern application. This is extremely important in powerful OOP programming languages like Java, .NET, and C++.
4) Complying development process is communication.
Why not? The processes and worklows are the backbone to driving the project efficiency. Therefore, a good communicator understands that each step of the workflows, each state of the processes will have an impact on the stakeholders. Updating task status is the simplest step a developer needs to complete in real-time. Furthermore, we need to monitor the workflows, find out its weakness and suggest ways to improve it.
5) Complying development conventions is communication.
Conventions are really important to drive project efficiency at granular level. There are a few major conventions such as coding conventions, documentary conventions, reporting conventions. They are there to ensure all members of a project work in the same way. Sometimes, the convention is not so strict as the process.
Good reading, understanding and complying to conventions define a good developer in communication. He gets input (reading) then performs good output (understanding and compliance).
Software documentation needs the most important skill of a developer — Communication
This topic is not only in scope of a developer but also the others like QC/Tester, IT admin, and etc. But, on the developer point of view, documenting is very important. Basically, the developer need to provide good documents and instructions. They help the relevant persons to understand about how it works in terms of engineering. Also, they help the IT/Admin to easily follow to setup and maintain it in the runtime environments.
Why is communication even more important in offshore software development outsourcing?
With software outsourcing development, you started working with people from different companies. More complicated, in offshore software development, you need working with people from different countries. Along with that are different major languages and cultures. That’s why, communication is even more important for a software developer working in this industry.
Good communicators know the both sides of a situation. Therefore, they can maximize the advantages and minimize the disadvantages.
The productivity overcoming the language
You are a developer from Vietnam working with a client from the United States. There is no doubt that English skills are very important. In fact, language skills of developers are not often at the top level. But a good communicator knows how to reduce risk and improve the productivity.
First, that guy sense the situation. Then, he can actively establish communication conventions. He can use the simplified grammar, sentences, words. And he can lead the client do the same. Very simple, he can ask client using the direct statements instead of using complex instructions with lots of rarely used phrases. Responsibly, he can send client a pre-apologize that sometimes his English is informal.
In particular, he can defeat the language issue by providing different way of asking questions. First, he writes the question. Second, he provides more information to ensure client won’t misunderstand. Third, for a complex business logic, he can come up with detailed scenarios. They provide input data and expected output data. So easily, client reads the scenarios and answer “yes” or “no”.
This is an art. And a good software developer need to continue learning time over time the communication skill.
Beat inefficient communication due to different time zones
Time zone difference is another communication problem. It prevents the transfer of information from the fluency. By equippting the most important skill of a software developer, he or she can create smart communication strategies. Very simple, he will maximize the transferred information. In addition, he will spend time on inofficial working session to check the communication channels. Just a little time spent, but he can get confirmation for the tasks of the coming days.
By doing this, we can minimize the risk of time difference. We can make sure the development flow has not been blocked. The team will be always have tasks ready todo.
The conclusion
This post is not to deny the points listed by other articles. They are very good and with enthusiasm. I just wanted to give a new perspective. In which, a good developer should appear as a good communicator. In fact, I know a lot of developers with great technical skills but not communication skills. They can still get the job done very well. But just in case all the technical specifications are well-prepared. In case that communication skills are required, they get confused.
The final words
HDWEBSOFT has many years of experience in software outsourcing development. Therefore, we understand the benefits of good communication between developers and clients. That’s why, we applied best practices to maximize productivity overcoming language and time zone problems. Along with that, we always have communication training for all the developers. In it, we ensure them fully understand that communication is the most important skill of a software developer. In addition, we ensure they are equipped with the best methods to handle that.