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.
Liquid error: internal
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
Top comments (12)
very nice post. I agree that the word "soft" may make think that those skills are not so important and not so difficult to have or learn. But IMHO I don't really feel Core skills fitting.
To me, Core means something that is crucial, that represents something at its core. And if you are a developer the core of your profession, of your skillset, must be technical. If you are a doctor the core of your knowledge must be "medicine", if you are a teacher your core will be your proficiency over the topic of choice ( + the ability to teach it, otherwise you would be some other kind of expert, like a researcher or consultant).
To me, the soft skills are indeed the Outer Layer of the skills, especially because are those skills that are fundamental with your relationship with the outside world.
You might be the best dev in the world, and you could write the best algorithm while working alone at night in my basement. That could be perfect for a company that needs some special task done. But normally you need to communicate your ideas, discuss requirements, cooperate and collaborate with others. Therefore your tech skills are simply not enough.
So, yes if you don't have soft skills you cannot be a good Software Engineer. Still, you might be nice, good at expressing your opinion, accepting critics and even fun to work with, but if then I check your pull request and I have to stare horrified at the sloppiness of your implementation, well ... nope!
As I said. Agree with your concept, not much with the naming. But we all know that naming things is one of the 2 biggest problems in Computer science. (the other being cache invalidation and off-by-1 errors). ;-)
I really like this a lot. As someone who also realized that they were putting more into their technical skills rather than core skills (I like that term so much better!), I had to really remember that those need to be trained through practice as well (I still get super nervous trying to network at events, but it's getting better). Great post!
I've read a tweet recently proposing to replace "soft skills" with "catalyst skills". Can't find it again though, to link it.
Your vision of "core skills" is also very fitting. It's sort of a "human" vs "machine" and it might be even more important as time goes by. With automatization and AI looming ahead, these skills might be the edge someone needs to push ahead.
Soft/communication/writing/speaking or whatever you name it - is the skill recommended by Warren Buffet - one of the best investors. Soft skills are essential for out of the normal "9-5" work goals. To find/work with customers, to work/motivate partners, employees, to have girlfriend, spauce/wife, etc. I am a technical person myself but I've realized how much more important is all outside of the code...
“Core skills” is great. It makes me think of physical health and how you have to have a strong core in order to do just about everything else well — sit up straight, exercise without injuring yourself, not get a back ache while doing the dishes. Like, no matter what you are doing physically, a strong core is the foundation. It’s something everyone needs no matter what they decide to specialize in or focus on.
The best point made was that core and technical skills are more strongly linked than some would believe. The core of software development is problem solving. Solving problems requires and understanding of those problems. That understanding can only be obtained by communicating with the people who have those problems. Thus, good communications are key to solving any problem.
The problem with buzzwords is that they only generate buzz when you don't understand what they mean, and when you don't understand what they mean they are meaningless to you.
So you can say "core skills" and people will be "wow, these are probably the most important skills!" but then you tell them what you mean by that and the buzz will go away and they'll apply their original opinion on the importance of these skills. Either that - or they'll argue with you about the terminology.
I think names should be descriptive. They should not try to force a connotation - that never works, not in the long term. I do agree, though, that the term "soft skills" is doing the same thing - trying to use the choice of words to lower the opinion on them. And it doesn't work - it did not lead you or any of the commenters here that support the term "core skills" to believe these skills are not important, did it?
But why not pick a descriptive name, like "team skills"?
Great article @marek . In fact, replacing "Soft Skills" with "Core Skills" is one of our hot-button issues. The challenge is twofold. First the Core Skills are difficult to assess in a traditional hiring process. Second, many hiring managers are more focused on hiring for Hard Skills (which often change quickly) or relying on academic pedigree (which has little predictive value of a good hire).
Here's another perspective as well if you're interested:
I still like "soft skills" better, for me it implies that you have to be gentle, compassionate, and attentive to others.
It made me think of this post on the First Round blog, on empathy driven development