What are the traits of a distinguished engineer?
Tags: discuss, productivity, career
Published: 2020-12-12 17:02:29

**This article was originally published here: https://thewholesome.dev/p/traits-of-a-distinguished-software**

____

Software engineering, also identified as the art of finding elegant solutions to complex problems. Software engineers are code crafters who create art with their minds. This conjures the question—What makes someone good at their craft?

Honestly, there are no right or wrong answers here. What is a good software engineer? — it’s subjective and up for anyone to interpret. But, there are some qualities we collectively appreciate in an engineer.

Here are my personal views on what makes someone an excellent engineer and a great person to work with.

I welcome any additional qualities you love to see in engineers in the comments.

_____

## You’re fun to work with

Imagine the following scenario: You published a new pull request yesterday. The pull request was a new feature.

The next morning— you feel good and feel ready to crush the day. 

You open up the GitHub repository and hope for a smooth merge. But that doesn’t happen.

Your teammate is nit-picking on your variable naming, semi-colon insertions, and other trivialities—while completely ignoring the feature you implemented without any issues or bugs.

Don’t be the guy to pester your teammates with trivialities. Use a linter or prettier to agree on code standards.

The before-mentioned tools let teams agree on a standard while maintaining coding flavor.

Being a fun person to work with is absolutely crucial to being a great software engineer. 

Many engineers think that their code speaks for themselves. While we all appreciate great code—don’t be a jerk! Especially if you’re more experienced. 

A great engineer should be fun to work with, non-lethargic, and ready to take on challenges. 

No matter how technically brilliant you are—you’ll always be limited by your ability to communicate. Make your life easier by being fun around and to work with.

“A rational person can find peace by cultivating indifference to things outside of their control.” — Naval Ravikant

_______

## Ability to Teach and Learn

Having the ability to lift your teammates is invaluable.

You might be extremely proficient in X, while your teammate might be experienced in Y. 

The ability to exchange knowledge and thoughts is often underlooked during interviews. Great teams put their minds together. Greater problems require great teams.

If you want to become a great engineer, you should be able to averse your ego and status in the hierarchy.

Wise senior engineers will often tell you they learn new things from junior engineers all the time. Junior engineers are eager to prove themselves.

Junior engineers follow the latest unproven tools and programming trends.

A wise engineer considers and accepts any information from any source. Leave your dogmas at the door.

Amazing developers who lack team skills stagnate in roles. Be ready to be the master, and the student the other day.

_________

## Not Giving Up When Things Get Hard — Be Willing to Put the Hours In

It’s a matter of time until you’ll face a challenge that shocks and overwhelms you. 

You ask yourself the following: “I have to do what?! That’s impossible!” 

Stay calm, don’t panic.

I can affirm this is all part of the ride of software engineering.

Feeling overwhelmed is a vigorous thing— it’s how we evolve. 

To grow, we have to face new and harder challenges — it’s the best method. 

When the time comes, don’t be afraid to take the giant leap forward.

As with any skill, you have to put in the hours. If it’s worth doing, it’s worth doing great. Don’t just do things for the sake of it, do it because you want to show everyone how great your work is. 

If you’re asked to do X— do it with meticulous care plus do more than asked. Over-deliver and under-promise.  

A reliable method for getting good at coding is putting in the hours. Build stuff, build anything, just build it. If you lack creativity—I have coding challenges, search for them on my profile.

_________

## Taking Ownership and Beyond

If artisans take ownership and treat their code as if it belongs to them personally — they will take special care and consideration.

Small teams inside a big company can quickly lose the ownership feeling. That’s why Google wants small and independent teams for their products. They're being smart.

Here’s a simple protip: Treat the codebase as if the next person to deal with it will be a serial killer who knows where you live.

Jokes aside— ownership is a powerful concept. If you're given a task, treat that task as it serves you directly.

You want to work in a well-known company, that changes the world for the better and leaves a dent in the universe. By taking ownership and responsibility for your actions— you’re putting yourself on the radar for those types of teams.

-------

 🏁 Enjoy This?

Forward it to a friend, and let them know they can subscribe for free future releases <a href="https://thewholesome.dev/welcome">here.</a>