I started out my developer career focused on the kinds of skills that I thought were most important: the technical skills.
Consider the question: what makes a good developer good?
The most common answer: it's the level of their technical skills.
As I got more experienced and as I worked with more teams (and larger teams), I started to realize that it isn't so simple: there's more to the story.
The most effective developers that I met weren't just skilled in technical ways. They were really good at a few other key things too: explaining problems clearly, sharing solutions with team members, and being good at communication in general.
So I took a look at my own skill-set and I saw that yes, I was making a lot of progress on the technical side and I was learning a lot of new tech skills. But I wasn't really doing anything to improve my communication skills.
There's a term that's often used to refer to these non-technical skills that are nevertheless important for a job: soft skills. These are usually defined as some combination of communication skills, teamwork skills, and empathy.
Some definitions of soft skills might also throw in things like professionalism, accountability, or integrity.
Getting good at soft skills, just like technical skills, requires deliberate practice.
I realized that I needed to get better at communication so I started practicing. I started a writing habit, published some blog posts, and generally tried to see where I could improve how I work with my team members.
And outside of working in a team, when I eventually started doing solo consulting work for clients, I realized that there's a whole set of communication skills that are important in that kind of work, too. Communication can make or break your relationships with clients.
Soft skills: the wrong label?
I recently came across the idea that the phrase "soft skills" isn't actually the best term. I've been using the phrase for a long time but now I agree: calling these skills "soft skills" leaves out a lot of nuance and it implies some assumptions that aren't true.
Problem 1: "Soft skills" sounds less important than "tech skills".
Reality: Soft skills are just as important, if not more important, for career success.
If you look at it from the perspective of a particular job, or a particular task, then sure: in those cases you can probably identify specific technical skills that are needed to succeed.
After all, if you're working on something technical like an operating system kernel, then knowing the inner workings of the kernel is a pre-requisite skill. There's no way around that, and being really good at communication isn't going to help you directly.
But if you zoom out and look at the bigger picture, and consider a longer time span like your entire career, then communication and teamwork skills start to really show their importance. If you want to progress in your career and face new challenges, then these are the skills that are going to be just as important or more important than the tech skills.
Problem 2: "Soft skills" can imply that these skills are easier than "hard skills"
There's an argument to be made that by calling them "soft skills," you're making these skills sound like they're easy and therefore make them seem less valuable.
There's no doubt that technical skills are difficult to learn. There's a lot of work, effort and practice involved.
But so-called soft skills are difficult in different ways.
First, it's difficult to self-assess how good you are at communication without taking the time to reflect and introspect. There's no test or metric that can tell you how good you are at it. You have to make a deliberate effort to look for ways to improve.
Second, communication and teamwork require empathy, and that's not an easy skill to acquire. You can't learn it from a book, a course, or a tutorial.
Third, you have to learn to listen. When you hear about "communication" as a skill, it's easy to think about only one side of it: transmitting information to others. But that's only half: and the other half, arguably, is even more important. It's listening and understanding what other people are saying. In my experience, that can be a blind spot for many people, even those who think of themselves as good communicators.
So what can we call them instead?
Instead of calling them "soft skills," we can call these skills something that's more accurate, something that reflects a better career mindset.
There are some ideas floating around for an alternative name for these skills, but my favorite is "core skills."
Why core skills? Because they're at the core. They're at the middle of your skill-set and career, not on the outskirts. And all of your other skills (including the technical and specialized ones) connect into them directly.
Every single one of your other skills is amplified and made more powerful when it connects to a strong core.
So if you were to make a diagram of your skills as a professional, it might look like this:
If you do some research on the term "core skills" then you might find that some people have already used the term to refer to technical skills. It may also have some overlap with the use of the phrase "core competency."
But that usage aside, I really like the visual of placing these skills at the center, and giving them the attention that they deserve. It's where they should be.
Ultimately, the question that you have to ask if you want to maximize your career success is "where should I be investing time and effort into my career?".
And the message should be: invest in technical skills that help you specialize, but no matter what your specialization is, make sure to invest into making your core as strong as possible.
PS. I'm starting a newsletter and channel for developers called Developer Mission. If you want more of my content about how to find clarity in your software career, sign up at developermission.com