Learning soft skills as a software engineer

As a self-taught programmer, my focus for many years was learning hard skills. I recently decided to switch gears to pay more attention to soft skills.

Why learn soft skills?

The simple answer is ’to be effective’.

As you grow in seniority, you deal with more complexity. This can be technical, organizational, or both. Even if it’s technical, a complex project with multiple stakeholders likely involves putting together a design doc, coordinating with other teams, and getting customer feedback to know you’re on the right track.

In a nutshell, success often requires going beyond writing code.

Why is it hard to learn soft skills?

My sense is less that it’s hard to learn soft skills, but it’s hard to give importance to soft skills when you’re used to being able to tell what the right answer is. It’s like wanting to solve more simultaneous equations when you can check against the answer in the back, rather than doing a closed reading of a poem.

The fact is, as per Matt Klein, both are hard.

One last thing: don't let anyone tell you that the tech/engineering is the easy part. It's not. It's hard. Soft skills are also hard. It's ALL hard, and both are required to succeed.

I’ve spent a long time learning how things work under the hood; now simply changing the subject of interest from computers to humans.

The other thing that makes it hard is it’s often less clear if the lesson translates well to your situation. It’s a bit like reading case studies on leadership at business school. If you’re at a Series A startup, is it that helpful to read Jack Welch? Probably not. On the flip side, it’s a missed opportunity to not spend any time on it at all.

What have I learned?

My learning has been rather circuitous. It started with being deliberate in recognizing the need to develop soft skills, rather than picking up another programming language. Like learning via case studies, I hope to illuminate these with quotes from podcasts.

1. Stay calm

When Naval Ravikant was asked about his tweet “imagine how effective you would be if you weren’t anxious all the time”, he shared his experience working through a crisis initially in panic mode, and then later with composure.

I just think we waste so much energy through anxiety that if you can be calm and still go about your business, it’s a superpower. And I realized this myself recently, where I was in a conflict situation … And I remember how much I was sweating it and how nervous I was and how I went through bouts of fear and anger and how kind of worked up I was the entire time, intense and didn’t get much sleep. But this time I was incredibly calm and I was almost enjoying it because it was like practicing my craft. ... I can be very effective about it while doing lots and lots of other things. My mind wasn’t constantly spinning in a whirlpool taking on 10 different problems and just fear-based scenario planning all the time. … So I do believe that being calm and still going about your business is the superpower. Now yes, if anxiety is your only motivator, then you have a problem. But I would argue the pure motivations don’t come out of anxiety.

As a software engineer, it’s satisfying to get your code to run faster. It’s tempting to view this as the primary thing to optimize. Comments on your pull request, however, can help highlight other areas for improvement. These areas may not be immediately evident, and even if that’s not the case, it’s not a reason to get angry.

Motivations can vary widely; the commenter may be inexperienced, insecure, or even hostile. At the end of the day, being right doesn’t necessarily equate to being effective. Try to approach it as another issue to deal with among many. Maybe take a step back for some perspective, maybe sleep on it and revisit the next day.

The range and complexity of issues will only grow from here, so you might as well develop the ‘meta tool' that helps you stay calm and navigate through them skillfully.

2. Understand oneself

I very much enjoyed listening to Claire Hughes Johnson sharing tactical advice on dealing with organizational issues. That being said, my favorite excerpt involves being introspective.

I tell a story in the book about a manager I worked with where transparency was a very important value to him. ... And the transparency value actually was a little bit problematic to manage because Eli would tell everyone everything, including his team, even when we weren't finished with the plan, right? But Eli got up and told a story of being younger, like seven or eight, and realizing his mother was very sick, and no one really told him what was going on. And then unfortunately watching the process of her dying and then being taken out to lunch by his stepfather and told, "Your mother is gone.” … This was a formative experience for him and it has changed how he operates, and it will probably have changed it for his whole life. And if you can get to that point on your own, of telling yourself, what was the story? What was the thing that made this so important to me? Then you're starting to be in a mode of self-discovery and then you're starting to document, okay, if these are my three top values, and here's why.

I’ll caveat that my example is not as hard-hitting. In a previous role, I worked on infrastructure that makes sure data gets shipped across our system timely and accurately. The role had its own set of challenges, but over time I realized that I enjoyed knowing what the bytes mean much more than dealing with scaling issues.

I had the chance at Recurse Center to present on and write about payments and risk, an area I worked on even earlier. I decided that my focus moving forward is not just the software in itself, but how software can make specific domains like payments and risk 10x better. It may not be on the front page of Hacker News, but it’s the one for me.

3. Understand others

To the question “what have you changed your mind on recently?”, Henry Cloud shared the following answer.

I’ve changed my mind that I don’t always totally trust my certainty as much as I used to, because I’m learning that sometimes the people that I think are maybe extreme or crazy, that they're not totally crazy. You learn to kind of understand that somebody is holding on to something for a reason, and while their position might not be valid, the reason that they hold to it is valid. I find that I’ve changed my mind a lot in my judgment, or judging someone for why they believe a certain way or why they think a certain way, because I’ve seen enough situations where I’m the facilitator of getting opposing sides together and seen so many times where they don’t change their mind on their position, but they change their mind on their level of understanding why the other side feels the way they do, and that really helps and I think that’s really important.

I recall having to deal with a colleague who I thought was being unreasonable. Initially I felt frustrated and found it difficult to concentrate for the rest of the day. Then I came across Henry’s advice. I spent time thinking about why my colleague behaved the way that he did; that helped me let go of my anger and move on to other things.

Later on, I realized why my colleague’s behavior felt familiar. It was because the last time it happened, I was the one being unreasonable.