by Ewa Mitulska-Wójcik

What soft skills do developers need in their backpacks?

This article is also available in Chinese.

For many of us, it’s easier to sit down and learn another programming language than it is for us to work on our attitude and character.

Let’s explore why some developers thrive within companies, while others vanish into a row of cubicles.

Interpersonal skills

Effective communication can make all the difference between an average developer and highly productive “rockstar.” Programming isn’t just about talking with servers, clients, and network-addressable coffee machines.

Being on the same page as your team mates really does matter.

Here are some everyday communication tasks you’ll be doing as a developer:

  1. Share issues with the rest of your project team
  2. Reporting the details of your progress in project management system like Jira.
  3. Be super concise or when the situation calls for brevity
  4. The ability to listen and respond quickly
  5. Express precisely all the needs, doubts, dangers and progress to your team, manager or client
  6. Communicate tech issues in a way that is understandable also by non-technical team members and clients
  7. Full-professional proficiency in English. Knowledge of more than one foreign language is always a plus. I vote for Spanish ;)
  8. Being open to talk about problems, then looking for solutions before conflicts escalate
  9. Providing strong arguments in favor of your proposed tech solutions
  10. Meticulousness in code, documentation, reports, and ticket systems
  11. Being willing to communicate with other programmers on forums, blogs, and at conferences. Sharing your knowledge and not being afraid to take the mic in front of a wider audience.

These are just some of the situations where communication skills are crucial.

Curiosity

“Curiosity killed the cat” does not apply to the development world! Curiosity is a strong fuel for new inventions and self-development. Experimenting helps you connect the dots and discover new solutions.

You can gather valuable experience while testing your assumptions. Ask questions, build something new with what you’ve learned so far, iterate today on what you did yesterday. Don’t be afraid to try. Even if you fail, you don’t lose. Why? Because you learn.

Show your code laboratory. Your projects don’t have to be finished. What’s more important is whether they were given a chance to become production code, and what you learned during their implementation.

Share your way of thinking and observations on forums, write a post about them, and spread the word about what you’ve learned.

Your users make your app successful. If they don’t like it, you’ve lost. Ask them what they need, solve their problems, and be curious as to why previous solutions did not work. You’d better get interested who your users are, and understand when and how they try to solve what kinds of problems.

Be curious about the weaknesses in your code. Test your code, try to break it, and discover as many weak points as possible before it goes live. Observe how users react to your changes. Next, get interested about what happened after the app has been launched and your work paid.

Be bold enough to ask for help any time you can’t work out the solution. You belong to the very open society where a clear, detailed question will usually get you the right answer.

Strategizing

Without a plan the smallest project may become a hard-to-maintain monster. Before you go into heads-down code mode, you’ll want to consider cost estimations, sprint planning, architecting schemas, and designing elements such as user flows.

Being a good strategist means that you’ll notice pitfalls before you fall into them.

Iteration is better than perfection. A good strategist is still able to react quickly and deploy duct tape solutions, but recognizes that these are only temporary. They are effective only for a moment, then will need to be revised.

Lifelong learning

Software development is no career for the intellectually lazy. If you dream of a stable well-paid job without much effort, do not even try to enter! Being a specialist in one field will only pay off as long as you stay open-minded and eager to learn.

New frameworks, trends, and methodologies are constantly emerging. You don’t have to learn all of these, but you should make an effort to keep up, for your career’s sake. Not every client will want to build an app in the technology that you’ve already worked so hard to learn.

In time, some frameworks and languages will become more popular, and you can get paid better knowing these languages, frameworks, libraries that are in demand.

Being open to new ideas also means being respectful, tolerant, and proactive. Don’t be a hater of React just because you don’t know it and worked with Angular for the past few years. Stand up from behind your screen and go to conferences, meetups. Chat with other devs both online or offline. Stay hungry and stay foolish.

Business mindedness

It is easy to forget about an app’s underlying goal when you’re staring at lines of code all day. Step back and think about the business’s underlying goals. You can go far if you don’t merely stop at deadlines and shipping code, but also provide smart solutions of your own.

You can appear remarkable to a client by being more proactive and giving them more than they expect.

You also have to know when to say no to the project or job offer so you can avoid getting mixed up in poorly conceived user stories and spaghetti code. Be careful because fame spreads fast, but notoriety spreads even faster.

Take care of your personal brand. Build a portfolio you can boast about, gather references, show your expertise, and practice what you preach. This will help you stand out from the crowd of other hundreds of developers applying for a given job or project.

Oh, and don’t underestimate the role of your hobbies and previous life experience. It may end up mattering for the project you want to apply for. If you are a newbie programmer, you can become a stronger candidate by looking for projects that can benefit from your pre-existing domain knowledge.

The journey without a goal is interesting, but it’s just a stroll. I’m at the beginning of my developer career, and I know what kind of developer I want to be.

Where do you want to go? What kind of developer do you identify with? How do you know that you are going in the right direction as a code newbie? If you’ve worked for years as a programmer, whom have you become?

Feel invited to join the conversation on what soft skills belong in your backpack. Hope to hear your thoughts in the comments below!

Happy coding, awesome projects, and loads of motivation to be a better developer each day!

If you liked this, click the heart below and share it with those who might benefit reading it.

I am a front end developer in training. I am a Free Code Camper. I publish on Medium and tweet about UX, front end, project management, and startups. I love user-centered solutions and fruitful collaborations.