- Being excellent at writing code is not enough
- Soft skills for a software developer are the game changers
- Embrace soft skills – this article helps you recognize them
- Soft skills requirements are evolving and changing
- Developing your soft skills as a developer will make you future-proof; suck that, robots!
Soft skills for developers are not a fad
Gone are the days when the only expectations from developers were centered around their software development skills and technical skills. Writing the right code and writing and executing tests are still cornerstones of developer activities. As the software industry becomes integrated with business, the expectations from developers evolve. Even if you are a developer working in a software development company, you will still interact with your peers – chances are you are going to be a team member – a part of a larager team. You will talk with your colleagues (designers, QA engineers, project managers, executives) and other stakeholders. This is why soft skills are a key part of your toolbox as a software developer, as well as your willingness to learn them..
If writing the excellent code and engineering isn’t enough, then which soft skills you need? How can developers focus their efforts on growing and building soft-skills?
What are soft skills for a software developer?
There are several definitions of what soft skills are. Most of them center around the notion that soft skills are the skills enabling you to communicate and interact with other people. And to do so in a meaningful and harmonious way. This includes things like communication, empathy, patience, and more.
Some people are natural-born communicators and seem to have a particular affinity towards soft skills. But, the great news is that almost everyone can learn how to be an excellent communicator. You can learn to display more empathy and become more confident.
Soft skills for developers – our ultimate guide
In this article, we share some of the top soft skills to help them recognize them. Once you know them, you will be able to develop them, and thrive in your work (and personal) environments. Some of these tips are sourced from software development hiring managers.
Communication is a usual suspect in most soft skills lists – not only for developers – but for any profession. But in software development, communication is crucial. Keep in mind that communication is a two-way road. You need to be a good listener. Listening to your colleagues, customers, or users will make all the difference. When you listen, you are getting an unfair advantage compared to those who only talk. You get to learn things, expand your horizons, and broaden your worldview. It also helps you rank tasks and requirements.
Once you get to speak, do so with clarity and confidence. With conviction. You are trying to achieve something with communication. Your ability to speak is your weapon and a useful tool. Use it! Also, be polite and never interrupt the other person talking. This will also show that you can be patient, to listen and keep your composure. Keep in mind that communication is not only verbal – it is non-verbal as well. That is why crucial to stay focused, listen, don’t interrupt, and speak with confidence. It all contributes to your communication style. It is necesseary to be able to communicate effectively.
While you might spend a lot of your time writing code for machines, you are interacting with other people. “Putting your self in other person’s shoes” is a way to describe empathy in straightforward terms. Understanding other people, their belief systems, their mental and personal characteristics will benefit you. You will be able to adjust your behavior, to address their needs, and make sure that you are taking them into account. This is something that is often overlooked. But, the best developers will try and understand their customers or colleagues since it will enable them to do their job . Again, empathy is your advantage – it will allow you to see things with their eyes. It will make you more sensible and approachable.
Some of the common issues in software development are avoidable with a bit more empathy. You don’t need to be a user researcher, UX designer, or an anthropologist. Being more empathetic starts and ends with you being a human being aware of the other people.
Software development is not an easy feat. It is a complex effort which often includes long processes. From the project kick-off, through the project execution, testing, deployment, updates… Most of these activities take a lot of time, even in agile environments. Patience is especially important when you are starting as a developer. The most important person you’ll ever have to be patient with is you. Give yourself enough time, enough chances to make errors, and fix them. Once you are patient with yourself, it’s easier to be patient with other people. Sometimes people will need more convincing, you will need to do your best to “sell” them your idea or approach. Being patient is your ally in this mission.
4. Open-mindedness and adaptability
Steve Jobs famously said during his Stanford commencement address –
“Stay hungry. Stay foolish.”
In essence, he encourages you to be open-minded. He is trying to make you be receptive to other people’s feedback. His words are relevant today as new technologies and paradigms emerge.
A decade or so ago – waterfall software development model was still ruling. Later came the more agile and lean approaches. This means that people had to change their mindsets and adapt to the change. Some were more successful in those efforts. Others struggled. While our inclination to be open-minded and adaptable might have its roots in our upbringing and general worldview, it can be developed far more outside those initial settings.
When we are hiring developers, we are drawn to individuals with pronounced curiosity. People who are interested in learning more (strong willingnes to learn), who are not afraid to fail. Ones who will try again and again until they reach some conclusions. When asked why are doing so their best answer is “because this is learning.”
Don’t be afraid to try and experiment. Your company’s tech stack doesn’t include a technology you are interested in? No problem! Try it and research it in your own time. Later you can present it to your team and boss and possibly motivate them to adopt that technology. Here at Point Jupiter, we encourage people to do that during our Friday Coding Sessions (FCS) and our 4-hour-a-week in-house education system.
Being open-minded will make you a better coder. It will mean that you can discover your own weaknesses and tackle them. Asking questions is another way to become more open-minded. This is crucial in all your leadership and management roles. It shows you are open to learning from others, that you are willing to listen and that you appreciate others. In a way, this ticks the communication, empathy, and open-mindedness boxes at the same time.
5. Critical thinking, creativity, and problem-solving
About six or seven years ago, while I was still working at my previous company, we had a client from Switzerland visit our offices in Croatia. We talked and introduced him to our developers and designers. At one point, he spoke the words that still resonate with me. “Being a developer is a dangerous job. You are always fixing problems!”
And if you take a step back and look at development from a broader perspective – it really is about solving complex problems. From software powering the spaceships, satellites, and rockets, to the operating systems of your phones and all the way to that bookkeeping software you accountant still uses. It’s always about solving the problems. Their scope and complexity are different, but their overreaching nature is the same.
As a good developer, you will be a critical thinker. One who will challenge herself to solve complex problems. One who will drive himself to creatively think about unorthodox approaches. To improvise, even.
People often associate creativity with design, music, arts… But creativity is not anyone’s monopoly. As a developer, you will use some creative techniques (it doesn’t matter if you are aware of them in a formal way) to solve complex issues. Sometimes you need to push those performances to the edge while running on weaker hardware. There are situations when you are aware that the problem you are facing has more possible solutions. Your ability to be a critical thinker will allow you to assess those solutions and select the one that will work the best. Your creativity will enable you to expand and build further on it. And all this will grow you as a problem-solver.
By now you are noticing the pattern. All soft skills listed here are complementing each other. And a result is a well-rounded software developer with strong leadership potential.
6. Accountability, humility, and humbleness
You will, and you already are making mistakes. Some are more impactful than others. Some might even go unnoticed, and you will let that sigh of relief.
To grow and develop as a software developer, you must accept and take ownership of your mistakes. That is what is accountability is all about. It’s human nature to try to hide and avoid the fallout that stems from making mistakes. Admitting mistakes and taking accountability is be hindered by poor management and leadership within the company. If errors are punished in a way that it’s borderline bullying and mobbing, few people will raise their hand and say that they made a mistake. So, to develop accountability – you need two parties. Yourself and your environment. But, keep in mind – taking responsibility for each mistake, while making a lot of them, will not get you far. Mistakes will happen – use that as an opportunity to learn from them and not repeat them again.
Accountability relates to being humble and has some traits of humility. No one is expecting you to become fully submissive and without confidence. But it is good to balance self-confidence with being humble. Confident people will have that unique quality of being drivers of change. Humble people will understand that, while they have the skills and means to carry out their tasks successfully, they are far from being omnipotent. Instead, they will acknowledge that they can learn from others. We see our lead devs and lead designers often learn from our junior staff. They can offer different and often-times, valuable insights. Being humble will allow you to put aside the fact that you have 10+ years of experience. It will let you accept insights and ideas from less-experienced colleagues.
Being humble and with some humility will make you a better developer. A better human. It will allow you to see beyond existing social structures and hierarchies.
You saw this one coming, didn’t you? Too much a good thing is harmful. Being too humble or suffer from “imposter syndrome” can hurt you in many ways. The best antidote? Confidence.
Building confidence on solid foundation takes time. It’s often connected with the number of years of experience you have. Solving a similar problem for the fifth time should be easier and more familiar for you than solving it for the first time. It should give you a feeling of control and competence. Confidence grows when it’s fed with control and competence.
We often see a lack of confidence with our junior developers and designers. They are unsure of how to proceed. They can get to the point where they are stuck, and you witness “analysis paralysis.” At that point, we take a step back. Building confidence also needs a nurturing environment. Someone willing to help, educate, and explain. People who are confident enough so they can be humble. See how it ties with humility.
While it is okay to make mistakes, learn, and build your confidence over time, you need to show that you are capable of doing so. Few things are sadder (in the software development) than seeing smart people afraid of trying. People who start Googling and go to StackOverflow before they even consider the task at hand. Give it a try. Don’t start every job with “I don’t know how to solve this!” – Or, even worse – “This is not for me!“.
You are engineers and problem-solvers. Try it before you quit. I had to let go of people who are not able to display the ability to try and solve their dev tasks. Make mistakes, who cares. But, be confident enough that you can find a solution or at least attack the problem from several angles.
With time you will see that you are getting better at this. You will have more wins, and your confidence will grow. Now, be smart and don’t let it drive you to the point where you become unrealistic and vain. Remember, self-confidence needs humility.
8. Management (people, time and project)
Depending on your role, you might be involved with managing people and projects, maybe even a project team. While most teams will have a dedicated project manager, a sizeable amount of tasks dealing with a project, people and time management will depend on you and your abilities.
Of all these, time management is the most prominent as an issue. Partly because even if you don’t (directly) manage people and projects, you are managing time. As developers, you must be time-conscious. While most of you (hopefully) enjoy some flexibility in their work environment (remote work, flexible hours), you still have deadlines to meet and estimates to give.
One of the key characteristics we ask look for in our people (developers and designers alike) is their ability to give us estimates and stick to them. And we expect that from all experience levels. Juniors will have more problems with that and fail to meet their time estimates. Seniors and leads will be better at this task. This demonstrates your ability to manage your time and tells us a bit about your personality traits..
It’s effortless to become a “yes (wo)man” – saying yes to all requests from your colleagues. After all, it’s somewhat in human nature to try and help others. But you must learn to say no. If you say “Yes” to everyone – you will meet no one’s expectations. Your best intentions will become a source of frustration. This will harm your confidence and ability to deliver your best work.
Apart from being able to say “No” when it makes sense, proper time management means punctuality and sticking to deadlines. If you say “this will take two weeks” and then ask for three more days – in most cases, that’s fine. But if even after those extra three days you are still not done and need more time, we will need to talk.
The “solution” to this challenge seems almost too easy – always ask for more time than you need. While it is okay to have some buffer time for unexpected situations, giving too comfortable time estimates is not professional. Also, it shows that you are not as efficient as others…
9. Teamwork and collaboration
Software development is a team sport. While you can be a developer team of one (“A UX team of one” is a quite popular version of this phrase), in reality, you will work with more people. If there are no more developers in your company, then the chances are you will be working with more designers, PMs, and customers. In any case, slim are the chances of you being entirely alone on a project.
This means that you will need to be able to work in a team. It’s not easy as some people are notoriously difficult to work with. This means that you need to rely on several soft skills listed here. That includes patience, empathy, communication, and time management – at least.
While it comes with a set of challenges, teamwork is essential and leads to better results. And if this sounds like a cliché – keep in mind that there is a growing body of research showing that people work better in teams. From Floyd Allport’s “the social facilitation effect” to Harvard’s and Oxford’s studies showing the similar effects. Still not convinced? Take a look at this blog post describing 7 studies proving the effectiveness and importance of teamwork.
This list might seem overwhelming. Besides being good at writing code and testing, now you need to be an expert in soft skills? You are a developer, not a superhero, you might think. My tech skills serve me well. But here’s the thing – you already have most of these skills within you. You might not be aware of some of them. Hopefully, this article helps you uncover some and grow others.
As you can see, most of them are connected. You need to be humble enough to develop your confidence. Managing people will require you to display your empathy, communication, and teamwork skills. This list is not here to help you cherry-pick individual skills. It’s here to help you recognize them, and it’s here to help paint a broader picture of skills required today. At this point I hope I made it clear enough that soft skills are valuable for each and every software developer.
Much like the workplace, technology, and business environments change, this list of top soft skills for devs will change as well. In the future, driven by artificial intelligence and robots, your problem-solving skills and creativity will become even more critical. Robots are not going to be able to compete with that for quite some time. At the same time, writing code and tests will become tasks that will be possible to automate to a degree. Your soft skills are your advantage and your future-proofing strategy. Embrace them.
I also suggest you take a look at this video shocasing some of the popular and sought-after soft skills every developer can benefit from. This video is from the Xamarin Evolve 2016 conference.
If you are looking to join a great team, head on to our Careers page, and apply. We will help you grow your development and engineering skills as well as your soft skills.
If you are a potential client, interested in hiring us, we should talk! We’d love to hear from you and learn how we can contribute to your success. Check out our work and cases and learn more about services Point Jupiter offers. Now you know that you will be working with developers and designers who nurture soft skills as well.