DEV Community

Cover image for What Skills Makes a Great Software Engineer?
Simon Egersand 🎈
Simon Egersand 🎈

Posted on • Updated on • Originally published at prplcode.dev

What Skills Makes a Great Software Engineer?

Being a software engineer requires you to have many skills. In my career, I've had the pleasure of working with people from different parts of the world. They've all had diverse backgrounds and experiences 🌎. Some of them I've enjoyed working with, and some of them I have not.

Skills That Make a Great Software Engineer

Recently I've been thinking about why I like working with some more than others. I enjoy working with engineers who have these skills:

  • πŸ™‚ Friendly and easy to communicate with
  • πŸ‘‚ Listen to others and try to see things from other perspectives
  • ✍️ Thorough in their work
  • πŸ‘« Team player, striving to put the team first
  • πŸ’ͺπŸ€™ Strong opinions, loosely held
  • πŸ‘©β€πŸ« Wants to learn
  • πŸ™‹ Asks a lot of questions

As you can see these are all soft skills. Who would you rather work with? Someone who's not that great of a programmer, but working to be, and is a team player. Or someone who's a "rockstar programmer" and doesn't listen to others?

There's an overflow of articles and blog posts about how to improve your technical skills. They are useful and you should read them, but the soft skills are at least as important, if not more! Technical skills are easy to learn. Soft skills take time and might not come naturally (speaking from personal experience).

So now I'm curious, what skills do you think makes a great software engineer? 😊

Want to learn my 5 favorite habits for a software engineer? See this post.


Connect with me on Twitter, LinkedIn, or GitHub

Originally published at prplcode.dev

Discussion (51)

Collapse
mephi profile image
mephi
  • doesn't fear others becoming great software developers
Collapse
paul_henman profile image
Paul Henman

Actively encourages and assists others in becoming great software developers?

Collapse
simeg profile image
Simon Egersand 🎈 Author

I absolutely agree with this. Helping others grow has the unexpected and awesome side effect of growing yourself too, I've found.

Collapse
salyndev0 profile image
SalynDev

Don't fear and lost because someone better than you(maybe same age or younger). Remember, u choose this job because u want to learn for your knowledge.

Collapse
simeg profile image
Simon Egersand 🎈 Author

I've encountered this before. I could feel jealous others were better than me. At some point I started looking at it from a perspective of "how can I be more like this person?". I even asked if one of them could mentor me, and the person agreed, and I learned a bunch. It was a humbling and learning experience.

Collapse
mobuousdev profile image
Mobulous Technology

Yes comparison makes thing hard for even a great developer

Collapse
natescode profile image
Nathan Hedglin

Agreed that they're mostly soft skills. Code is straight forward, just takes time. People are difficult and rarely learn.

Problems before technology

Too often developers skip to the solution without fully comprehending the problem. Students jump immediately into code without thinking of what the goal is first.

Self Respect

You will get pushed around by clients, managers and other developers. Standing your ground, respectfully, is a good trait.

Collapse
simeg profile image
Simon Egersand 🎈 Author

Thanks for sharing. Could not agree more.

Collapse
matthewsalerno profile image
matthew-salerno

I appreciate people who have an urge to teach things. It can seem arrogant sometimes, but so long as they have the social skills to dance around it, it can be a valuable way for everyone involved to learn:

  • It fosters a general environment of learning
  • It can inspire others to talk about things that excite them.
  • Teaching is the best way to learn
  • It exercises communication skills
  • I can't speak for others, but for myself it helps break down feelings of inferiority. Everyone has something to learn and being comfortable with others knowing more than you is important.
  • Learning becomes a social activity. I've had plenty of fun with people just chatting about new things we're learning.
Collapse
simeg profile image
Simon Egersand 🎈 Author

I 100% agree! πŸ’›

I appreciate people who have an urge to teach things. It can seem arrogant sometimes, but so long as they have the social skills to dance around it, it can be a valuable way for everyone involved to learn:

This quote deserves a post on its own.

