Not So Soft Skills - for Software Engineers

Not So Soft Skills - for Software Engineers

There's Nothing Soft about Soft Skills

Hey everyone 🌈

No matter if you call it common sense, practical wisdom, or basic abilities, Soft Skills (or life skills) are a set of skills that make the journey through life easier, or at least, more satisfactory.

In a work context, we can define Soft Skills as non-technical skills that relate to how you work. They include how you interact with colleagues, how you solve problems, and how you manage your work.

For Software Engineers, especially in a remote context, Soft Skills are as important to get a job as knowing how to program.

But there's more, many companies hire almost exclusively, based on soft skills, reiterating that one can teach someone to code, but can't teach good manners, kindness, communication, assertiveness, patience, or empathy.

many companies hire almost exclusively, based on soft skills

Unlike hard skills, which are learned, soft skills are very similar to emotions, or insights, that allow people to "read" or "feel" others. Many of them come from family, experience, or lifelong learning opportunities.

I've been working remotely, as a Sofware Engineer, since 2017. During my journey, I've learned how important it is to invest in learning or improving our soft skills.

And I try to improve them as a daily practice.

Plus, the large majority of the teams are poor in what concerns improving soft skills as a whole. This makes people work alone, and feel they're alone, working against a fleet of highly opinionated and mean bots.

I've been working remotely, as a Sofware Engineer, since 2017. During my journey, I've learned how important it is to invest in learning or improving our soft skills.

1. What are The Most Important Soft Skills for Software Engineers

Communication

Communication is, from my perspective, the best soft skill one can have.

Effective communication is the key to everything, in every context.

Usually, while working in a team, one should never forget how important it is to communicate effectively, simply and clearly:

Some tips:

  1. Speak clearly and with conviction. People pay more attention to what you say when you say it with confidence.

  2. Listen to others. The best communicators listen much more than they speak.

  3. Don't interrupt the person speaking. Let them speak and in the end, chime in with your thoughts.

Empathy

Empathy means you're able to put yourself in someone else's shoes.

Know your colleagues, understand where they're coming from, and what their sources of motivation are.

Raise understanding among people.

This soft skill allows you to predict how someone is going to react to what you say, meaning you can tailor how you speak to your target audience.

Empathizing with your clients, or users, contribute 90% to your collective success.

Always remember that taking decisions is much more than a personal preference and that people like to be recognized and understood.

Document your work

Being able to write documentation is very important.

Make sure you take notes about:

  1. Meetings

  2. Colleague requests

  3. Client requests/concerns

  4. Daily work

You might want to create an engineering log, where you can register and track your progress and the way you've solved problems.

Your future selves (yes, you, teammates, clients, users, etc.) will be thankful for it.

Also, taking notes will exponentially increase the way you communicate. You'll be able to communicate clearly if instead of showing your reasons by heart, you pick your polished list of important things and start reasoning about each one.

This one improved the way I communicate as a Software Engineer.

Listening

As already mentioned in the Communication section, listening is very important to leverage communication and empathy, so keep your two ears listening and your mouth shut for a bit, and check how this will dramatically improve yourself as a professional and as a human being.

Teamwork (Collaboration)

Working with other people can often be difficult. You may not always agree with your teammates, and there's nothing wrong with it. Different points of view help to build better products, better teams, and more successful companies.

Always put team opinions on top, and try to build a common ground solution.

Helpfulness

When people ask you something, be approachable. People must feel that it's easy to approach you and ask for help. Being helpful will please anyone on the team.

If you're a senior developer, you can use this soft skill to help your junior colleagues grow and feel great.

Cultivating a sense of belonging is very important in a team. Soon people will trust you and reach out to you when they seek help, understanding, convergence, and meaningfulness.

Open-mindedness

Keeping an open mind is super important if you're working in a team/group. This means you'll be able to quickly switch and accept others' ideas. Even the worst ideas can somehow contribute to the whole that is the final solution.

Clients are the ones who use your product, so listen carefully to their feelings and suggestions. Always try to align and reach a global solution, which will for sure, make everyone happy.

Patience

Usually, you're part of a team. Some members of the team are more likely to understand you immediately. Others do not, they require you to communicate slowly, or in a different tone or approach. Feel people, and adapt patiently to them.

Always remember that the outcome of working in a group is much better than the outcome of working alone.

When you participate in a meeting, slow down while trying to explain the reasons behind your choices. If you're talking to non-technical people, translate your reasons into simple examples anyone from any context can understand.

Make sure everyone understood your point. Have strong opinions, weakly held, so that others are also able to contribute and improve collectively on what you did.

Relaxation

Software development is a very stressful activity. People usually see you as someone who works in the comfort of the home, or the office, that because you're always in front of the computer you have everything at hand, and you don't even need to give a step to have your work done.

But the truth is... you need to live inside your head and you're always dealing with new problems. Every day you need to search for the right (and always different) solutions for edge cases, to deliver projects on time and on budget.

So make sure you relax. Take a deep breath, practice meditation or yoga, and listen to calm music.

Creativity

All good software developers can follow the instructions on a ticket. But great developers always bring something more to the table: their creativity.

Creativity is like a muscle, the more you use it, the more powerful it gets, so make sure you practice this.

A good idea to improve on it is to play musical instruments, to draw, and to do things from scratch by yourself. These are all creativity boosters.

People and interpersonal skills

You might be the best coder working on a project, but it means little or nothing if you're not able to work well with other members of the team.

