Working in multiple project teams, from different backgrounds, nationalities, and regions to working with clients from different parts of the world; each with their own ways and culture has often made me reflect on how soft skills of each member in the project team affect the results of the project.
These skills are often overlooked and yet are vital in the software development world, which in my opinion every software developer should try to develop these at the beginning of their career, or at least by now if you’re reading it and you don’t have them in you.
Do you feel for your teammates? Do you ever put yourself in somebody’s shoes just to know how it feels from their perspective? To momentarily imagine yourself as another being and try to think what it is like to be that person? Be it your client, manager, lead or even your working colleague.
Empathy is the foundation of every interaction
As developers, we all have to collaborate with project teams and our empathy is challenged and tested every single time in multiple situations. You may have to work with the business analyst in understanding those requirements, get help from your tech lead in solving a problem or even dealing with the client directly, you need to empathize with your user and allow yourself to see things from their point of view.
Decision making should be just more than personal preference.
If you feel that the other person’s idea is not making sense to your likings, then ask yourself why. Before you have your say in it, start off with a positive mention about their opinion, then give your recommendation before you complete it with another positive note. This way, you’re not just giving feedback only but also will help you understand clearly the pros and cons of exchanging ideas.
Communication is vital when it comes to being any professional. To be able to speak up in meetings, whether they are with customers or staff, and give honest updates on the progress of your tasks are some of the few aspects where communication comes into play.
Chances are very high that as a developer you will work with other people. You will most of the time be required to work together in teams, or at least in pairs. Sometimes, you’d have to work closely with clients, managers, contributors or other stakeholders. Learning how to collaborate and communicate with different people and their personalities is critical.
Listen carefully, then talk
The best communicators spend as much time listening as they do talking. Interrupting your colleagues is something that happens very often at meetings and that’s a sure way to frustrate your colleague and nobody would like it.
You need to listen first and make sure every single word you hear is understood. Even if you have to disagree on certain things, keep listening to everything that is being said. You might think it is foolish of you to waste time to listen to such thoughts, but it’s the right thing to do.
Have you ever had a moment where a Junior developer comes up to you for clarification, or recommend a good standard for coding and you feel like you are a professor lecturing a student? It is very easy to come off as condescending when you are trying to validate and explain a point to your friend or even while coaching someone.
Things like this can happen even though you did not really mean it. You can avoid trying to sound condescending while talking to the other person by ensuring you:
1. Use your words carefully, where you don’t put the other person down. Use words such as “it could be better”, “I’d recommend” or even say “I love this idea of yours, excellent! But how about approaching the problem this way?”
2. Do not ever command or give out instructions. Instead of saying “You should do it this way”, try saying “my advice would be”
3. Try to put yourself on the other person’s shoes and think about his perspective. Keep checking up on your interlocutor with questions on whatever is being discussed.
Change is happening everywhere. Whatever happened a decade ago, is not happening the same now and will not happen the same way in the next couple of years. Organizations are adapting to the needs of the world that is rapidly changing. We may be accustomed to doing things a certain way, be it your personal way of getting things done, or to the ways of the team.
Hence, we tend to resist change when change is brought in.
Imagine you just finished writing a few hundreds of lines of code and then somebody wants to refactor the whole code? I am quite sure, we have all felt that anger towards change. Developers, generally hate change. But remember change is always done at the interest and betterment of something. Like changing the current architecture which is really outdated and needs an upgrade in the framework. There can be many reasons.
The point here is that if you instantly feel attacked when someone else brings up the idea to change, then remember that the problem lies in you. You’re getting defensive against a new idea before even completely understanding what the idea is about.
Try to take some time and see what is going to be changed and why it is being done. Yes, it may cost you some extra work and time, but it will come in handy at some point when you realize that you made the right decision to be willing to change.
Being able to write super awesome code is an asset. I am not denying it, but I tend to value both soft skills and hard skills on the same level of importance for every programmer.
The skills mentioned above are very much more important than knowing a specific language, library or framework. They are all important as developers and as professionals. But nobody is perfect, everyone has room to grow. So be willing to grow and try to be better at achieving these non-programming skills which will definitely be of help to you.