Advice from Experts – The Most Important Skill for Software Engineers

Oct 16, 2020

keyword-counter-hero

When you’re embarking on a journey to a place you’ve never been before, the typical thing to do is to ask for directions—or at least to have some idea of where you’re going and what you can expect along the way. As I begin my journey to become a software engineer, I thought it would be a good idea to seek out advice from others who have traveled a similar path. I got some great advice from 5 experts who have successfully established careers in software engineering.

Here’s what I learned, and how I intend to apply their advice to my studies.

Prepare for the road ahead

It’s well known that the road to becoming a software engineer is exciting, but not necessarily easy. You should be prepared for some peaks and valleys. Throughout this process, however, it’s important to have confidence in your own abilities.

Emily Ho, Frontend Engineer at sparks & honey, recommends preparing yourself for the long haul.

“Your journey will be an uphill battle [until] you get your first offer. There will be days that you feel amazing and days you feel like you made the wrong decision. These emotional waves are normal. [You should develop strategies for coping] with imposter syndrome and recognize the skill set you do have.”

So, putting this advice into practice, I need to be content with making gradual progress toward my goals. I intend to set small, achievable goals for each day. And on days when I’m feeling discouraged, I can take a look back and reflect on all that I’ve accomplished thus far. It will also be helpful to remind myself that everyone was once a beginner at something, but as long as I don’t give up, I’ll eventually get to where I want to go.

Learn how to learn

One thing you can depend on in software engineering is that the environment is always changing. With new libraries and languages popping up all the time, you’ll regularly be asked to tackle new challenges and use new technologies. You always need to be expanding your toolset, and the way to do that is through continuous learning. 

To thrive in this environment, Lindsay Levine, Senior Software Engineer at Netlify, recommends honing your learning skills.

“As an engineer, I think the most important skills you can hone are patience and learning how to learn and adapt. There will always be another problem to solve, language or framework or infrastructure to learn, platforms to integrate with, etc. Discovering how to navigate that ever-expanding universe is all that matters.”

This point really resonates with me. I consider myself a lifelong learner and I’m always trying to learn something new or master some skill. But I could be a bit more strategic in my approach. I plan to start a learning journal where I’ll track my study habits, such as when I’m studying, what I’m studying, how long I’m studying, how productive I am, etc. By tracking and analyzing these metrics over time, I hope to find trends that will help me improve the effectiveness of my study sessions.

Hone your practical problem solving skills

There’s often a difference between theory and practice, and software engineering is no exception. Getting a job relies on one set of skills, but actually doing the job requires a different skill set.

Jon Deng, Software Engineer at Google, notes this distinction and recommends developing skills that you’ll eventually need on the job.

“Interviews are very controlled environments where you don’t have access to the documentation, Internet, compiler, or runtime. So instead of focusing on details, the interviewer usually looks for high level understanding of a particular algorithm or data structure and enough experience to pattern match a word problem to a technical implementation. For example, if the interviewer asks you, given a family tree, to find the nearest common ancestor of any two people in the tree, you have to identify this as a tree problem and know the appropriate algorithm to use.”

But that’s just getting the job. Once you’re on the job, you’ll rely more on your practical problem solving skills than theoretical knowledge. “While working as a software engineer, being able to choose the right algorithm or data structure is a very small part of the job. I think the most important skills are 1) knowing who to go to for help and how to ask for it, 2) being able to translate a business problem to a technical solution, 3) using the languages, frameworks, and tech stack that the company uses, and 4) being able to learn new things quickly without complete information. This could be learning to use a new library, how another team’s service works, or how to use a new API.”

From what I’ve seen thus far, this is a fairly common pitfall for beginning software engineers. It’s one thing to be able to follow along with a book or tutorial, but it’s another thing entirely to get your hands dirty and actually build something new. This is where I think continuing to work on independent study projects will be especially useful. Once I have enough experience, I intend to participate in open-source projects, so I can also practice collaborating with other software engineers on complex tasks.

Don’t neglect your soft skills

Even though writing code plays a significant role in the day-to-day activities of a software engineer, most work will be done in teams, which means that communicating and working well with others is key.

Paige Niedringhaus, Senior Software Engineer at The Home Depot, recommends keeping your soft skills in tip-top shape.

“Don’t underestimate the importance of soft skills in software engineering. Writing, presenting, and speaking well don’t get a lot of time in computer science classes or coding boot camps, but they are keys to showing people what you know, how you think and problem solve, and what you’re capable of. I’m convinced my prior career experience in marketing helped me excel and take on increasing levels of responsibility and visibility within The Home Depot. So often being a good communicator and working well with others gets overlooked, even though the vast majority of us work with teams of other people.”

Given my own background in digital marketing, I certainly appreciate knowing how to tailor your message for different audiences. And like any skill, you need to practice to keep from getting rusty. One way I intend to practice my soft skills is to keep up with this blog and, perhaps gradually add other media, like video. Once I have a reasonably good grasp of a subject, I’ll look for opportunities to present what I know at events and meetups.

Be patient with yourself

Succeeding as a software engineer requires endurance. As the saying goes, this is a marathon, not a sprint, and you need to avoid getting discouraged along the way. Even once you’ve got a job as a software engineer, there’s a lot of learning and growing to do.

Andrew Ash, Software Engineer at Google, recommends being patient with yourself and with the process.

“One essential attribute for a software engineer is patience. You’re going to be spending a significant chunk of your life debugging, so if you’re not patient, you’re not going to have a great time! More importantly, it pays to be patient with yourself. Becoming a software engineer, and growing as a software engineer, takes time. Be kind to yourself – you can do this, you just need time to learn.”

I think the key to becoming more patient is to focus on enjoying the journey. It’s great to have goals, but you can’t allow yourself to get discouraged by how far you still have to go. I plan to celebrate the small victories that I have won, and focus on getting 1% better every day.

Concluding thoughts

In short, being successful as a software engineer requires a combination of both technical and soft skills, and practical and emotional skills. I am grateful for all of the extremely helpful advice I received, and I’ll definitely apply these teachings as I continue my software engineering journey.

Never miss a post!
Subscribe to the blog and get updates every two weeks!