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
Latest comments (42)
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.
Neptunus Power
Humility and empathy.
Not looking down on other engineers who don't grasp things as quickly as you.
Very true. Everyone learns differently. Empathy is important.
As in all professions, it's the work product.
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)
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:
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.
I 100% agree! π
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!
Simplicity
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.
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.
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.
I like that strategy. We're getting paid to deliver value and your strategy priorities just that!
Creative problem solving as well
Thanks for sharing. Could not agree more.
Here is one article that I written on soft skill.
dev.to/this-is-learning/how-to-man...
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.
Interesting...