The 5 Essential Characteristics That Make a Great Software Engineer - Mullin Stack
Better code – Better human
Better code – Better human

The 5 Essential Characteristics That Make a Great Software Engineer

After a few years working as a web developer, I asked myself. What are the essentials characteristic that makes a great and real software engineer — yes, a software engineer, not a web developer.

Back then, I had read a lot about immersive software engineering bootcamps.

I came across the top-ranked CodeSmith Bootcamp and its founder Will Sentence, who is also a coach, a featured teacher at Frontendmaster.com

A dream came out. I wanted to meet and interview Will. I wanted to get his advice on what characteristics make a great software engineer — yes a software engineer.

If you want to know a little bit more about Will, you can go onto here.

By the time, I barely spoke English but I didn’t care at all. There was clear what I wanted. I was obsessed to know how a real software engineer is made over a Bootcamp and the main qualities any aspiring software engineer needs.

I traveled to Los Angeles two times. I visited the CodeSmith Bootcamp and I attended a few free workshops — I got fascinated even when I barely could communicate with others attendees.

But my goal was to sit down in front of Will Sentence and interview him. I had an ahead-question list and I had been preparing ahead too.

Yet I wasn’t able to interview him on-site. After exchange a few emails we agreed to do a video call, instead.

Difference Between a Coder, a Software Developer, and a Software Engineer

Before jumping to the essence of this post, I would like to start defining three common and important role names you might have come across with.

I just want to give you a personal perspective on what each of them means. All of this is for the sake of the headline of this post since is about what is the essential characteristics that make a great software engineer instead of a great coder or software developer.

Coder

A coder is a person who has learned the basics of a specific programming language. This person can solve easy coding tasks.

In simple words, a coder someone who is at the stage of digging the fundamentals of Computer Science.

Software Developer

On the other hand, a software developer is a person who has master part of the Computer Science fundamentals but still struggles with more complex concepts.

This person can build real-world apps without pay too much attention to patterns, architecture, or complex concepts. This person is mainly focused on developing code.

Software Engineer

A software engineer is a person who really cares about engineering principles. He can manage and apply the right app architecture, design principles, and patterns.

With all that in mind, let’s jump to the five characteristics that make a great software engineer according to the sensei Will Sentence.

1. Being Resilient

Accomplishment is a static thing , resilience is an ongoing thing— Will Sentence

According to Will Sentence, this is one of the most important characteristics of becoming a great software engineer and a better human being.

An aspiring software engineer has to develop the skill of being resilient. But what does it really mean?

A resilient dev is someone who can embrace, adapt, and bounce back quickly when things don’t go as he expected.

This kind of dev is capable of acknowledges the situation, internalizes it, analyzes what went wrong, learns from it, and moves forward. it’s painful but, he gets out of it.

Having said that, being resilient is like a muscle. It works the same as when you start to go to the gym to gain muscle. The first week is painful, your body is literally broken. You barely can move your arms or legs.

Yet, as long as you keep going, learning, and applying better tips and practices, you start to see how resilient and strong you become.

Anybody can crush this soft skill with the right tools and mindset. If you really enjoy and you are obsessed with programming you won’t give up and every time code challenges hit on your face you will try again no matter if you can solve it or not.

It has been proved that most successful people just keep trying over and over and over until they hit it. They were resilient and persistent.

Just because you are not able to solve a code challenge doesn’t mean you aren’t good at programming. Certainly, there are different reasons and factors why you failed and which you have to review in a deep and honest way.

It is probably you haven’t practiced enough or you have learned the wrong way to do it, just to name a few of them.

2- Problem-solving

Let’s start off by defining the concept in plain English.

In the development field, problem-solving is the ability to understand the problem, break it down into smaller chunks — I will call them micro problems, and then translate them into pieces of code that generate the solution for that problem.

Wait. Before deep dive more into this important characteristic, I would really like to be honest and briefly talk about my own struggle on this matter.

I am not sure if you are like me who since had awareness of the importance of problem-solving skills in the programming field I became obsessed with becoming a better and real problem-solver.

Yet I have faced with a wall of becoming one of them. In the beginning, I believed I wasn’t good at it. By then I certainly can identify myself with a coder.

As long I continued reading, searching, and going deeper into how to be good at problem-solving I realized that our fears and belief are the killers and what is holding us back. Nothing else!.

You can learn anything as long as you are willing to do whatever it’s going to take.

3- Technical communication

According to Will, technical communication is the most interesting and probably undervalued characteristic.

As you will have noticed, there are deeper resources out there to learn to code and problem-solving and but not enough of them about technical communication.

Will realized this gap in engineering and founded CodeSmith to solved it.

Having said that, to be a great software engineer you must have this ability.

We have talked about technical communication without knowing what the hell this means. Hence let’s start by defining what technical communication is.

Technical communication is the ability to convert your understanding of a concept into something that is meaningful to somebody else. Put simply, making meaning out of complexity.

Lets’s outline a real case. You are looking at a line of code. I would say a for loop. This is something you use to count through, right?. You will also be going to look at each one by one. This understanding and explanation is technical communication.

Great software engineers are able to do a plain English explanation of what the code they are doing does. They don’t need to use dense vocabulary. As we said before make meaning out of complexity.

4- Non-technical communication

The way we communicate is important in any field we are in. Yet in the development software field, it is crucial.

Some people use to call technical communication a cultural fit. In other words, a genuine desire other people want to work with you.

So. Are you a great communicator generally?

Great software engineers have the ability to speak with clarity and confidence. They are concise.

Even when they dont know enough about something they are able to convey calm and security to the listener.

On the other hand, great software engineers are patient and good listeners. They never interrupt you while the other person is talking.

They know the exact time to ask questions. They want to get clarity. They are deeply focused on clarity.

Finally, great software engineers are empathetic persons. They have a genuine way to understand you. They recognize that everyone has their belief, systems, personal characteristics, etc.

5- Knowledge of the programming language

The last one but not the least.

The knowledge of the programming language means master its syntax, main concepts, facts, and its singular characteristics.

Yet the knowledge of the programming language itself doesn’t make a great software engineer. But it’s crucial. It’s part of the recipe to become a great software engineer for sure.

In that regard, you need to grasp and master all main concepts of the programming language.

The speed of getting the knowledge of the programming language is intimately related to the four prior characteristics, according to Will.

Ending Thoughts

Becoming a great software engineer is intimately connected to crucial characteristics such as resilience, problem-solving, technical communication, non-technical communication, and the knowledge of the programming language.

One important thing I would like to highlight is the fact that if you want to become a great software engineer, you have to develop and improve at each of the prior characteristic at your own pace.

Everyone has different circumstances, problems, beliefs, stages, and systems.

On top of that, we all learn differently. A few of you can pick up complex concepts faster than the rest. Others might require more time. Both are just fine.

The more you acknowledge that, the faster and effective you will crash those five crucial characteristics that make a great software engineer.

I hope this post turned to be helpful for you. Thanks for read!. Share your thoughts in the comment section.

Leave a comment

Your email address will not be published.