Soft Skills for Software Engineers

Early on in my career, if you would've asked me how much talking I would be doing as part of my job, on a daily basis, I would've probably thought: "oh I just build things all day, I'll just sit at my desk and get stuff done!" Boy, was I wrong.

Luckily, just as with most things in life, you learn and grow. I am able to navigate the rough waters that we call "work life" a lot easier than I previously had earlier on in my career. I will admit that my experience is not the same as everyone's and there are other factors (company size, line of work, etc.) that affect our everyday interactions. These are things that help me, hopefully they will be useful to some of you.

Ask Questions? No really, ask questions.

Where do you start? Yes, I started this section with a question on purpose! But seriously, as engineers, questions should naturally be part of our daily lives. During code review, I like to question everything. Take for example, a segment of code that you are unfamiliar with and you just want to know more about; I am sure that the person who wrote it would be more than willing to explain how it works. Now, take for example similar code that you have some worries about; if you make a comment like, "this is wrong", you may be met with a defensive engineer. But if you ask questions, you're starting a dialogue with the person instead of just pointing out your opinions.

What kind of prompts can you use to get people's minds working? What about something as simple as, "And what else"? This may not work for all scenarios, but you can use this as a prompt for folks to dive deeper into whatever subject matter. "I like the idea of adding caching here, and what else do you think about that area?" Or, "I see you're frustrated with the current development environment situation, I like the idea of bringing this up in retro, and what else?". Remember, pause and listen. I think it's important to listen and engage with empathy, because afterall we are all just humans and we have emotions.

You Don't Need to Smoke to Be Social

There was a study on smokers and how they're a very social demographic (full disclosure: I do not smoke and never have). Think about it; smokers corral in similar areas near where you work and spend their time chatting with folks while smoking. They will end up chatting with all different departments and get to hear about what other people are working on, what kinds of issues are coming up, hear about new pet projects that are coming through as skunkworks projects, etc. It's a lot of good company information, that sometimes are not communicated broadly to other teams.

As I progress further along with my career, a lot of the projects that I work on span across several departments. It is very useful to make relationships with all sort of different folks. To this day, I probably have several 1:1s with folks in various departments just to keep in touch.

Now when working on a project, think about those times where you would want to try something but won't be sure where to start looking. What if you thought, "{person} worked on a similar project recently!", wouldn't that be a good starting point? It's all of these connections that make us work efficiently and effectively.

Senior Individual Contributor and the IC Track

If any of this sounds a bit skeptical to you, maybe it might shed some light to you to hear that I am an IC. I am not in management, I do not want to get into management. I am not a tech lead. I enjoy maker time, deep work, flow, etc. I am an introvert. A lot of my days that include a lot of talking and such are tough days for me and I will schedule some "quiet time" in my calendar to unwind and have a breather.

The fact that I can complete a project end-to-end on my own is great, but the ability to have all of those same working pieces done by a team or even better a number of teams is truly a feat of engineering.

By Adrian Cruz | Published May 27, 2019, 10:30 p.m. | Permalink | tags: soft skills, software engineering