I always push my fellow team members to teach and ask questions. It doesn't come naturally for everyone, which is ok. In the beginning of my career I had some people who were great at teaching and I still value that to this day. Personally I always make sure I have at least one person at work I meet with regularly to mentor and give them an opportunity to ask questions.

Today I booked time with someone in my team to ask about complicated sync vs. async scenarios and I learned a bunch.

Thanks for sharing!

Collapse
mephi profile image
mephi

If you have the time, the best way to teach in my opinion is to listen and to ask the right questions. The best way to learn is to talk about your understanding and get it challenged.

Collapse
tandrieu profile image
Thibaut Andrieu

Getting shit done.

The "worst" developers I worked with were so concerned about making the perfect design they end up doing nothing. Clean code is important, but if your code is so clean it never end up to production because you always find something to improve before merging it, it is just useless.

Collapse
simeg profile image
Simon Egersand 🎈 Author

Good point. There's a balance between getting shit done and writing clean code. Personally I struggle with this sometimes when I see some code in desperate need od refactoring.

Collapse
tandrieu profile image
Thibaut Andrieu

Yes, me too. In this case, I generally timebox the refactoring effort. I start by making dirty working code and then iterate until the end of initial estimation. This avoid overdesigning a priori, at worst I can at least ship something to production, at best I'm happy with the code I've done before the end of the time I've allowed to myself.

Thread Thread
simeg profile image
Simon Egersand 🎈 Author

I like that strategy. We're getting paid to deliver value and your strategy priorities just that!

Collapse
bioleg profile image
Bioleg

And the most powerful power is knowing how to google

Collapse
matthewsalerno profile image
matthew-salerno

True
Using search engines, being able to read textbooks, and in general being able to perform research are huge timesavers.

Collapse
simeg profile image
Simon Egersand 🎈 Author

Your colleagues will thank you as well when you first try to find the information yourself before asking. Great point.

Collapse
simeg profile image
Simon Egersand 🎈 Author

Agree. Who needs to know how to code when you can ask Google, right? πŸ˜„

Collapse
natescode profile image
Nathan Hedglin

There is definitely a time to quit lol.

Collapse
mikael321 profile image
Mikael321

In my point of view, what makes a good software engineer is the willingness to learn some new, the great example is the technology that is changing all the time another aspect would the ability to communicate and listen to other people. In my case I listen more, and consequently I learn from others more experienced than I’m always open. Friendliness is other good aspect. I algo agree with everything that you brought up above.

Collapse
handsomebwonderful profile image
Mark Dochstader

The ability to find great joy and wonder in the act of creating software, and the desire to share these feeling with others. Think about it: you're crafting something out of ether that can change the world. That's pretty amazing!

Collapse
simeg profile image
Simon Egersand 🎈 Author

Thanks for sharing. This is absolutely true. My dad works in construction and I like to think we are digital constructors, only more powerful because we can easily reuse other people's work (packages, libraries, open-source etc)

Collapse
jeremyf profile image
Jeremy Friesen

I disagree with "strong opinions loosely held" as a good quality. I have seen folks spout that phrase and what they often hear it to mean is "loud opinions always voiced". That phrase is 🚩🚩🚩🚩🚩🚩🚩 to me.

Removing it from the list, and re-reading the list I see the attributes of the best developers I've ever worked with.

Collapse
simeg profile image
Simon Egersand 🎈 Author • Edited on

Thanks for sharing!

How I interpret that point is something like

When immersed in a conversation or debate, he’d vigorously argue his point, in order to test its merit, but the moment he recognized its inferiority, he’d change his mind. He actually welcomed being wrong. (tinyurl.com/2p9cm9y8)

Not having an opinion is fine. If you have an opinion you should fight for it until you've been proven wrong, and then you should stop fighting and re-evaluate. I especially love the last part about "He actually welcomed being wrong".

So to me, an engineer that speaks up, but re-considers if proven wrong, displays a good quality.

Collapse
jeremyf profile image
Jeremy Friesen

One other bit of consideration is "what attributes are accessible/available to the people who are under-represented?"

