Soft Skills Aren’t Soft: The Hardest Skills for Developers to Learn

We call them soft skills like they’re optional add-ons, or somehow easier than the “real” work. Honestly? I’ve found the opposite to be true. The technical stuff — learning a new language, figuring out a framework — that’s the easy part. The hard part is people.
I learned this pretty early in my career. Back when we were all still crammed into offices (pre-remote boom), I started to realise something important: code alone wasn’t going to get me through a workday. I was surrounded by ten different personalities, ten different ways of working, and ten different opinions about how to solve the same problem. You can’t just throw on headphones and hope for the best. At some point, you have to talk. You have to listen. You have to learn how to handle conflict, or tension, or just someone having a really bad day.
That was my “oh wow” moment — the realisation that my tech skills weren’t enough on their own.
Empathy: The Game-Changer
For me, empathy was the first real breakthrough. Not the shiny “corporate empathy” that gets thrown around in slide decks, but actual empathy. The kind where you notice someone’s struggling and you give them the space to vent, or cry, or just sit in silence for a while.
I’ve supported teammates through their high points and their absolute low points — promotions, personal losses, burnout, you name it. And what I’ve learned is this: empathy doesn’t mean having all the answers. It just means showing up, listening, and making sure the other person doesn’t feel alone in it.
That skill, more than any technical ability I’ve picked up, has made me a better teammate and a better leader.
Patience: The Daily Workout
If empathy is the foundation, patience is the daily training program. And like any workout, it’s something you have to keep showing up for, even on the days you’d rather not.
I practice patience with myself when I feel like I should “get it faster.” I practice it with teammates when a project isn’t moving as quickly as we hoped. And I practice it with code — because sometimes that bug that looks perfectly logical will still refuse to go away for hours.
Patience doesn’t mean passivity. It’s active. It’s choosing to slow down, breathe, and not snap when frustration rises. For me, one of the ways I strengthen that muscle is through active listening. I don’t have a huge social circle, but with the friends I do have, I make sure I’m fully present. Phone down. Brain switched on. That habit of being all in during personal conversations has spilled over into my work life in the best possible way.
Communication: The Hardest One
The soft skill I wrestle with the most is communication. And I don’t mean the quick, polite “How are you?” — “I’m good, thanks” exchange. That’s easy.
The harder version is the deeper stuff. It’s when someone actually says, “I’m not doing so great,” and you slow down enough to have the real conversation that follows. It’s when you ask the second question, or the third, and hold the space for an honest answer. That’s difficult. It takes trust, timing, and courage — on both sides.
I still don’t think I’m great at it, but I keep trying. Because every time I manage to lean into those deeper conversations, I’m reminded why they matter. They’re where trust is built. They’re where teams stop being just coworkers and start being people who’ve got each other’s backs.
The Feedback That Stuck
One of the best pieces of feedback I’ve ever received is that I’m a good listener. Not just nodding along, but really listening. Remembering the small things people say, even when they think it was just an offhand comment.
Once, a developer on my team mentioned in passing that writing clean code was really important to them. It wasn’t a big conversation, just a small moment. Almost a year later, I brought it up in a 1:1 — told them I’d noticed how much effort they put into making their pull requests readable and consistent. They were genuinely shocked I remembered.
But to me, that’s the whole point of listening. You’re not just collecting information. You’re showing people that what matters to them matters to you, too. And that builds trust faster than almost anything else I’ve seen.
What I’d Tell a Junior Dev
If I were mentoring a junior developer today, I’d tell them not to obsess over knowing every new tool, database, or framework. Yes, technical skills will always matter. But the real growth lies in the softer stuff.
I’d tell them to focus on three things:
- Communication. Don’t just say you’re “fine” — share your struggles, your blockers, your ideas.
- Active listening. Pay full attention, don’t interrupt, and reflect back what you’ve heard.
- Engagement. Speak up. Even if you’re junior. Even if you’re nervous. Your perspective has value.
Because here’s the thing: technical skills will get you the job. But soft skills will shape your career.
Training Them Daily
The good news? You don’t need some massive plan to improve your soft skills. You can train them in small, everyday ways.
- Empathy: When someone says “I’m fine,” pause and ask again. Sometimes that’s the opening they need.
- Patience: Take a breath before firing off that Slack message when you’re frustrated.
- Listening: Put your phone down, make eye contact, and focus on the person in front of you.
- Communication: Challenge yourself to go one layer deeper in your conversations.
Little reps, every day. That’s how you get stronger.
Closing Thought
Soft skills aren’t “extra.” They’re not sprinkles on top of the technical cake. They’re the flour. Without them, nothing holds together.
And just because they’re called soft doesn’t mean they’re easy. In my experience, they’re the hardest skills you’ll ever work on. But they’re also the ones that will carry you furthest.