This is a global skill, that relates to other soft skills such as communication, time management, patience, and empathy.

Keep team interactions cohesive. Lower your ego and make your teamwork as a whole.

Usually, the best developers (in which code concerns) lack this kind of skill, so there's always space for you to try to improve them. Reflect on your feelings and show your concerns about how great it is to create a comfort zone, where everyone's opinion was taken into account.

Self-awareness

When you see people denying they don't know something, it's often a sign of insecurity.

Developers should be confident in the things they know, and humble in the things they don't know.

We're lifelong learners, and it's not expected of us to master everything.

When you see people denying they don't know something, it's often a sign of insecurity. Once again, create a comfort zone, and be an example. Be the first to say: "I don't have a clue on how to start tackling this." or "Can someone help me or explain this?".

This generates trust and a sense of belonging.

Slowly you'll see the deniers starting to also raise their hands to be as great as you were. Be the example!

Self-awareness is usually related to two distinct syndromes or effects:

  1. Imposter syndrome: people who think they don't know anything, that they're real imposters on the job.

  2. Dunning-Kruger Effect: the lack of knowledge and skills in a certain area makes people overestimate their competence. By contrast, this effect also causes those who excel in a given area to think the task is simple for everyone and underestimate their relative abilities as well.

Usually, we have a little bit of both. So raise your self-awareness and avoid being on the boundaries of these two.

Remember to be kind to yourself!

Self-learning

This is one of the most important skills one can have. In software engineering, being a lifelong learner is a great ability.

This means you can by yourself identify problems and quickly look for effective solutions.

Every year, thousands of developers enter the tech world without a formal computer degree, and this soft skill is leveraged by many boot camps, such as freeCodeCamp. There, students are advised to "Read, Search, Ask" so that they can overcome their difficulties on their own, only asking if after trying to study and understand concepts, they still lack knowledge or solutions for what they're trying to solve.

Accountability

Doing mistakes is part of human nature, and we all do it from time to time, so keep calm, sorry about it, and fix it, or ask for help to fix it.

Accountability is about recognizing and owning our mistakes. You must be the first person to raise your hand and assume you did it wrong. Doing mistakes is part of human nature, and we all do it from time to time, so keep calm, sorry about it, and fix it, or ask for help to fix it.

Owning our mistakes raises trust, and it's a big win-win for the relationship between an employer and an employee, so this is a no-brainer, recognize it.

Time management and organization

Work piles up, and more often than not you have a big list of things to do. This is a very common situation that requires you to keep calm, relaxed, and focused. Have you noticed that when you're focused the work takes a lot less time to do? That's because anxiety blocks us, and we start spending more time thinking about what needs to be done, than effectively doing it.

Ask yourself:

  1. What is urgent?

  2. From these "x" things that are urgent, what is the more urgent? If in doubt, ask your client, your manager, or your teammates.

  3. What can be done in less than 5 minutes that you can tackle immediately and take out of the way?

  4. Can you delegate a part of your work, or can you request help from a teammate?

This will help you to effectively handle all the requests in the right order.

There are two basic techniques to overcome this bad feeling of having a lot to do:

  1. Solve the most important and difficult issue, this way you'll feel better and more productive.

  2. Start with some small issues to warm up and create the sensation you've started to clear your list.

There's no magic formula for this, so think, put it in perspective, and most important: START!

Sooner than you expect you'll feel a lot better.

2. How to Improve Yours and Your Team Soft Skills

Well, I've ended up explaining how to improve soft skills in each one I've described above. But I couldn't suppress this section as I really want you to focus on improvement.

The world isn't perfect. There are no perfect people, and there's no one with all the soft skills at 100%.

Everyone has their opinions, their attitudes, their approaches.

But if you raise self-awareness on what you lack, it's easier to pay attention and fix it. Take notes about what you're lacking, and try to improve it as soon as possible.

For me, this worked very well. I slowed down a bit and stopped answering questions in the next second.

Possibly you use a tool like Slack to communicate with your team, so relax, and think a bit before hitting the keyboard. Communication is expected to be async, so you have time.

Listen more than you speak. Write clearly. This is important if you're not a native English speaker/writer. Be empathetic, be inclusive, always give.

When working with people from different cultures, it is convenient that we understand a bit of their cultural background.

I've read a great book about it, at the beginning of my career. So I'm leaving here the link, as a good reading suggestion: The Culture Map .

Always give the example. People will follow you if you start out of the blue to do something good. I've seen teams starting to say good morning because one did. And this is a great step for one not to feel so lonely, once again, working against their own fleet of mean bots.

Examples shouldn't always come from leaders. Real leaders allow the example to come from bottom to top, and adopt it, and spread it among their teams.

3. Conclusion

Sigh..., there's so much to talk about soft skills.

Don't forget there's no magic behind improving soft skills.

Go through all of the items mentioned above, take some notes about which are the ones you're lacking or desire to improve.

Read about it, try to implement changes from day 0.

Never forget to give the example.

If your team isn't doing something you feel would be great to do, start doing it. Maybe they'll appreciate that and start doing also.

Lower your ego, show your fragilities, remember to say "I don't know, I still don't have a clue. Can someone help me? Can someone explain this to me?"

In the end, everyone will win! I can bet on that!

Last but not least: ALWAYS BE KIND! TO YOURSELF AND TO OTHERS!

You rock!

--

I'd like to say thanks to y'all that took the time to read this article.

If you have any suggestions you can reach out to me on Twitter.

via GIPHY