In my observations, "strongly held opinions, loosely held" is usually only available to white guys.

Thread Thread
simeg profile image
Simon Egersand 🎈 Author

That's a great point. A healthy company culture is an extremely important aspect in the well being of employees (and company) in my opinion. If you don't feel like you can speak on your opinion then of course that's an issue.

Interesting topic but I feel it's out of scope from this post.

Thread Thread
mephi profile image
mephi

I would say it is more about being on top or bottom of the hierarchy. White man are often overrepresented at the top, but you still have the phenome in all-white-men-groups and groups without without white men.
So being able to be a great software developer depends on being acceptable as a great software developer.
On the other hand, I think this is an important part of growing great and it needs others to live that principle as well. You can't grow when you are not allowed to have a strong opinion and you can't grow when none is allowed to challenge your strong opinions with their strong opinion.

Thread Thread
matthewsalerno profile image
matthew-salerno

Definitely an issue. As a white guy, I think one of the more valuable skills I learned is to shut up (On occasion, I'm still working on it). Some of my peers have it the other way, their most valuable skill was learning to speak up. Strongly voiced, loosely held opinions can be great for discussing technical approaches if there's trust on a team. But if the discussion is less technical, or the trust is broken, you can start getting issues where other people (often those who have firsthand experience to speaking up being met with hostility) feel attacked or ignored.

Collapse
polterguy profile image
Thomas Hansen

Simplicity

Collapse
invaliduser18 profile image
InvalidUser18-alt

Someone who is definitely not me, I learned Javascript so that I could cheat my math. Ok maybe someone who is me because they must be pretty driven to learn a whole language to cheat on math. Inevitably, I still learned to do the work.

Collapse
sobakus profile image
Sobakus

Humility and empathy.

Collapse
fatherofcurses profile image
Colin Principe

Not looking down on other engineers who don't grasp things as quickly as you.

Collapse
simeg profile image
Simon Egersand 🎈 Author

Very true. Everyone learns differently. Empathy is important.

Collapse
souksyp profile image
Souk Syp. • Edited on

Perseverance.
Patience.
Know when to ask for help.
Tolerance to criticism.
Smile.

Collapse
guitarino profile image
Kirill Shestakov

Openness - they hear you out and consider your idea seriously, rather than dismissing it

Collapse
jwp profile image
John Peters • Edited on

Persistent forever and being ultra nice to people.

Collapse
sandydamy profile image
Sandesh Damkondwar

This point β€˜Listen to others and try to see things from other perspectives’ reminds me of my friend’s article. Must read for those who wants to understand how to deal with conflicts in work.
link.medium.com/fadnMNFfEpb

Collapse
yactouat profile image
yactouat
  • liking obscure error output in terminal to feel the joy of solving it and going past it
  • being able to take a step back and see the big picture in implementation detail
  • being capable of learning a lot of unknown stuff at a reasonable rate
Collapse
natescode profile image
Nathan Hedglin

Not dealing with the BS that comes from non-technical incompetent business people. They'll push you around. One needs to know how to keep a paper trail and diplomatically stand one's ground.

Collapse
dumboprogrammer profile image
Tawhid

I'd say people see the first six qualities in me except the last one.

Collapse
yourmdsarfaraj profile image
MD Sarfaraj

Here is one article that I written on soft skill.
dev.to/this-is-learning/how-to-man...

Collapse
intesar profile image
Intesar Shannan Mohammed

Interesting...

Collapse
hacker4world profile image
hacker4world

Creative problem solving as well

Collapse
mobuousdev profile image
Mobulous Technology

I think problem solving skills matter most

Collapse
darkterminal profile image
Imam Ali Mustofa

Neptunus Power

Collapse
mobuousdev profile image
Mobulous Technology

Doesn't fear....

Collapse
glenn_miller_860ba12ffbf7 profile image
Glenn A Miller

As in all professions, it's the work product.

Collapse
bmassioui profile image
Bouchaib MASSIOUI

This is the main difference between Software developer and Software Engineer.